PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : AVR Watchdog



RedBaron
24.12.2009, 09:21
Moin,

ich bastele mir gerade einen Bootloader für einen ATtiny45 auf Basis von I2C. Wenn der Loader seinen Dienst getan hat, möchte einen Reset ausführen. Dies soll bewirken, dass alle Register in einen definierten Zustand versetzt werden.

Unter http://www.rn-wissen.de/index.php/Avr-gcc#Reset_ausl.C3.B6sen wird der Watchdog-Reset empfohlen. Irgendwo anders habe ich gelesen (finde ich aber leider nicht wieder), dass bei einem Watchdog-Reset der Watchdog-Timer nicht abgeschaltet würde. Das führt dazu, dass der Watchdog nach seiner ersten Benutzung in schöner Regelmäßigkeit zuschlagen würde.

a) Kann das jemand bestätigen?
b) Wenn ja, wie schaltet man den Watchdog wieder ab?

vg

Jaecko
24.12.2009, 09:46
Also ich hab für nen ATMega8 schon mal nen Bootloader zusammengebaut, der auch nen Watchdog als Reset verwendet. Nach nem Reset wird da bei mir nichts extra abgeschaltet; Der Watchdog beisst nur 1x zu, nach dem Reset schläft er wieder. Kann aber sein, dass das bei den Tinys anders ist oder auch mit den Fuses zusammenhängt (Gibt ja auch manche AVRs, bei denen es ein Watchdog-Fuse gibt; d.h. der Watchdog läuft immer)

BurningWave
24.12.2009, 11:13
Wenn man das Watchdog-Fuse nicht setzt, dann müsste nach einem Reset (egal auf welche Art er ausgelöst wurde) der Watchdog-Timer deaktiviert sein. Also du musst auf jeden Fall nichts deaktivieren, bei mir funktioniert das auch so.

sternst
24.12.2009, 11:17
Wenn man das Watchdog-Fuse nicht setzt, dann müsste nach einem Reset (egal auf welche Art er ausgelöst wurde) der Watchdog-Timer deaktiviert sein. Also du musst auf jeden Fall nichts deaktivieren, bei mir funktioniert das auch so.Das ist abhängig vom konkreten Controller. Bei neueren AVRs ist es definitiv anders. Da ist nach einem Watchdog-Reset der Watchdog weiterhin aktiv, unabhängig von der Fuse. Und zwar aus diesem Grund:

WDE is overridden by WDRF in MCUSR. This means that WDE is always set when WDRF is set. To clear WDE, WDRF must be cleared first. This feature ensures multiple resets during conditions causing failure, and a safe start-up after the failure.

PS: Und der ATtiny45 zählt zu diesen "neueren AVRs".

BurningWave
24.12.2009, 11:28
Das ist abhängig vom konkreten Controller. Bei neueren AVRs ist es definitiv anders. Da ist nach einem Watchdog-Reset der Watchdog weiterhin aktiv, unabhängig von der Fuse.


Bei einem Reset wird doch jedes Register zurückgesetzt?!

sternst
24.12.2009, 11:44
Bei einem Reset wird doch jedes Register zurückgesetzt?!
Richtig. Ist aber irrelevant. Steht doch in dem Datenblatt-Zitat, warum.
WDE wird von WDRF "überstimmt". Oder anders ausgedrückt: wenn der letzte Reset ein Watchdog-Reset war (WDRF ist gesetzt), dann ist der Watchdog weiterhin aktiv.