Forum: Mikrocontroller und Digitale Elektronik Software Reset mit Watchdog ATmega328P/88


von Jörn (Gast)


Lesenswert?

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

von Peter D. (peda)


Lesenswert?

MCUSR = 0;

Peter

von Jörn (Gast)


Lesenswert?

Ganz vergessen ;-)

MCUSR = 0;

War schon längst im Programm drin und wird vor wdt_disable() aufgerufen

Noch eine Idee?

von Rudi (Gast)


Lesenswert?

Bitte.
1
wdt_enable(WDTO_500MS);
2
WDTCSR = _BV(WDIE);
3
cli();
4
while(1);

von Jörn (Gast)


Lesenswert?

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?

von Jörn (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.