Wie gehe ich richtig mit dem Watchdog im MEGA32 um ? Ich muss die Headerdatei wdt.h (#include <avr/wdt.h>) in das Programm einbinden. Mit wdt_enable (wert 0-7) stelle ich die Time Out bis zum Reset ein. Die Funktion wdt_reset() kommt regelmäßig im Programm vor und erzeugt einen Watchdog-Reset vor Ablauf der Time Out Zeit (bei mir jetzt bei eine Abfrage von Portzuständen). Was ist aber nachdem der WD einen Reset ausgelöst hat. Soweit ich gelesen habe werden die Prescaler Bits mit dem Reset gelöscht d.h. ich muss sie mit wdt_enable (wert 0-7) neu setzten. Passiert das denn ohnehin nicht nach dem Reset weil ja die Funk aufgerufen wird? Bleibt der WD auch nach dem Flashen weiter aktiv, wenn ja wie kann ich ihn wieder deaktivieren. Gibt es da irgendwelche Fuses ?
Ingo Laabs schrieb: > Mit wdt_enable (wert 0-7) stelle ich die Time Out bis zum Reset ein. > Die Funktion wdt_reset() kommt regelmäßig im Programm vor und erzeugt > einen Watchdog-Reset vor Ablauf der Time Out Zeit (bei mir jetzt bei > eine Abfrage von Portzuständen). > > Was ist aber nachdem der WD einen Reset ausgelöst hat. Soweit ich > gelesen habe werden die Prescaler Bits mit dem Reset gelöscht... Nach dem Reset kommst du doch wieder von oben in dein main() und machst erneut die Initialisierung, oder nicht?
Ingo Laabs schrieb: > Bleibt der WD auch nach dem Flashen weiter aktiv, wenn ja wie kann ich > ihn wieder deaktivieren. Gibt es da irgendwelche Fuses ? Lt. http://www.mikrocontroller.net/articles/AVR-Tutorial:_Watchdog bleibt er aktiv. Daraus:
1 | Der WDT läßt sich auch softwaremäßig durch Setzen des WDE-Bits im WDTCR Register aktivieren. |
2 | |
3 | WDT_on: |
4 | |
5 | in Temp1, WDTCR ; Write logical one to WDE |
6 | ori Temp1, (1<<WDE) |
7 | out WDTCR, Temp1 |
8 | ret |
9 | |
10 | Dieses hat den Vorteil, dass man den WDT auch softwaremäßig wieder deaktivieren kann. |
11 | |
12 | Ein Deaktivieren des WDTs ist nicht möglich, wenn die WDTON - Fuse gesetzt ist! |
In C gibt es ein wdt_disable() dafür; siehe 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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.