Forum: Compiler & IDEs Watchdog dauer Reset


von Marcel (Gast)


Lesenswert?

Nachdem ich nun meine Anwendung auf dem AVR fertig entwickelt habe und
alles prima läuft, wollte ich zusätzlich aus Sichertsgründen den
Watchdog aktivieren, aber sieh da wenn er aktiv ist macht er alle 2
Sekunden ein Reset. Was ist da los ? Oder hab ich den falsch
initialisiert? Ist der Watchdog nicht aktiv gibts auch keinen Reset und
die Software läuft aber trotzdem.

Hier mal ein Code Schnipsel:

// Set Wadog prescaler to 2.2sec.
WDTCR |= (1<<WDP2) | (1<<WDP1) | (1<<WDP0);

// Enable Wadog
WDTCR |= (1<<WDE) | (1<<WDTOE);

von Michael (Gast)


Lesenswert?

Hi,

du musst den Watchdog spätestens alle 2,2sec resetieren.
Das ist der Sinn und zweck vom Watchdog. Wird dieser nämlich nicht
resetiert, ist das ein Zeichen für den AVR dass das Programm irgendwo
hängen geblieben ist, und es wird der AVR in den sicheren
Anfangszustand (nach Reset) gebracht

lg,

Michael

von Marcel (Gast)


Lesenswert?

ah ok Danke. Dann war das ein Verständnisproblem von mir.

Also sollte ich bei einem Software startup den Wado aktivieren und in
einem Timerinterrupt deaktivieren und wieder aktivieren ?

von Michael (Gast)


Lesenswert?

Hi,

jein.

In Assembler gibts den Befehl WDR, welcher dir den WD resettiert.

Du musst schauen, dass in deinem Programmablauf der WD sicher vor
Ablauf von den 2,2 sec resettiert wird. Wennst du einen Timer sowieso
im Programm verwendest, kannst du hier den WDR-Befehl sinnvollerweise
einfügen.

Lg,

Michael

von Marcel (Gast)


Lesenswert?

besten Dank. Funktioniert prima.

von Fritz G. (fritzg)


Lesenswert?

Watchdog reset sollte in die Hauptschleife, nicht in einen Interrupt.
Wenn die Hauptschleife hängt, wird der Interrupt trotzdem ausgeführt
und der Watchdog springt nicht an.

Du brauchst den Watchdog nicht selbst bitweise setzen, dazu gibt es:

wdt_enable() und wdt_reset(), siehe avr-libc Doku.

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.