Forum: Compiler & IDEs Watchdog löst abwechselnd Interrupt und Reset aus?


von riz (Gast)


Angehängte Dateien:

Lesenswert?

Hallo

hab folgendes Problem mit dem watchdog:
Ich möchte den Modus "Interrupt and System Reset Mode" nutzen. Der 
Sprung nach time-out in die Interrupt Routine klappt auch ganz gut, aber 
nach allem was ich sehe gibt es danach KEINEN Reset, der kommt erst beim 
nächsten time-out. (Dafür keine Interrupt-Routine)

Mega168P, avr-gcc

Das Programm:
LED an PB7 blinkt. Wenn PB6 auf GND gezogen wird hängt das Programm in 
der while Schleife und der WD bekommt keinen reset mehr --> timeout.
Über UART lasse ich mir dann die Register-Werte ausgeben und sehe daran 
dann eben auch, ob ein Reset oder nur die Interrupt-Routine ausgelöst 
wurde.

Anbei ein screenshot des UART nach Start und 4maligem WD-timeout und das 
Programm.

Was mache ich falsch, dass es nicht immer einen RESET gibt?

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


Lesenswert?

riz schrieb:
> aber
> nach allem was ich sehe gibt es danach KEINEN Reset, der kommt erst beim
> nächsten time-out.

Ja, so soll es auch sein.

Wie auch sonst, wie willst du denn einen Interrupt und einen Reset
gleichzeitig haben?  Oder OK, wenn sie schon gleichzeitig sind
(Hardware kann sowas ;-), wofür sollte dann der Interrupt noch gut
sein, wenn jetzt sowieso ein Reset ausgeführt wird?

von Karl H. (kbuchegg)


Lesenswert?

Aus dem Datenblatt
1
If WDE is set, the watchdog timer is in interrupt and system reset mode.
2
The first time-out in the watchdog timer will set WDIF. Executing the
3
corresponding interrupt vector will clear WDIE and WDIF automatically by
4
hardware (the watchdog goes to system reset mode). This is useful for
5
keeping the watchdog timer security while using the interrupt. To stay
6
in interrupt and system reset mode, WDIE must be set after each interrupt.
7
This should however not be done within the interrupt service routine itself,
8
as this might compromise the safety-function of the watchdog system
9
reset mode. If the interrupt is not executed before the next time-out,
10
a system reset will be applied.

Ich würde mal sagen: das was du siehst, ist per Design so.

von riz (Gast)


Lesenswert?

ja, klar, ihr habt recht. Macht keinen Sinn. Das kommt davon wenn man 
vor lauter verstehen-wollen wie ein Feature funktioniert, nicht mehr an 
die Sinnhaftigkeit denkt.
Danke und sorry für den sinnlosen post.

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.