Forum: Mikrocontroller und Digitale Elektronik Reset mit Watchdog != Power-Up?


von Ich B. (ichbin)


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!

von Rahul (Gast)


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.

von Ich B. (ichbin)


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.

von Ich B. (ichbin)


Lesenswert?

seh ich das richtig, daß ich den watchdog direkt nach dem neustart
wieder ausschalten muß?

von Ich B. (ichbin)


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();

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.