und wo ist jetzt dein Problem?
Der Watchdog wird einmal gestartet und dann regelmäßig zurückgesetzt.
Das Starten ist einfach:
WDTCR=0b00001xxx //xxx je nach gewünschter Auslösezeit
Das Rücksetzen macht man am besten mit inline-Assembler:
asm ("wdr")
Diese Anweisung muß so platziert werden, daß das Programm bei
ordnungsgemäßen Verlauf regelmäßig innerhalb der watchdog-Zeit dort
vorbeikommt. Keinesfalls darf wdr in einer timer-ISR auftauchen, die
Interupts funktionieren oft noch, auch wenn der Rest total abgeschmiert
ist.
Ich persönlich benutze eigentlich fast immer einen externen watchdog,
neben einem ordentlichen reset kann man die watchdog-Triggerung an 2
verschiedenen Programmteilen vornehmen.