Hi,
Ich versuche einen ATmega328P bzw. Atmega88 Softwaremäßig per Watchdog
zu resetten. Hierfür werwende ich die Funktionen aus wdt.h:
wdt_enable(WDTO_2S); // Watchdog einschalten
while(1){}; // Endlosschleife
Direkt am Anfang der main routine Schalte ich den Watchdog wieder aus:
wdt_disable();
Der uC bleibt in der Endlosschleife hängen, hierfür habe ich mir
testweise Buchstaben über den Uart senden lassen. Nach ca. 2 Sekunden
kommt auch kein Zeichen mehr an. Der Watchdog reset sollte also
erfolgreich gewesen sein.
Komischerweise startet der uC dann aber nicht mehr oder bleibt irgendwie
hängen. Erst nach trennen der Sapnnungsversorgung läuft der uC wieder.
Was habe ich übersehen?
Gruß Jörn
Ganz vergessen ;-) MCUSR = 0; War schon längst im Programm drin und wird vor wdt_disable() aufgerufen Noch eine Idee?
Bitte.
1 | wdt_enable(WDTO_500MS); |
2 | WDTCSR = _BV(WDIE); |
3 | cli(); |
4 | while(1); |
Leider keine Veränderung .... uC hängt weiterhin nach dem Watchdog Reset ..... Langsam weiß ich echt nicht mehr woran es noch liegen soll.... Ist vllt. die Startup time zu lang für den Watchdog?
Oh wie blöd !! ;-) Wenn man nen Bootloader benutzt sollte man den Watchdog auch dort zurücksetzten und nicht im Hauptprogramm... Danke für eure Hilfe
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.