Watchdog für gelegentliches Aufwachen

Gast #2457434
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!
Gast #2457467
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...

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