Problem z niespodziewanym resetowaniem mikrokontrolera AVR

Problem z niespodziewanym resetowaniem mikrokontrolera AVR

Być może znasz ten problem: podczas komunikacji między komputerem a mikrokontrolerem AVR w nowym obwodzie mikrokontroler resetuje się nagle bez żadnego szczególnego powodu.
Zdarzyło mi się to podczas testowania mojego projektu dla paska LED WiFi.
Po wypróbowaniu kilku konfiguracji i wykonaniu szeregu testów stwierdziłem, że stało się tak, gdy próbowałem sprawić, by mikrokontroler odebrał duży pakiet danych przez port UART.

Czasami wydawało się, że działa, ale przez większość czasu mikrokontroler resetował się i czasami wyłączał się natychmiast po rozpoczęciu transmisji.
Od czasu do czasu resetował się sam i jedynym rozwiązaniem było wyłączenie zasilania.
Po konsultacji z dr. Internetem, dowiedziałem się, że jest to bardzo częsty problem z mikrokontrolerami AVR.
Na szczęście dostępne jest proste rozwiązanie:
Połączenie UART musi być wyposażone w rezystor szeregowy 10kΩ i kondensator bocznikowy (bypass) 100pF, zasadniczo tworząc filtr dolnoprzepustowy przy częstotliwości około 159kHz.

Moje problemy dotyczyły odbioru danych, więc w linii RX wstawiłem rezystor szeregowy i dodałem kondensator od RX do masy.
Kilka linijek kodu testowego zapętlającego dane otrzymane z RX do mojego komputera potwierdziło prawidłowe działanie mojego obwodu.
Wszystkie dane otrzymano poprawnie, bez awarii mikrokontrolera.
Aby upewnić się, że to nie mój świeżo napisany fragment kodu testowego rozwiązał problem, usunąłem filtr RC.

Ponowne uruchomienie kodu testowego spowodowało natychmiastową awarię mikrokontrolera.
Po ponownym włożeniu filtra RC wszystko znów działało bez zarzutu.
Myślę, że można śmiało powiedzieć, że ten prosty filtr RC rozwiązał mój problem.
Być może rozwiąże również Twoje!

Autorzy: Koen Beckers

Komentarze z Facebooka

Komentarze obecnie - OFF.