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?
ja klar, mit wdt_enable (wert 0-7)zu Beginn der Main
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 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
In C gibt es ein wdt_disable() dafür; siehe http://www.nongnu.org/avr-libc/user-manual/group__avr__watchdog.html
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.