Standard C nic nie mówi o kolejności zmiennynch w pamięci. Przyzwoity kompilator i linker będzie rozmieszczał dane w kolejności malejącego rozmiaru, a nieupywane będzei eliminował całkowicie. Chcesz mień znany rozkład danych - użyj struktury - kompilator nie ma prawa jej zoptymalizować, ale będzei stosował wyrównanie naturalne, czyli np. int32_t będzie...
Stos "w każdym momencie" musi być wyrównany do 8 bajtów. Czemu do 8 a nie do 4?
Szukałem, jednak nie potrafię znaleźć co to dokładnie jest te wyrównanie do 4 bajtów. Szukaj pod hasłem attribute aligned. Program wskakuje mi często do Default Handler. Rozmiar stosu już ustawiłem na dużą wartość, nic to nie pomogło. Może to być tego wina? Zdarzają się przypadki, że przyczyną wyjątków jest "niewyrównany" dostęp, ale w tym przypadku...
Witam Mam procesor stm32 zasilany przez 3v. Sterując na wyjściem otrzymuję 3V (logiczna 1) i 0 (logiczne 0). Chciałbym przekonwertować napięcie z 3v na np 1,6V a dla 0 na 0,9V. Kombinowałem ze wzmacniaczem operacyjnym (symulacje w LT Spice) ale potrafię sobie tylko wygenerować napięcie dla jednego ze stanów. Jak rozwiązać ten problem? Nie chcę stosować...
Witam, Jestem w trakcie pisania programu, gdzie jednym z wymogów jest przesyłanie liczb z przecinkiem po USARTcie. Napisałem bardzo prosty program, który "chodzi" bez zarzutów na kompilatorach C typu DEV-C. Sama konwersja wygląda tak: [syntax=c] float a,x,b,y; int c,d,e,u,p; char tab_1[4]; char tab_2[4]; x = 7.5; a = x/2; b = a*10000; c = (int)b; d...
Witam Zmagam się z problemem obliczania CRC na STM32F4. Problem polega na tym że mam ramkę danych 100 bajtową złożoną z 96 bajtów danych a na 4 ostatnich obliczona suma CRC za pomocą wbudowanego modułu. Dane wysyłane są poprzez DMA+USART. Również do obsługi CRC używane jest DMA. Chodzi o to że dane są wysyłane poprawnie i poprawne odbierane. Problem...
Dzień dobry, W projekcie wykorzystuję silnik krokowy z zabudowanym na wale silnika enkoderem inkrementalnym różnicowym o rozdzielczości 16 384 imp/obr. Wykorzystuję płytkę NUCLEO-64, STM32L476RG. Ustawienia Timerów: https://obrazki.elektroda.pl/7295044200_... https://obrazki.elektroda.pl/6348434400_... Do timera3 mam...
Potrzebuję uruchomić tryb różnicowy w ADC1 tegoż potworka. Ale albo mi coś umyka, albo czegoś nie wiem, Bo wyniki oscylują w okolicy 2040, a powinny w okolicy zera. Inicjalizacja: http://obrazki.elektroda.pl/1373946000_1... C23 jest aktualnie zdjęty, więc PA0(ADC+) i PA1(ADC-) powinny być równe/wynik w ADC1->DR powinien wynosić jakoś...
Cześć piszę sterownik silnika krokowego i przez USART'a definiuję nieokreśloną ilość impulsów. Zatem jestem zmuszony nadpisywać dane w tablicy DMA . Unikając opisywanie nie dotyczących elementów obliczyłem sobie okresy dla każdego impulsu powiedzmy załadowałem je do tablicy src. Używam Bursta, mianowicie przesyłam Period, Repetition Counter = 0 . oraz...
Witam, Próbuję skonfigurować dwa przerwania output comare no output na dwóch kanałach timera 1. Korzystam z płytki nucleo stm32f103rb. Procesor taktuję zegarem 8MHz. Korzystam z CubeMx i biblioteki HAL. Preskaler i ARR ustawiam dla całego timera, a dodatkowo Pulse dla poszczególnych kanałów, tak aby uzyskać jedno przerwanie z częstotliwością 1Hz, a...
Cześć. Dość dawno się tu nie udzielałem, jakoś mi było nie po drodze. Trochę zmieniłem zainteresowania, trochę było dużo pracy i nieco odszedłem od elektroniki i niskopoziomowego programowania. Czas powoli wracać, ale dziś przychodzę z problemem :) Mam pewne urządzenie, zaprojektowane dobrych kilka lat temu. Urządzenie działa na STM32F407VGT6 , ale...
Mam taki problem z mnożenie dwóch liczb 32-bitowych, cały czas otrzymuję nieprawidłowy wynik. np. [syntax=c]uint32_t a = 15470591; uint32_t b = 512; uint64_t c; c = a * b; // otrzymuję: c = 3625975296 // powinno być: c = 7920942592[/syntax] Da się jakoś ten problem rozwiązać ?
Witam, Wiem, pytanie bardzo podstawowe ( dopiero raczkuję ) ale naprawdę coś nie mogę odnaleźć odpowiedzi w jaki sposób odczytać zawartość bajtów (bezpośrednio z pamięci) zmiennej strukturalnej? wszystkie moje pomysły nie podobają się kompilatorowi.
witam mam problem z płytką [url=http://propix.com.pl/pl/p/Modul-STM... a mianowice, potrzebuję równolegle wykonywać operację pomiaru temperatury i generowania fali prostokątnej dla wentylatora, wszystko fajnie jak jest osobno bo działa, ale jak chce to połączyć przy pomocy uC-os to nie działa albo chodzi jedno zadanie albo drugie....
Witam Chciałbym ustawić starszy bajt portu GPIOE. Wymyśliłem: Note: If both BSx and BRx are set, BSx has priority ale w stmf4xx.h nie mam BSRR jest tylko BSRRH i BSRRL napisałem tak: [syntax=c] GPIOE->BSRRH = 0xff00; GPIOE->BSRRL = data<<8; [/syntax] ale to strasznie pokraczne w końcu napisałem: [syntax=c] GPIOE->ODR = (GPIOE->ODR...
Mam skonfigurowany I2C wraz z DMA do odbierania danych z sensorów. Inicjalizacja odbioru następuję z częstotliwością 100Hz i jest załączana przez timer, następnie standardowo w przerwaniach od I2C i DMA dane są odbierane. Konfiguracja jest prawidłowa, ponieważ gdy testuje odbiór danych podczas nieskończonej pustej pętli while w głównej funkcji main():...
Mam problem z inicjalizacją Unii deklaracja: https://obrazki.elektroda.pl/4660954600_... Ja to zrobić prawidłowo. Jeżeli zainicjuje Conf_Frame conf_Frame = {.Frame_Array = '!','S',0b00001000,... To pola bitowe mam prawidłowo. Czy inicjalizując muszę odwracać kolejność bitów?
Witam szanownych forumowiczów. Napotkałem na pewien problem który szczerze powiedziawszy nie wiem jak ugryźć. Potrzebuję zapisywać do pamięci liczby zmiennoprzecinkowe o zmniejszonej precyzji (half_float-16 bit). Liczba koniecznie musi mieścić się na 16bitach. Czy ktoś spotkał się może z funkcjami realizującymi np. konwersję float->half-float? Nie...
Wiele użytkowników narzeka na biblioteki ST, więc postanowiłem zrezygnować z ich. Udało mi się ustawić RCC na 72MHz, ale teraz mam problem z GPIO. Po prostu nie chce mi ustawić "jedynki" w BSRR. Nie wiem co mam źle czy sama konfiguracja czy co innego. Mój kod: [syntax=c]int main( void ) { RCC_Init(); delay_init( 72 ); RCC->APB2ENR |= RCC_APB2ENR_IOPAEN;...
Hej. Mam problem. Na początek powiem, że używam FreeRTOS (choć wydaje mi się, że to bez związku). Mam taki kod: [syntax=c]przecinek=(float)licz/100; zmienna=(int)(round(przecinek)); if(zmienna >= 4 ) { fifo[i]=(int)round(przecinek); i+=1; }[/syntax] Działanie: zapisuję do "przecinek" liczbę zmiennoprzecinkową. "zmienna" powstała tylko w celu podejrzenia...
Pamięć BKP_SRAM w kontrolerach STM32F4xx zaczyna się od adresu fizycznego 0x40024000. Jak przypisać zmiennym które muszą się w tym obszarze mieścić adresy fizyczne? np. takie cos nie działa: [syntax=c] #define BKP_SRAM_BASE 0x40024000 uint32_t zmienna; void main(void) { &zmienna = BKP_SRAM_BASE; --- -- - [/syntax]
A dla czego? Pamiętam, że jak kiedyś przygotowywałem strukturę która miała różnej wielkości zmienne (1, 2 i 4 bajtowe), to przy wysyłce struktury nie były ułożone dokładnie jedne za 2 gimi tylko miały wyrównanie do 32 bitów. Ale to może kwestia kompilatora. Robiłem to w uvision. Jestem tak blisko uruchomienia, a nie mogę sobie poradzić... Usunąłem więc...
Ok, nie zauważyłem tego v7-M. Racja. Ale dalej nie rozumiem, co dobrego robi __interrupt. Ew nie rozumiem, z jakiego powodu Twój kompilator bez __interrupt zapamiętuje rejestry, których nie musi zapamiętywać (bo przy wyjątku zrobi to procesor, a w innym przypadku - procedura wołająca). Aha, już wiem, co robi dodatkowy kod u mnie - to, o czym piszą w...
Z kolei modyfikacja skryptu linkera ma tą wadę, że jeśli przeniosę kod na inny MCU to znowu bedę musiał ten skrypt modyfikować. Emulacja oparta na czystm C po prostu zadziała. No... bo każdy mikrokontroler ma dokładnie ten sam rozmiar strony i dokładnie ten sam kontroler pamięci, więc z pewnością zadziała Ci ten kod bez żadnych zmian... Ehe... Kupę,...
1. Co to jest dokładnie to wyrównanie stosu do 8 bajtów i do 4 bajtów, standard API zaleca 8 jak to wygląda w pamięci Chodzi o to, że w momencie "wejścia do dowolnej funkcji" wartość rejestru wskaźnika stosu (SP) ma być podzielna bez reszty przez 8. Do "wejścia do dowolnej funkcji" wlicza się również wejście do przerwania, a ponieważ kod tego w sposób...
Nie zwykłem używać tych funkcji bibliotecznych jako że zaciemniają widok na zawartość rejestrów. Jak widzisz, identyfikator który wpisałeś jest wyrównany do prawej, podczas gdy według [url=http://www.st.com/stonline/products... powinien być wyrównany do lewej. Dokładne informacje znajdziesz w RM0008; bxCAN; 23.7.4 Identifier...
Po kilkunastogodzinnych zmaganiach z wyrzucaniem programu do Default Handler Dzieje się to dlatego, że: 1. modyfikujesz stos, choć nie informujesz o tym kompilatora w sekcji "clobber" Twoich dyrektyw, 2. zostawiasz stos niewyrównany do 8 (na niektórych rdzeniach to nie jest problem, w sumie z STM32 domyślnie to jest problem chyba tylko na F1). Efekt...
Nawet dla takiego małego Miki jak ja już na pierwszy rzut oka jest jasne że te kody to potężne źródło problemów. Co widać bez wgłębienia się w szczegóły: * Funkcja main() jako rozbiegówka to słaby pomysł. Kolega stmx napisał coś na ten temat (nawet podaje link w promowanych tematach), warto to przeczytać. * Stos musi mieć odpowiednie wyrównanie, zwykle...
(at)szelus Wiekszość startupów ma ten sam adres obłsugi tych wyjątków. Dlatego nazwą się nie sugeruj o ile nie zostały napisane ich handlery Nie wiem jak za bardzo działa "Instrution Stepping Mode", Nie. Normalnie wykonuje to na uC Macie pomysł co może być winą albo jak dojść do problemu? 1. Jeżeli masz zainstalowany Atolloc albo CubeIDE to znajdź...
Przecież pisałem na początku, aby odpowiednim atrybutem wyrównywać bajtowe tablice do 32bitów. Nie wszystko da się zawsze wyrównać, dostęp od początku danych nie ma problemu, ale jak dostęp jest do danych gdzieś np ze środka tablicy to już tego nie wyrównasz. Można napisać własną funkcje kopiującą która sprawdza wyrównanie i w razie czego niewyrównane...
jak to zrobić aby te dane znajdowały się w drugiej połowie 128kB flash i zaczynały się dokładnie od początku drugiego 64kB?. A po co Ci takie coś? Adres wgranych danych możesz sobie pobrać ze wspomnianych symboli, nie musi to być więc jakaś stała wartość. No chyba że chodzi Ci o to, żeby dane nie zostały nigdy skasowane podczas wgrywania nowej wersji....
Zmieniając łańcuch wywołań zmieniasz zużycie stosu. Coś mi świta, że kiedyś ktoś pisał coś o FreeRTOSie który jednak NIE wyrównywał sobie stosów do 8... Heap chyba też musi być do 8 wyrównany, bo przecież chyba właśnie na nim są stosy dla tasków... No generalnie pogoogluj, to powinieneś znaleźć - na 99% problemem jest wyrównanie, więc to jest hasło...
Możesz zrobić to np. tak: [syntax=c] typedef __packed struct { uint8_t byte_1 :8; uint8_t byte_2 :8; uint8_t byte_3 :8; uint8_t byte_4 :8; }ftobytes_t; float dana; ftobytes_t *zapis; zapis=(ftobytes_t*)(&dana); eeproma=zapis->byte_1; eepromb=zapis->byte_2; eepromc=zapis->byte_3; eepromd=zapis->byte_4; [/syntax] Ja opierałem się na kompilatorze RelView...
Problem to jest taki, że keil nie spełnia standardów języka C dotyczących kilku całkiem istotnych spraw. Jeśli kod o którym mówisz jest tym samym o którym myślę (nie chce mi się ściągać 14MB, bo pewnie wrzuciłeś tam pliki bin, elf i nie wiadomo jakie jeszcze zupełnie nie potrzebne do niczego) to w kodzie Keila jest mnóstwo operacji typu: Według mnie...
A najlepiej połączyć strukturę z sekcją. Wtedy już jest zupełnie łatwe. Nie ma tu się czego uczyć więc to nie argument :D (obsługuje się jak zwykłe zmienne) Tylko w tej sekcji trzeba by wymusić dostęp jedynie z wyrównaniem do 4. Jak to wymusić nie wiem, ale na pewno się da.
Twój układ się wykrzacza. Przy używaniu funkcji variadic (ze zmienną liczą argumentów) KONIECZNE jest wyrównanie WSZYSTKICH stosów do 8. Poza tym w tej funkcji jest na stosie sporo zmiennych, przede wszystkim ten 100bajtowy bufor. To też może być problemem jeśli pamięć się kończy. 4\/3!!
gaskoin - pytam dlatego, bo gdzieś kiedyś czytałem że w procesorach 32 bitowych dla każdego char itp. kompilator i tak rezerwuje całą komórkę 32 bit, nie używając po prostu reszty. Z tego wynika że adresowane są nie słowa 32 bit, ale pojedyńcze bajty, jeżeli dobrze rozumiem? Adresować możesz poszczególne bajty, a korzystając z bitbandingu - w ograniczonym...
to nie wiem jak jest pod STM-owymi ARM-ami, ale na większości (jeśli nie wszystkichi) nie 8-bitowych platformach, taka struktura wyrówna swoje membersy do granicy słowa platformy/rozmiaru adresowania, więc będzie dziura między nimi. Chyba, że się wyłączy lub wyspecyfikuje konkretny packing/aling. A niby czemu miałaby to zrobić, skoro tablica i pojedynczy...
Wiesz że dane zapisane w ten sposób zajmują 2x lub 3x więcej pamięci flash niż rozmiar struktury? Chodzi o wyrównanie Flasha do 4 bajtów? Próbowałem zapisać rzutując na int a nie char i dać size jako: [syntax=c] int size = sizeof(EEPROM_Data)/sizeof(int); [/syntax] I zapisywać do Flasha po 4 bajty ale nie działało. Dostawałem śmieci. [/quote]
Nie. Architektura ARMv7-M obsługuje niewyrównany dostęp 16 i 32bitowy. Tylko dostęp na słowa większe niz 32bity (LDRD/STRD, LDM/STM) z niewyrównanym do 4 bajtów adresem rzucają fault. Inna sprawa, że w STM32 SFRy ogólnie nie lubią niewyrównanych zapisów lub zapisów o szerokości innej niz sam SFR. Ale to się nie kończy faultem, tylko dziwną wartością...
Pewnie się "o dziwo kompiluje", bo nie masz dołączonego nagłówka stdio.h Tak czy siak: - za mały stos - stos nie wyrównany do 8 - za mało pamięci na stertę to trzy przyczyny które odpowiadają za 99% problemów. Aha - no i doprecyzuj, czy układ się sypie PRZED czy PO sprintf(), bo nie do końca jest to jasne. Kolejna sprawa - istnieje pewna niewielka szansa,...
Problemem w M0 jest brak opcji unaligned access. Jeśli funkcja jako argument dostaje adres i jest to adres dowolny tzn. niekoniecznie wyrównany do 4(2) bajtów to w przypadku M0 próba odczytania danych 32b(16b) z pod takiego adresu skończy się wygenerowaniem wyjątku. M3 i M4 wspierają unaligned access i dlatego funkcje dla obydwu rdzeni mogą mieć jednakowe...
Hard Fault może oznaczać włączenie przerwania do którego nie napisano obsługi. Mylisz się. Standardowa rozbiegówka definiuje "słabe" handlery przerwań zawierające puste nieskonczone pętle. To nie ma nic wspolnego z hardfault'em. Hardfault leci generalnie na 1) dostęp do nieistniejącej pamięci, 2) nierozpoznaną instrukcję rdzenia, 3) nad użycie magistral...
chodzi o ALIGN ? Dokładnie, chodzi o ALIGN, ale nie tylko, bo generalnie ALIGNem wyrównujesz początek, a chodzi o wyrównanie końca... <: Wszystko zależy od konkretnej konstrukcji skryptu linkera i startupa... Zobacz jak to jest zrobione w moich przykładach (stm32). jaką flage trzeba dodać, aby kompilator ignorował przypisywanie do samego siebie?...
Co to są za brednie? Watchdog reset nie powoduje wyjątku HardFault , tylko SYSRESETREQ (sygnal wewnetrzny resetujący procesor). Po raz setny napiszę, kiedy hardfault wystepuje najczęsciej: - zapis nieprawidlowego adresu (instrukcje STR,STRB,STRH,STREX,STM...) - niedozwolone kombinacje przy PSR - wykrzaczenie się stosu lub źle wyrównany stos - użycie...
Do CCM dostęp ma tylko procek. Więc jakby to było możliwe chętnie bym tam zasadził stosy. Dzięki ze info. Tylko pytanie co do sekcji bo tworzenie ich jest dla mnie jak na razie czarną magią. Już znalazłem część sections w linkerze i podejrzewam że tam powinienem zrobić swoją własną sekcje tylko jak. .bss : { . = ALIGN(4); __bss_start...
Macie może pomysł na zautomatyzowanie tworzenia nagłówka ? No generalnie ciężko... myślę że nad skryptem spędziłbyś tyle czasu co robiąc to "pół-automatycznie". Do tego taki skrypt działałby tylko na nagłówkach od danego producenta, bo np NXP w nagłówku dla LPC17xx nie ma definicji bitów w ogóle, więc tylko manual. Mogłbyś Freddie cos wiecej napisać...
Witam Mam mały problem z odczytem ramu IS61LV25616AL, ram jako 16 bitowy 10ns, ustawienia Stm32F2 120Mhz Bank3 is enabled: BCR3_MBKEN bit set to ‘1’ Memory type is SRAM: BCR3_MTYP is set to ‘00’ to select the SRAM memory type Databus width is 16 bits: BCR3_MWID is set to ‘01’ to select the 16-bit width The memory...
Co do stosu to nie jestem pewien. Wziąłem ten skrypt linkera: https://github.com/PaxInstruments/STM32C... Widzę tam tylko: _Min_Stack_Size = 0x400;; /* required amount of stack */ Czy rozmiar stosu jest jeszcze gdzieś indziej? Bo...
Prawdopodobnie adres przekazywany w argumencie src jest nieparzysty. Zadeklaruj bufor danych, które chcesz zapisać w pamięci jako wektor uint16_t albo unię uint16_t i uint8_t, ew wymuś wyrównanie przez _Alignas.
O rozmiar stosu, bo printf to lekko licząc zwykle sobie zajmuje z 750B. No i jeszcze dochodzi wyrównanie stosu do 8, co również może być czasem problemem przy printf(), choć tutaj akurat nie. Proponuję na początek zamiast printf() stosować iprintf(), bo raczej żadnych zmiennoprzecinkowych liczb nie będziesz używał w takim zastosowaniu. 4\/3!!
Chciałbym zmierzyć napięcie na końcówce VBAT w STM32F427. VBAT jest podłączone wewnętrznie do kanału 18 ADC1. Napięcie VBAT jest za pomocą wewnętrznego dzielnika napięcia dzielone przez 4. Na potrzeby testów zamiast baterii podłączyłem potencjometr: skrajne końcówki do zasilania, ślizgacz do VBAT. Ogólnie ADC działa, odczytywana wartość zmienia się...
To da się bardzo prosto zrobić z przerwaniem od zbocza: - przerwanie od zbocza blokuje przerwanie od zbocza i uruchamia timer w trybie one shot, - przerwanie timera włącza przerwanie od zbocza. Jak widać wystarczy dedykowany timer i dwa przerwania i już można obsługiwać przycisk przerwaniem od zbocza. Zamiast dedykowanego timera może być programowy...
Wskaźniki są 32 bitowe, wystarczy spojrzeć do jakiegokolwiek manuala jak adresowana jest pamięć. http://www.st.com/web/en/resource/techni... Żeby dostać się pod dowolny adres wystarczy [syntax=c] uint8_t* wskaznik = (uint8_t*)(0xADRESS_KOMÓRKI); [/syntax] i potem [syntax=c] *wskaznik = zapis; odczyt = *wskaznik;...
mi nie chodziło o rozmiar elementy tablicy,tylko połozenie w pamięci (wyrównanie). Chodziło mi o liczbe transferów do wykonania - czy sie zmieniła po odpaleniu.
Niedawno stoczyliśmy z Freddiem potyczkę, w wyniku której wyszło, że w niektórych Cortexach STM nie jest włączone domyślnie wyrównanie stosu przy wyjątkach, i z tego powodu procedury obsługi przerwań powinny być na nich deklarowane z atrybutem interrupt. Nie wiem, czy dotyczy to również M4F. Co prawda w takim przypadku problem byłby przy wywołaniu innej...
Czyżby? Czy dla AVR ktokolwiek przejmuje się skryptami linkera, startupem, tablicą wektorów i Makefilem? Przecież dla tej platformy jest DOKŁADNIE TAK SAMO jak dla ARM, a jakoś nikomu nawet na myśl nie przyjdzie zajmować się tymi plikami - każdy korzysta z gotowców zawartych w pakiecie avr-gcc. Te pliki tam fizycznie są, nikt nie zajmuje się tym jak...
No to przykładowe projekty w wersji 1.2.0-rc1 zamieściłem na swojej stronie - www.freddiechopin.info w Download > ARM > Przykłady Czekam na komentarze dotyczące nowości czyli: 1. Kompilacja plików w dowolnych folderach 2. Nieco bardziej standardowe nazwy w pliku Makefile 3. Możliwość definiowania rozszerzeń plików z kodem 4. Możliwość wywołania...
Ja bym się tam nie poddawał. Jeśli nie działa Ci printf() z floatami, to - jak pisałem - jest spora szansa, że w projekcie masz poważny problem związany z wyrównaniem stosów. Zignorujesz semihosting to w końcu trafisz na inny objaw tego samego, nierozwiązanego problemu. W każdym razie problem z wyrównaniem stosów objawia się też tak, że czasem takie...
Podsumowując... Loader umieszczony jest we flash od adresu 0 i nie ma od tego odstępstw. Aplikacja umieszczona jest pod dowolnym adresem we flash z wyrównaniem do 512. Żadne biblioteki nie maja kodu na stałe przypisanego pod konkretny adres, nawet SPL, wszystkie startupy i tak zależą od linkera, no chyba, że ktoś sobie coś udziwił i coś na stałe przypisał....
1. Konfiguracja kanału DMA1_Stream1, ale bez włączania go. 2. Konfiguracja multipleksera DMAMUX1_Channel1 i tutaj chyba trochę brakuje. Sprawdziłbym jeszcze ustawienia pozostałych bitów z rejestru. 3. Włączenie DMA1_Stream1 poprzez: DMA1_Stream1->CR = DMA_SxCR_EN; 4. Włączenie żądania transferów DMA z UART poprzez UART4->CR3 = USART_CR3_DMAT; Jak wygląda...
Zakładając, że nigdzie w skrypcie linkera nie masz dyrektyw ALIGN(), to zapewne jest to narzucone przez model pamięci i/lub algorytm programowania w OpenOCD. Możesz ewentualnie spróbować wprowadzić w tej sekcji wyrównanie do bajta (ALIGN(1)), jednak nie wiem czy coś to da, a istnieje pewne szansa, że zaszkodzi... W każdym razie jeśli masz uint32_t i...
Gdzieś to już słyszałem ;) https://www.elektroda.pl/rtvforum/viewto... Strona 32 defrost czyli rozmrażanie. https://planetaklimata.com.ua/instr/Tosh... Zebrali się chłopaki, dyskutowali, ale do konkretów nie doszli, a część nawet nie załapała o jakie ciśnienie chodziło....
Przecież ten wyświetlacz pozwala zapalić i zgasić dowolny pixel. Tylko, że ram X adresujesz co 8 bitów, czyli na raz operujesz 8 pikselami. Jeżeli wyświetlacz ma w X 400 pikseli, to adresy w ram są od 0 do 49. Nie musisz się też ograniczać do znaków o szerokości będącej wielokrotnością 8 bitów. Możesz rozważyć drukowanie znaków proporcjonalnych do...
Wyrównanie stosujesz domyślnie dla każdej sekcji ? Czy tylko .text ? Aktualnie stosuję dla wszystkich które lądują w takiej lub innej formie we flash i zawierają kod. Natrafiłes na podobny problem czy dałeś wyrównanie profilaktycznie ? W commicie jest to opisane - obiekt z odpowiednio dużym wyrównaniem potrafił sprawić, że kod przestawał działać prawidłowo,...
Co do konfiguracji PLL to nie wiem bo u mnie kodek był masterem i nie potrzebowałem konfigurować PLL. Możesz wymusić wyrównanie bufora przez: [syntax=c] __attribute__ ((aligned(4))) [/syntax] Na stm32f1 na pewno jest problem z DMA i SDIO w przypadku niewyrównanych buforów do 4. Ten bug jest o tyle nieprzyjemny, że w przypadku dużych transferów z/do...
Witam! Mam następujący problem. Podłączam gitarę do przetwornika ADC w mikrokontrolerze Nucleo f103rb. Podpinam ją w taki oto sposób: https://obrazki.elektroda.pl/4729012400_... Wzmacniacz zasilam niesymetrycznie więc należało dodać 1,65V do sygnału dla symetryzacji. Ustawiłem odpowiednie wzmocnienie w sprzężeniu zwrotnym i teraz kiedy...
A jaką precyzję mają te rezystory? Mierząc ich wartości dokładnie wyszło mi, że stosunek wyszedł około 64,3 do 1. Jeden z nich miał 1%, drugi chyba 5%, akurat takie miałem. A z innej beczki powstał mi nowy problem, ogólnie kod został dosyć skopiowany z jakiegoś artykułu, więc może być parę błędów w odniesieniu do moich zapotrzebowań. [syntax=c] #include...
wyrównanie głowic wyrównanie terenu wyrównanie napięć
bezpiecznik cinquecento zasilacz iphone nawigacja wince
sklep elektrody sklep elektrody
Manta 4004 – odblokowanie przycisków bez pilota, Key Lock, sekwencje serwisowe Jak zdalnie zresetować router ZTE MF971R?