Mikrokontrolery - Jak zacząć?

... czyli zbiór praktycznej wiedzy dot. mikrokontrolerów.

piątek, 1 kwietnia 2011

Reset niekontrolowany


Autor: Dondu

Często zdarzają się problemy związane z nieoczekiwanym resetowaniem się mikrokontrolera. Wykrycie przyczyny tego zjawiska może być niezmiernie trudne dla początkującego.

Czy tylko dla początkującego?
Nie, o czym przekonali się na przełomie lat 2011/2012  inżynierowe NASA, którzy przez dwa miesiące szukali przyczyny resetu sondy Mars Science Laboratory Curiosity rover (na zdjęciu), który wydarzył się 29 listopada 2011r (trzy dni po starcie z Ziemi).

Dopiero 9 lutego 2012r. zakończono pracę nad znalezieniem i rozwiązaniem problemu:

Project Manager Richard Cook
Good detective work on understanding why the reset occurred has yielded a way to prevent it from occurring again

tłumaczenie:

Project Manager Richard Cook
Dobra praca detektywistyczna nad zrozumieniem, dlaczego reset wystąpił, pozwoliła nam wypracować drogę do zapopiegania ponownemu jego występowaniu.

i nie pracował nad tym problemem tylko jeden inżynier, lecz cały zespół. :-)

Szczegóły: NASA: Spacecraft Computer Issue Resolved


EDIT:
13 listopada 2013r. Przydarzył się  drugi reset: Curiosity: Reset niekontrolowany nr 2.





Najczęstsze przyczyny niekontrolowanych resetów.
.

1. Zasilanie i zakłócenia

Bardzo częsty przypadek, a jednocześnie temat rzeka opisany w kilku osobnych artykułach:






2. Watchdog

Reset następuje, gdy po włączeniu wewnętrznego układu Watchdog zapominasz zerować jego licznik lub robisz to rzadziej niż ustawiony czas watchdoga.









3. Brown Out Detection (BOD)

Reset następuje w momencie wykrycia przez włączony wewnętrzny układ BOD napięcia zasilania poniżej wybranego przez Ciebie progu.









4. Brak pętli nieskończonej

Reset następuje po dojściu do końca programu. Dlatego w większości przypadków powinieneś w programie umieścić nieskończoną pętlę for(), while(), do() lub inną.










5. Brak wektorów przerwań

Włączenie któregoś z przerwań bez zadeklarowania funkcji jego obsługi kończy się bliżej nieokreślonym rezultatem.

Krauser
Po co odblokowujesz przerwanie skoro nie masz procedury do jego obsługi? To powoduje reset.

jarecki1989
I właśnie walę się w głowę ... Spróbuję zwalić ten błąd na późną godzinę, w której pisałem.

Czasami się patrzy, a nie widzi :-)


6. Zbyt duży zegar przy danym zasilaniu

Znaczna część mikrokontrolerów może pracować na różnych napięciach zasilania. Niestety część z nich ma ograniczenia częstotliwości zegara, którym mogą być taktowane przy danym napięciu. W szczególności dotyczy to sytuacji, gdy chcesz użyć duży zegar przy niskim napięciu zasilania.

Przykład:

Rys. Przykład ograniczenia - zegar vs Vcc


Rys. Przykład ograniczenia - zegar vs Vcc





7. Za duży pobór prądu

Mikrokontrolery pobierają prąd impulsowo w zależności od wielu czynników wewnętrznych i programowych. Często może dojść do sytuacji, w której mikrokontroler pobiera znacznie więcej prądu, niż dostarcza mu zasilające go źródło, co skutkuje natychmiastowym spadkiem napięcia zasilania, a w konsekwencji nieprawidłowego działania lub resetu mikrokontrolera.

W szczególności może to się zdarzyć, przy zasilaniu bateryjnym lub ze stabilizatorów LDO o małym prądzie wyjściowym.




8. Skok do adresu 0 (zero)

To raczej świadome działanie, ale czasami użycie do skoku adresu obliczanego w niedopracowany sposób, może powodować rozpoczęcie programu od niekontrolowanego miejsca lub od początku.

Należy pamiętać, że skok do adresu 0, to nie jest w pełnym tego słowa znaczeniu reset, ponieważ wewnętrzne układy nie są sprzętowo resetowane.




Curiosity
. Wysyłanie mikrokontrolerów na Marsa

Tak troszkę humorystycznie a propos wstępu do niniejszego artykułu, ale szczerze mówiąc podziwiam i zazdroszczę ludziom pracujących przy takich projektach jak sondy Marsjańskie. Czapki z głów!
Oceń artykuł.
Wasze opinie są dla nas ważne, gdyż pozwalają dopracować poszczególne artykuły.
Pozdrawiamy, Autorzy
Ten artykuł oceniam na:

Brak komentarzy:

Prześlij komentarz

Działy
Działy dodatkowe
Inne
O blogu




Dzisiaj
--> za darmo!!! <--
1. USBasp
2. microBOARD M8


Napisz artykuł
--> i wygraj nagrodę. <--


Co nowego na blogu?
Śledź naszego Facebook-a



Co nowego na blogu?
Śledź nas na Google+

/* 20140911 Wyłączona prawa kolumna */
  • 00

    dni

  • 00

    godzin

  • :
  • 00

    minut

  • :
  • 00

    sekund

Nie czekaj do ostatniego dnia!
Jakość opisu projektu także jest istotna (pkt 9.2 regulaminu).

Sponsorzy:

Zapamiętaj ten artykuł w moim prywatnym spisie treści.