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.