Inicjalizacja ADC w STM32 i baaardzo dziwny problem

Witam

Mam (moim zdaniem) bardzo dziwny problem z inicjalizacją ADC w STM32 (konkretnie STM32F103ZET6). Po restarcie (włączeniu zasilania, resecie przyciskiem bądź po programowaniu) CZASAMI przetwornik NIE DZIAŁA! Po kolejnym resecie lub kilku wszystko chodzi jak należy.. W sumie nie wiem, gdzie tkwi źródło problemu, bo działa to tak:

- TIMER1 uruchamia konwersję

- ADC mierzy

- DMA przesyła dane do pamięci i po 10 pomiarach zgłasza przerwanie

- przerwanie wyrzuca flagę i konfiguruje DMA do dalszej pracy

- program, jak widzi flagę, liczy co ma liczyć i jedzie dalej...

No i czasami flaga ta nie jest ustawiana...

Dziwi mnie fakt, że to raz się zdarza, a raz nie... Czasem raz na 10 resetów działa, czasem raz na 10 resetów nie działa... Podobny problem (ale znacznie rzadziej) mam też z nadawaniem prze UART1 (odbieranie działa, program chodzi i wykonuje komendy, które otrzymuje przez UART1, ale na nie nie odpowiada!!).

Dziwią mnie te problemy o tyle, że w inicjalizacji nie mam właściwie żadnych elementów "losowych" (może poza czekaniem na ustabilizowanie się PLLa, którą robię na samym początku), przez co inicjalizacja za każdym razem powinna wyglądać dokładnie tak samo. Jak dla mnie, to albo jest błąd i nie powinno nigdy działać, albo jest dobrze i powinno działać za każdym razem!!

Podpowiedzcie mi proszę, gdzie, czym i jak szukać przyczyny problemu, bo już wariuję tu normalnie! A może ktoś miał podobne problemy i podpowie, jak to obszedł??

Jestem gotowy wstawić "protezę" w postaci programowego sprawdzenia, czy wszystkie peryferia działają, a jak nie - to reset ;)... no ale to takie nieeleganckie raczej :(....

Reply to
Konop
Loading thread data ...

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.