Forum: Mikrocontroller und Digitale Elektronik Watchdog für gelegentliches Aufwachen


von Dennis X. (Gast)


Lesenswert?

Hallo Ihr,

ich versuche schon die ganze Zeit meinen Atiny13 vom Powerdown-Mode über 
einen Watchdog Reset zu wecken.
Ich möchte allerdings einfach nur das Programm dann weiterlaufen lassen, 
wenn die 2s des Watchdogs abgelaufen sind.
Ich habe gelesen, dass ich ein Bit setzen muss, damit ich des Reset des 
Prozessors verhindern kann und stattdessen nur den Interrupt ausführen 
kann.

Hier hab ich mal meine Initialisierung des Watchdogs:
1
ISR(WDT_vect)
2
{
3
WDTCR = (1<<WDTIE);
4
}
5
6
WDTCR = (1<<WDCE) | (1<<WDTIE) | (1<<WDP2) | (1<<WDP1) | (1<<WDP0);
7
WDTCR = ~(1<<WDE);

Habe ich noch was vergessen?
Ich laufe eine Schleife durch und wenn eine Variable gesetzt ist, geht 
der Prozessor am Ende dieser in den Powerdown Modus. Nun sollte er ja 
nach zwei Sekunden durch diesen Interrupt geweckt werden und nochmals 
die Schleife durchlaufen, doch das tut er nicht.

Hoffe jemand kann mir helfen!

von holger (Gast)


Lesenswert?

>WDTCR = (1<<WDCE) | (1<<WDTIE) | (1<<WDP2) | (1<<WDP1) | (1<<WDP0);
>WDTCR = ~(1<<WDE);

a = 1;
a = 2;

Was steht am Ende in a?

von Dennis X. (Gast)


Lesenswert?

holger schrieb:
>>WDTCR = (1<<WDCE) | (1<<WDTIE) | (1<<WDP2) | (1<<WDP1) | (1<<WDP0);
>>WDTCR = ~(1<<WDE);
>
> a = 1;
> a = 2;
>
> Was steht am Ende in a?

Ja klar -.- Tollpatschigkeit... Aber es lag schlussendlich daran, dass 
das Interrupt-Flag auf jeden Fall gelöscht sein muss, wenn man das 
Reset-Bit löschen will. So ein doppelter Schutz gegen löschen...

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.