Hallo zusammen, in meinem ATmega8-Controller möchte ich einen Watchdog einsetzen, der nach ein paar Sekunden Sleep den AVR aufweckt und resettet. Mein Problem ist, dass er das zwar tut, aber zu früh und ungeachtet der eingestellten Zeit. Ich habe dazu schon einen früheren Thread hier im Forum gefunden, der das Problem aber nicht löst. Hier mal mein Code: ------- am Anfang ----- ldi temp, 0b00011111 out WDTCR, temp ldi temp, 0b00010111 out WDTCR, temp ------- am Ende ------- ldi temp, 0b10100000 out MCUCR, temp wdr ldi temp, 0b00001111 out WDTCR, temp sleep ----------------------- Weiß einer Rat? Danke! Matthias
Beim ATmega8 musst Du vor dem Ändern der WD-Zeit das Ändern enablen, so wie vor dem Ausschalten des WD, also vorher WDCE und WDE auf 1 setzen. ; reset WDT WDR ; Write logical one to WDCE and WDE in r16, WDTCR ori r16, (1<<WDCE)|(1<<WDE) out WDTCR, r16 ; Turn off WDT => stattdessen hier Zeit ändern ldi r16, (0<<WDE) out WDTCR, r16 Steht nicht im Datenblatt und ist auch bei anderen AVRs nicht nötig. Ich hab da auch schon mal dran rumgesucht... Sven
...steht nicht im Datenblatt?? Also in dem auf meinem Rechner steht's ab Seite 41...
Jo, stimmt, bei mir auf Seite 43.
>> WDCE - This bit must be set when the WDE bit is written to logic zero.
Otherwise, the Watchdog will not be disabled. Once written to one, hardware will
clear this bit after four clock cycles. Refer to the description of the WDE bit
for a Watchdog disable procedure. *** In Safety Level 1 and 2, this bit must also
be set when changing the prescaler bits. ***
War damals ein älteres Datenblatt...
Sven
Das mit dem Ändern der Zeit gilt nur, wenn dieses Watchdog Fuse Bit programmiert ist, müsste so auf Seite 43 stehen.
Nein, denn:
>> In Safety Level 1 and 2, this bit must also be set when changing the prescaler
bits.
Und Safety Level 1 ist der ganz normale, wenn das Fuse Bit nicht
programmiert ist. Keine Ahnung warum, aber es gibt keinen Unterschied.
Warum probierst Du's nicht einfach aus?
Sven
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.