a spróbuj przy odpiętym debuggerze, chyba że jest odpięty?
Niemożliwe żeby nie działało, masz przecież bibliotekę, która wszystko ułatwia i rozwiązuje wszystkie problemy. RCC_ APB1 PeriphClockCmd(RCC_ APB2 Periph_SPI1, ENABLE); 4\/3!!
Tez złożyłem wg Freddiego, ale programy już są w nowszych wersjach (Eclipse) i mimo ustawień wszystkiego wg opisu (niektórych opcji nie ma, inne doszły), nie widzi toolchaina (jest prawidłowo zainstalowany i sprawdzony). Przejrzyj po prostu temat na forum elektrody o tym toolchainie zwracając uwagę głównie na moje posty - są tam opisane zmiany czy...
Wszystko masz ładnie wytłumaczone na stronie 707 (Master Mode). Może zegar za mały na I2C: The peripheral input clock frequency must be at least: 2 MHz in Standard mode 4 MHz in Fast mode Może nie nadajesz Start itp. Trudno powiedzieć pokaż więcej, a najlepiej skonfiguruj sam na rejestrach (jeśli tak nie masz) na podstawie tego rozdziału. EDIT....
Witam, Niestety natrafiłeś na ogólnie znany problem :-) I2C w stm32f103 jest po prostu ... nie działa najlepiej. Jeżeli dobrze pamiętam przy próbie odczytu nie ustawia mu flagi IV5 i można tak czekać i czekać. Jeżeli masz nowe biblioteki to spróbuj zmienić prędkość transmisji na 50kB. Jeżeli to nie pomoże to zostaje ci bitbanging :)
Tę tablicę alokujesz na stosie, a jego rozmiar jest zapewne nie za duży. Albo alokuj statycznie, albo powiększ stos w ustawieniach projektu.
Ja nie wiem co tu kogo dziwi. Tablicę do której formatujesz dane masz na stosie w przerwaniu. Tablicę tą przekazujesz do nieblokującej funkcji, która rozpoczyna transfer przez UART. Następnie wychodzisz z przerwania, tablica przestaje istnieć, a UART sobie dalej z niej odczytuje dane... Dodano po 30 Nie wiemy nic o typie uC. Jeśli nie jest to Cortex-M4,...
Z kodu wynika pewna ciekawa rzecz... Otóż z tego co widzę stos znajduje się... w środku sekcji .bss - nie wiem czy to normalne, ale nie sądzę... 4\/3!!
Oczywiście, że tak. Mam stanowisko skonfigurowane według Lucjana Bryndzy
Do linkowania (do którego używasz -gcc a nie -ld) też trzeba podawać opcje cpu i -mthumb. Ewentualnie zastosuj SPRAWDZONE toolchainy - np codesourcery. 4\/3!!
https://www.elektroda.pl/rtvforum/topic2...
Chcę móc dynamicznie alokować pamięć, której rozmiar jest z góry znany, a nie ograniczony stosem. Oczywiście coś jest nie tak, bo nigdy nie dostaję NULL, a przy większej liczbie alokowanych liczb procek się zawiesza (A mój debuger ma dziś fochy i nie odpala ;-( ) W skrypcie linkera za sekcją bss mam: [syntax=c] _heap_size = 256; SECTIONS { ... . = ALIGN(4);...
A z jakiego to powodu używasz starej wersji oprogramowania ze znanymi usterkami zamiast aktualnej, wolnej od tych usterek? ściągnij STM32CubeIDE, a prawdopodobnie większość problemów z debugowaniem zniknie, tak to przynajmniej wynika z moich doświadczeń. Aha, no i zawsze możesz kliknąć w Pauzę lub Stop, które nie są na szaro. Może w konfiguracji debugowania...
żywam STM32F103ZE (512KByte FLASH, 64KByte RAM) a nie stm32f100 - mój błąd przepraszam, źle napisałem co do funkcji w której wisi: [syntax=c]/* * ----------------------------------------... * The Idle task. * ----------------------------------------... * * The portTASK_FUNCTION() macro is used to allow port/compiler specific...
no wlasnie nie mam JTAGa i z kazda chwila coraz bardziej tego zaluje :P
Po utworzeniu semafora wywołanie SemaphoreTake zawsze zwraca pdTRUE, nawet jeżeli nie została wywołana funkcja SemaphoreGive. W związku z tym zaraz po utworzeniu należało by go "wziąć"(oczywiście trzeba to wykonać przed włączeniem taska/przerwania które coś sygnalizuje tym semaforem). Problem ten pojawiał się jakiś czas temu na portach STM32 oraz SAM7S...
Tak mam, całe mnóstwo, jak wyłączę i wywalę printfy to jest ok, niemniej nie mogę poświęcić całego procka dla odczytu i2c :) Pozdrawiam Krzysiek
syscalls....
Witam Ja swój problem rozwiązałem usuwając dzielenie adresu przy odczycie przez 512. W sterowniku do dysku miałem mnożenie to zrobione przez co nie zgadzały się adresy. Przy odczycie 1 sektora było wszystko ok, a jak więcej to się wszystko rozjeżdżało. Nie robię zapisu, ale zerkając w kod wydaje mi się, że może być ten sam problem. Sprawdź czy masz...
Wyświetlam sobie wyniki pomiaru w terminalu przez usart i są one poprawne także nie wiem, wydaje mi się, że mi się nie wydaje. A reszta konfiguracji jest poprawna? Konstrukcja jakiej użyłeś w celu realizacji opóźnienia nie ma prawa działać przy zadnych sensownych opcjach kompilacji. Rzuć okiem na kod wynikowy - idę o zakład, że jeśli nie masz tam -O0,...
Zapomniałem. STM32F411
Pod 64bitowymi windowsami bardzo dobrze sprawuje się chiński j-link, do kupienia za stówkę na allegro. Mam taki, i chodzi dokładnie tak samo jak oryginalny j-link (ktorego tez mam). Tak samo stabilnie będą chodzić wszystkie debuggery Ulink (1,2,pro)
Witam, Próbuje uruchomić przykład oparty na bibliotekach ST (obsługa karty SD przez SDIO), niestety przykład nie do końca działa. Wszystko jest ok do momentu wejścia do funkcji: SD_Error FindSCR(uint16_t rca, uint32_t *pscr) w której program zawiesza się na następującym elemencie: [syntax=c] while (!(SDIO->STA & (SDIO_FLAG_RXOVERR | SDIO_FLAG_DCRCFAIL...
Dziękuję wszystkim za pomoc a w szczególności Samurajowi - Twój kod działa. Teraz w końcu mam działający przykład na którym mogę ćwiczyć i uczyć się dalej programowania na STM32. Pozdrawiam
Problem został rozwiązany. Leżał on w wywołaniu funkcji putch(), która wysyłała dane na USART'a. Zamiast niej z rozpędu pisałem putchar(), która jest procedurą systemową. Jednakże dlaczego program się wykrzaczał już na samym początku? Powinien dojść do wywołania tej funkcji.
Jeśli tam jest while(1) to się zawiesi dlaczego ma się zawieszać?
a plik startowy masz dla dobrej lini STM?
Witam, mam problem z komunikacją z czujnikiem ciśnienia HP02S. Szukałem swojego problemu na forum, ale nie znalazłem. Udało mi się bez problemu odczytać dane z EEPROMu. Udało mi się też skomunikować z czujnikiem, ale do czasu. Sekwencja odczytu ciśnienia wygląda następująco (pseudokod): [syntax=c] i2c_start(); i2c_write(0xEE); i2c_write(0xFF); i2c_write(0xF0);...
Nie jestem pewien, ale coś mi chodzi po głowie, że ten przykład od ST usypiał procka przy braku transmisji - to by tłumaczyło czemu wszystko "umiera". Zgadza się - przykład "Joystick mouse demo" wpędza procesor w uśpienie. Przykłady, które testowałem, czyli: Custom HID demo Virtual COM port demo VirtualComport_Loopback nie mają nigdzie śladu usypiania....
Dalej męcze to I2C. Powiem tak, ogólnie to coś działa, ale np. jak wykonam coś większego w pętli głównej programu while(1) to zawiesza. Czy ma ktoś gotową bibliotekę I2C stm32?
Pokaż jak masz skonfigurowaną sesję debuggowania - zakładki Main, Debugger i Startup. 4\/3!!
Korzystam z SW4STM32 (System Workbench for STM32). Próbowałem najpierw skopiować "na głupiego" kod z drugiego linku, niestety zawieszał się w EE_Init();. Popróbuję jeszcze jutro na spokojnie i to przetrawię :) bo takie kopiowanie nigdy się nie sprawdza. Dzięki za wszystkie pomysły, dam jutro znać.
Problem występuje wyłącznie kiedy Keilem debuguje kod wypluty z STM32CubeMX i nie występuje od razu, występuje w trakcie debugowania, Keil przeleci kilka instrukcji i po kilku dopiero zwraca błąd jak w temacie, poczym STLink się zawiesza, musze odpiąć zasilanie całkowicie i podpiąć ponownie. Pytanie zasadnicze czy ktoś ma doświadczenie z CubeMX i widział...
Ale dlaczego w trybie debug się nie zawiesza? Może za krótko czekasz po włączeniu zasilania i próbujesz komunikować się/inicjalizować zewnętrzne urządzenie zanim zdąży zakończyć sekwencję POR. Mogę tylko gdybać bo nie wiem co masz do tego uC podłączone, ale widać że jakieś magistrale szeregowe masz wyprowadzone.
Prawidłowe kasowanie flagi w przerwaniu: TIM3->SR = ~TIM_SR_UIF; Prawidłowe używanie rejestrów BSRR: GPIOC->BSRR = GPIO_BSRR_BR13; Piszesz że "NVIC_EnableIRQ(TIM3_IRQn);" zawiesza układ. Używasz debuggera czy wnioskujesz to po tym, że nie zapala się żadna dioda? Jeśli używasz debuggera, to raczej powinieneś widzieć na czym dokładnie się zawiesza. Jeśli...
Kurcze, rowniez o tym myslalem szczegolnie ze inaczej sie zachowuje gdy ustawiam zbocze np rosnace -reakcja po puszczeniu guzika. Probowalem dolozyc maly kondesator ale nic sie nie zmienilo w zasadzie, poza tym bardzo mi podpada to iz jesli wstawilem w f. obslugi przerwania taka mala 'pulapke' czyli while(1); lub for(;;); to program tez sie w tym miejscu...
1. Ac6 STM32 MCU GCC czyli w sumie arm-none-eabi w wersji 5.2.1 2. Procesor ląduje w UsageFault_Handler() w linijce this->a = (duty_max - duty_min)/(kat_max-kat_min);
W przypadku F103 jest jeszcze problem z zawieszaniem interfejsu. Jest o tym nasmarowane w erracie i internetach.
znaczy nie da sie programować? szczerze to 1 raz spotykam się z STM8 i STM32 i muszę określić czy będzie to odpowiedni produkt dla nas
To że generowane jest przerwanie i kod się zawiesza nie jest winą OpenOCD tylko kodu... sub.w sp, sp, #24576 ; 0x6000 sub sp, #32 w tym miejscu funkcja alokuje sobie na stosie 24576 + 32 bajtów - nie sądzę aby twój stos to przeżył... 4\/3!!
By jednak się definitywnie upewnić czy niedziałanie programu wynika z zatrzaśnięcia stanu wysokiego z pinu BOOT0 podczas resetu, moim zdaniem warto by było, do egzemplarza płytki, który nie działa, spróbować "zagadać" z programu "STM32 Flash loader demonstrator" poprzez USART1, Jeśli Boot0 jest w stanie wysokim to ważne jest w jakim stanie jest Boot1,...
Powoduje wyrzucenie na serial port samych spacji. coś jeszcze może tu być źle źle? Kiedyś mówiło się, że problem jest typu "PEBKAC", ale teraz chyba nie wolno... Wiesz w ogóle jak działa funkcja printf() czy po prostu wklejasz na ślepo jakieś fragmenty znalezione z netu? Czego spodziewasz się podając do funkcji printf() adres zmiennej w której jest...
Nie jestem inżynierem elektronikiem tylko samoukiem amatorem więc zrobiłem jak potrafiłem, obojętnie czy to będzie XMEGA o czy STM32 to sam tego na pewno tego projektu nie skończę mając talent do zawieszania procesora ...... i projektowania tak okropnych PCB :-) ....na dodatek po ostatniej aktualizacji wysypał się Windows 11 co oznacza ze wszystko co...
Dzięki nsvinc . Napisałem krótki kod tylko do odczytu ID pamięci NAND na wskaźnikach, wszystko się skompilowało bez problemu tylko nie mogę wgrać kodu do uC. Otóż uruchamiam OpenOCD wszystko łączy elegancko ale gdy próbuję odpalić debugger to eclipse się wiesza a za chwilę pokazuję się okienko że zamknięto aplikację openocd.exe. Dzieję się tak tylko...
mam problem z funkcja printf(); Po wywołaniu tej funkcji procesor się zawiesza http://www.openstm32.org/forumthread1346...
Może to jest przyczyną zawieszania się? The DCMI_VSYNC alternate function on PG9 is only available on silicon revision 3. Kamera wystawia sygnał VSYNC, ale DCMI w uC nie potrafi go wyczuć i stąd brak dalszej reakcji. TFT przypiąłbym tak normalnie przez FMC, dzięki temu znacznie łatwiej będzie przesyłać dane.
Nie pracuję w jakimś noisy environmencie :) timeouty próbowałem różne z resetem i dalej mam w kółko slave mode z zajętą linią :| Chyba, że pullup jest za mocny, ale coś nie wydaje mi się. A sprawdzałeś napięcie na linii? Start condition Setting the START bit causes the interface to generate a Start condition and to switch to Master mode (M/SL bit set)...
Nie wiem, nie znam się, ale przebieg wygląda jakoś dziwnie, jakby się w nakładały dwa. Podstawa czasu jest odpowiednia? I2C w STM32 jest, jak dla mnie, strasznie kapryśny. Ja sam miałem spore problemy z jego uruchomieniem na F103. Pomogło dopiero przestawienie kolejności inicjacji pinów i modułu w kodzie HAL i jakieś czary włączaniem/wyłączaniem. A...
Dawno już nie było mojego ulubionego problemu zaczynającego się na literę fał. Czy robię jakiś podstawowy błąd? Tak - napisałeś taki program że to po prostu masakra... 4\/3!!
screenshot? Uwierz nie ma sensu. Próbuję w ten sposób wysłać dane: #define PCF8574_ADDR 0x40 void PCF8574_RegWrite(uint8_t reg, uint8_t data) { while(I2C_GetFlagStatus(I2C1, I2C_FLAG_BUSY)); I2C_GenerateSTART(I2C1, ENABLE); I2C_TransferHandling(I2C1, PCF8574_ADDR, 1, I2C_Reload_Mode, I2C_Generate_Start_Write); //while(I2C_GetFlagStatus(I2C1, I2C_ISR_TXIS)...
Musisz w swojej aplikacji dodać gdzieś swoją własną funkcje HAL_Delay(), która po prostu będzie wywoływała task-delay z FreeRTOSa.
Moje pytanie dla upewnienia się. Rozumiem, że ustawiając priorytety przerwań od peryferiów należy stosować wartości z przedziału 5-15, mniejsze wartości zarezerwowane są dla systemu? Z grubsza tak. Dla przerwań możesz używać dowolnych priorytetów, ale te powyżej skonfigurowanej granicy NIE mogą używać funkcji FreeRTOSa (czyli semaforów, kolejek, ...)...
Witam. A jak nie włączysz przerwań i sprawdzasz flagę [syntax=c]if (CAN1->RF0R & CAN_RF0R_FMP0) { // tu jak coś jest z CAN1 }[/syntax] To odbierasz coś.. Pozdrawiam
Wyczytałem że wszystkie piny w STM32F0... są +5 tollerant więc pomyślałem, spoko, nie będę nic zmieniał. Proponuję czytać datasheet a nie "gdzieś". 4\/3!!
Ta funkcja musi działać. Albo podajesz błędne adresy albo hardwarowo jest coś nie tak. Przypadkiem nie ustawiaj podglądu rejestrów I2C do poglądu w debugu.
co rowniez niewiele zmienia : moja tajemnicza_funkcja(p) zawiesza sie przy wartosci parametru 3456 ale tylko o pełnej godzinie w dni parzyste. Dlaczego?
Zgodnie z nazwą ten problem da się rozwiązać jedynie poprzez dynamiczną alokację pamięci (; Niemniej jednak nie musi to być koniecznie malloc() czy new, wystarczy np. jeden wielki bufor, z którego w swoim programie "odcinasz" potrzebne Ci kawałki - to po prostu byłaby Twoja sterta. Niemniej jednak zbyt wiele nie zyskasz tak czy siak... Może prościej...
zrobiłem za Ciebie prace domowa http://obrazki.elektroda.pl/5253621500_1... Swoją drogą - używasz innego układu do projektowania i nawet nie sprawdzisz pinout-ów. Lekko szkujace. Ja robie to taka metodą jak na załaczniku.
Trzeba cyklicznie mierzyć napięcie za pomocą ADC i porównywać wartości. Niektóre mikrokontrolery potrafią to realizować automatycznie („ADC analog watchdog” w STM32). Jeśli to mają być dwa progi dla tego samego sygnału, to można też zmieniać napięcie progowe, np. poprzez przełączanie dzielnika. Poniżej przykład dla 1/3 i 2/3 Vcc. http://obrazki.elektroda.pl/9762146100_1...
Zainteresowałeś mnie tym opisem. Sprawdzamy dokumentację, a tam jest zapis: After reset the VOS register is set to scale 2. When the PLL is OFF, the voltage regulator is set to scale 3 independently of the VOS register content. The VOS register content is only taken into account once the PLL is activated and the HSI or HSE is selected as clock source....
siedziałem nad tym kilka dni.. przyczyną okazała się nowa biblioteka, w której dodano funkcję "FSMC_AsynchronousWait".. niby standardowo jest disabled, ale po włączeniu program się zawieszał na zapisywaniu do pamięci :) podczas konfiguracji w strukturze należy dodać FSMC_NORSRAMInitStructure.FSMC_Asynchron... = FSMC_AsynchronousWait_Disable;
udało się zmienić nazwę, ale jak to zwykle bywa kolejny problem się urodził ... mianowicie, gdy tworzę plik z długą nazwą po raz pierwszy to zapis do pliku jest przeprowadzany bezproblemowo, natomiast, gdy chcę przeprowadzić tę operację po raz drugi (na karcie istnieje plik o długiej nazwie) to zawiesza mi cały system i nic nie daje znaku życia :(
Korzystam z funkcji i bibliotek STM32: [syntax=c]void PB_LED_Init (void) { /* Enable GPIOx Clock */ RCC_APB1PeriphClockCmd(RCC_APB1Periph_PW... ENABLE); /* Disable JTRST on PB.04 */ AFIO->MAPR = 0x01000000;// why does it not work??? GPIO_PinRemapConfig(GPIO_Remap_SWJ_NoJTR... ENABLE); /* Initialise LEDs [0-5] in on state */ LEDInit(LED0);LEDInit(LED1);...
Odkopię temat, bo ostatnio próbowałem sobie kupić zapasowy ST-LINK v2 (klon oczywiście), kupiłem dwa i w obu siedział APM32F103CBT6 tylko w jednym sygnowany przez APEXMIC, a w drugim przez GEEHY. O ile z ST-LINK Utility te programatory działały, to z STM32 Cube Programmer - nie chciały. Niby je widział, ale w polu SERIAL NUMBER była pojedyncza litera,...
Nie nie, ja używam do wybudzania tylko alarmu rtc i to właśnie rtc zawiesza mi program. Uruchomienie pinu wakeup, z tego co udało mi się wyczytać, jest niezbędne aby wybudzenie w ogóle było mozliwe, jednak fizyczny pin (PA0) jest nieużywany.
Dużo kodu, ale patrząc po opisie objawów program wykonuje przerwanie od odbioru. W nim masz dwa wywołania funkcji i jedną inkrementację zmiennej. To ostatnie chyba możesz wykluczyć. Tak więc pozostaje niepoprawne wywołanie lub wykonanie CAN_GetITStatus(CAN1,CAN_IT_FMP0) lub CAN_Receive(CAN1,0,&RxMessage) Czy w STM32F103 nie trzeba wyczyścić jakichś...
Ale wciąż czekam na opinie! kogoś kto zrobil coś duzego na tych bibliotekach! Ale co według Ciebie znaczy "duże"? Ja robiłem może nie coś ogromnego w sensie objętości we Flashu, ale ze skomplikowanymi zależnościami czasowymi na STM32F103VD/VE. Używałem przerwań i robiłem rekonfigurację różnych bloków układu w tych przerwaniach. I to działało z użyciem...
Witam Urządzenie jest zasilanie z USB, ale to jest tylko procesor + jedna kości ramu, 500mA nie ma. Wziąłem nawet oryginalny program z STM, MassStorage, ale to samo. Tzn wszystko działa ale ciekawy jestem czy tak powinno być, że tyle razy mam sygnał reset z USB. Z tego co piszesz to chyba nie. Spróbuję zasilać z zewnętrznego zasilacza Co dziwne mam...
Ustawienie pozycji tez nie ma sensu akurat tu powtarzać bo liniję wyżej było LCD_INIT. Jakby to miało jakieś znaczenie to wieszało by się nie prze pierwszej próbie czyszczenia LCD tylko przy którejś z kolei a tak zawieszanie następuje bezpośrednio podczas pierwszego podejścia do czyszczenia LCD więc dane sa akurat w tym przypadku wpisywane pod (0,0).
Witam Po jednodniowej radości związanej z prawidłową pracą klona amonteca od Freddiego nadszedł kryzys... Aktualnie IAR nie jest w stanie wgrać nawet programu do flasha. W oknie konsoli IAR-a głownie jest Verify error at address.. W gdb: http://obrazki.elektroda.net/3_126701690... Wyrocznia podpowiada: "...I suspect some interrupt routine or...
No właśnie ja mam ten sam problem. Nijak nie da sie uruchomić wyświetlacza. Działą tylko juz skompilowany program od mrh (Dzieki!) ale nie mogę wprowadzić żadnej zmiany w program bo się nie kompiluje i błąd "make: [clean] Error 127 (ignored)F0_lcd3310 C/C++ Problem" Wymiękam. Dalej nie mogę skompilować tego programu tak żeby działał. Przesiadłem się...
Sygnał REF_CLK powinien być generowany przez cały czas, gdy chcesz mieć aktywny interfejs Ethernet. Najpierw konfigurujesz układ MAC (zegary, typ interfejsu MII/RMII), następnie aktywujesz taktowanie PHY za pomocą REF_CLK. Gdy zamienisz kolejność (najpierw taktowanie PHY, później ustawiasz w STM interfejs MII/RMII) to program zawiesi się w pętli: [syntax=c]...
Pierwsze, na szybko to bym spróbował jednak z maksymalną wielkością danych. 255 w tym wypadku. Bo być może fizyczny transfer odbywa się po zapełnieniu bufora lub timeoucie. Niestety, ale dalej to samo - gubi dane i się zawiesza... Dałem nawet bufor 256 bajtów (w dokumentacji jest napisane, że jako pierwsza jest wysyłana komenda) - nic nie pomogło...
Witam, Czy wie ktoś, jak zwiększyć pojemność stosu? Jestem w trakcie pisania kodu źródłowego wykorzystującego dość dużo obszernych operacji matemtycznych, m.in. na macierzach (lib CMSIS). Problem przejawia się w taki sposób, że podczas debuggowania program ląduje w handler fault, procek się zawiesza...podejrzewam, że brakuje mu pamieci w stosie... Może...
zdania doprowadzają do jedynej IMO słusznej konkluzji w tym wypadku: Arduino. Arduino to ślepa uliczka. W mojej ocenie, Arduino traktuje uC jak Z-8 (CPU + GPIO) czy 8051 gdzie ze sprzętu to głównie proste timery i UART. ZERO wykorzystania sprzętu! Bo co wspierają biblioteki Arduino? UART z malutkim buforem w RAM, I2C to samo. SPI bez bufora, bez przerwań....
Dzięki wielkie za odpowidzi. O jakie rejestry sprawdzić i jakie wartości w nich powinny być? Przemapoania nie robię ale ten kawałek kodu pozostał z innych prób. Ale przy SPI nic nie robiłem. SPI jest cały czas PA4, PA5, PA6, PA7. podczas debudowania kontroler nie zawiesza się w momencie while((SPI1->SR & (1<<1))==0); ale nic nie wysyła...
W tych prockach (stm32f4) nie trzeba go włączać (tzn. procek robi to automatycznie)
Pokaż jeszcze konfiguracje SPI i pinów.
Witam, próbuję zrobić projekt, w którym używam przerwań zewnętrznych, na razie staram się chociaż jedno uruchomić, ale po wejściu w przerwanie mikrokontroler się zawiesza. Jedno zadanie włącza LCD, drugie miga sobie diodkami, a gdy naciskam przycisk to diodki się zatrzymują i nic już do resetu się nie dzieje. Jestem początkujący w tym temacie więc za...
Wygląda na to, że problem rozwiązany. Błąd był w pliku sd_spi_stm32.c a dokładnie w funkcji power_on(). Programowe opóźnienie losowo zawieszało uC: [syntax=c]for (Timer1 = 25; Timer1; );/* Wait for 250ms */[/syntax] Zamieniłem to na delay_ms(250) i program już się nie zawiesza. Jednak karta 2GB nadal nie działa ale trudno, może ten egzemplarz jest jakiś...
Mam dodatkowe informacje... W przypadku kiedy bootloader próbuje wgrać aplikację to bez problemu się udaje (kasowanie i zapis we Falsh). W przypadku kiedy dokonany jest skok do aplikacji z bootloadera, a następnie z powrotem skok do bootloadera (reset -SCB->AIRCR = (SCB->AIRCR & 0xFFFF) | (0x5FA << 16) | (1 << 0)) to próba kasowania...
Zwóć uwagę na flage RXNE której w Twoim kodzie nie ma. Próby z RXNE zamiast TXE też były - działanie bez zmian. A co piszą na temat timingów w pdf'ie do tego wyświetlacza? Dokladnie tak samo zachowuje się przy zegarze 72MHz, jak i przy 8MHz. Czy to SDO/SDI w kodzie powyżej to jest zdefiniowane od strony wyświetlacza czy procesora (lub błąd w komentarzu)...
miszcz310 napisał: Jedyne co zmieniłem to w Makefile'u toolchain na arm-linux-gnueabi (linaro). Jest to bardzo poważny błąd, bo to NIE JEST toolchain bare-metal! To MUSI być arm-none-eabi- i na stronie linaro jest też paczka dla linuxa https://launchpad.net/gcc-arm-embedded/4... No mówiłem dziecinny błąd... Nie wiem skąd mi się wzięło...
Ja miałem przypadek uszkadzających się procesorów w sterowniku sterującym zasilaczem 3kW. Padały procesory przy włączeniu zasilacza i pomogła izolacja na USB - ta tania z AliExpress. Jednak dalej sporadycznie zawieszał się komputer. Sprawdź u siebie napięcia AC i DC pomiędzy programatorem a układem programowanym, bo może są upływności gdzieś na zasilaniu...
Równie dobrze możesz na stałe obniżyć priorytet przerwania I2C. Niestety nie mogę, I2C musi mieć najwyższy priorytet. Jeśli nawet przerwę transmisję w debuggerze to mi się zawiesza i nie mogę nawet zresetować czujnika (bo komenda idzie oczywiście przez I2C), jedynie wyłączenie i włączenie działa w tym przypadku. A odnośnie tych bardzo długich czasów...
Zauważyłem że gdy ustawiam w CubeMX "SD 4 bits Wide bus" to funkcja inicjująca w pliku "sdio.c" wygląda w taki sposób: [syntax=c]void MX_SDIO_SD_Init(void) { hsd.Instance = SDIO; hsd.Init.ClockEdge = SDIO_CLOCK_EDGE_FALLING; hsd.Init.ClockBypass = SDIO_CLOCK_BYPASS_DISABLE; hsd.Init.ClockPowerSave = SDIO_CLOCK_POWER_SAVE_DISABLE; hsd.Init.BusWide =...
Mam teraz podobny problem. Można wiedzieć co było problemem? Nie wiem na ile TWI w Xmega różni się od tego w Mega, ale w Mega był słynny problem statusu 0xF8. Na ten status można było trafić gdy: - slave blokował SDA - rezystory podciągające były niepodłączone - zwarcie magistrali Jeśli slave blokował magistralę, to należało: - odłączyć TWI - wygenerować...
Pokaż prawdziwy fragment kodu z deklaracjami wszystkiego, czego używasz.
Dzięki. Dodam, że problem się rozwiązał (task się nie zawiesza) po dodaniu na koniec pętli vButtonTask: [syntax=c]vTaskDelay(500)[/syntax] Niestety nie rozumiem dlaczego to zaczęło działać. Miałem intencję, by to opóźnienie zablokowało ButtonTask na pół sekundy, tak aby przez pół sekundy nie reagował na przycisk (problem pojawiał się przy zbyt częstym...
Witam :) od miesiąca próbuję uruchomić komunikację po RS-ie komputera z mikrokontrolerem. Do USB podłączam konwerter FT232 następnie przez max232 do mikrokontrolera. Dodam że płytka z prockiem to discovery stm32. Konwerter i max działają - próbowałem już echa. Po podłączeniu mikrokontrolera i próbie wysłania wiadomości nic się nie dzieje. Odbiór info...
(at)ElektrodaBot Myślę że koszty można zaniżyć jeśli: - zakupimy używana kosiarkę (nadająca się do przeróbki) do kwoty 500zł - zakupimy tańszy moduł GPS RTK + Stacja bazowa do wykonania w własnym zakresie (może taki: LC29H -- ponoć kosztuje 60USD - -czyli około 250zl) - zamiast drogich platform RPI wykorzystamy coś dla STM32 , ESP32 ?? Mała sugestia...
Ja używam [url=https://www.st.com/content/st_com/e... Monitor. Na początku trochę trudny, ale jak już załapiesz o co chodzi, to jest łatwiejszy niż [url=https://gallery.microchip.com/packa...
Przydługi opis dość banalnego problemu :) Napisane jak wół w RM. Po zmianie poziomu ochrony trzeba zrobić POR.
Skoro nie zawiesza Ci się na pierwszej pętli związanej z I2C, to zapewne nie pomoże Ci nic software-owy reset który opisywałem w podlinkowanym temacie. Ponieważ nie używam bzdurnych bibliotek od ST więcej nie jestem w stanie pomóc. 4\/3!!
Przekrokowałem maina i zawiesza mi się w linijce: while (bDeviceState != CONFIGURED); Sprzedziłem w pliku "usb_prop.c" funkcje void MASS_init(), void MASS_Reset() i Mass_Storage_SetConfiguration program wisi. Jeśli macie koledzy jakieś pomysły to prosze o pomoc.
Witam, Próbuję zrealizować nadawanie i odbiór po magistrali I2C - STM32F01RET6 z okładem BNO055. Program zawiesza się na pętlach sprawdzających stan zajętości magistrali lub wygenerowanie START. Jak nie zawiesi się na pętlach to odczytuje jakieś dane ale tylko dla odczytów po 1 bajcie. W przypadku odczytu ilości bajtów > 1 to odczytuje tylko jeden...
1. Dalej masz przerwanie co 1 us. 2. Sprawdź w debuggerze w którym momencie się zawiesza i jaka jest wtedy wartość rejestrów statusowych I2C. 3. Bit ACK możesz ustawić dużo wcześniej, proponuję nawet przed wysłaniem adresu. 4. Pokaż zrzut z analizatora w aktualnym kodzie.
Chyba wiem co robiłem nie tak. W momencie gdy zawiesił się pierwszy raz wgrywałem program w którym były źle ustawione przerwania i uc się zawieszał, przy podłączaniu kolejnych uc wgrywałem ten sam program. Coś mi się wydaje że program razem z uc zawieszał programator, bo po przełączeniu zworek, wduszeniu reset, podłączeniu i wyczyszczeniu uc, wszytko...
Program który napisałeś również nie działa, ale tylko w Eclipsie więc to pewnie źle skonfigurowane środowisko. Uruchomiłem Keila i działają obydwa. Mam pytanie jeszcze dotyczące tego pliku startowego który dodaje się w Keilu przy stwarzaniu projektu a mianowicie ten plik: startup_stm32l1xx_mdp.s On się odwołuje do funkcji SystemInit() z pliku system_stm32l1xx.c...
Pomogło dodanie małego opóźnienia przed odebraniem ostatniego bajtu. Linia SDA już nie zawiesza się w stanie niskim, ale uwidocznił się problem ze szpilkami pojawiającymi się na liniach SDA i SCLK. Szpilki powodują przekłamania danych. Są one niezależne od prędkości, ale pojawiają się na linii SDA w momencie przejścia linii SCLK ze stanu wysokiego na...
stm32 usart zawiesza zawiesza delonghi zawiesza lenovo
total commanderze podłączenie komputer honda accord mikrotik firewall filter
uszkodzony powerbank sterownik movera
Moment dokręcania koła zamachowego Renault Trafic 2.0 dCi Polsat Box Soundbox 4K: Obsługa teletekstu i alternatywy