Reset mit Watchdog != Power-Up?

OP #306221
Lesenswert?

Ich löse einen Software-Reset per Watchdog so aus:

cli();
wdt_enable (WDTO_15MS);
while (1);

Mein Programm verhält sich aber nicht so, wie es das nach einem
externen Reset (AVRISP, An/Aus) macht. Es startet zwar neu, aber
irgendwelche Variablen oder Interrupts sind wohl durcheinander, so daß
nicht das gewünschte Verhalten auftritt.

Woran könnte das liegen?

Dank!
Gast #306222
Lesenswert?

Willst du jetzt, dass der Controller "nackich" ist, oder willst du
deine Werte behalten?
Im Datenblatt gibt es eine schöne Tabelle, in der beschrieben ist, was
sich alles in welchem Zustand nach ein Reset jeglicher Art (Watchdog,
Brownout...) drin steht.
OP #306223
Lesenswert?

ja, nackich wie nach spannnung aus und wieder einschalten
bzw. so, wie es durch einen externen reset vom AVRISP ist (allerdings
ist da wohl alles ungewollte gelöscht worden)
.. habe im forum schon gelesen, daß der ram seine daten nicht
verliert.
werde mal ins datenblatt sehen.
OP #306225
Lesenswert?

Ja, aber auch das "MCU Status Register" löschen. Da steht drin, wie
der Reset ausgelöst wurde (wenn man's wissen will, also vorher
auslesen) und anscheinend startet das dann auch den Watchdog wieder
(nur watchdog ausschalten reicht nicht).
Das hier gilt zumindest für ein tiny2313.

MCUSR = 0;
wdt_disable();

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren