Forum: Mikrocontroller und Digitale Elektronik Watchdog Reset


von Frank H. (avrnooby)


Lesenswert?

Hallo,

mein Programm hat einen Debug-Modus über die serielle Schnittstelle zum 
PC. Damit kann man verschiedene Sachen an dem Gerät manuell steuern. 
Unter anderem soll darüber auch ein Hardware-Reset des Atmel ATmega168 
ausgeführt werden können. Das wollte ich dann so machen:
1
wdt_enable(WDTO_15MS);
2
while(1);

Wenn über die serielle Schnittstelle der entsprechende Befehl kommt wird 
dahin gesprungen und eigentlich sollte der Controller doch dann nach 
15ms in einen Reset gehen (den Watchdog setzte ich nirgends zurück oder 
disable ihn, die Header-Datei ist eingebunden, die Interrupts sind 
freigegeben) ?

Leider hängt sich der Controller aber irgendwie auf und lässt sich nicht 
mehr  ansprechen.

Woran kann das liegen ?

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Frank Heluk wrote:

> Woran kann das liegen ?

Am Watchdog. ;-)

Im Ernst: du solltest dazu schreiben, um welchen AVR es sich handelt.
Die neueren AVRs haben einen Watchdog, der etwas mehr Streichelein-
heiten benötigt, um nach dem ersten Biss nicht mehr so bissig zu sein.
Insbesondere lässt er sich nicht abschalten, bevor man das WDRF in
MCUSR/MCUCSR wieder gelöscht hat.  Details stehen im Datenblatt deines
Controllers sowie in der Doku zu <avr/wdt.h>:

http://www.nongnu.org/avr-libc/user-manual/group__avr__watchdog.html

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.