Forum: Mikrocontroller und Digitale Elektronik Watchdog Timer


von Sebastian (Gast)


Lesenswert?

Hallo,
ich habe folgendes Problem und benötige eure Hilfe.
Der Watchdog ist aktiv und resets werden durchgeführt.
Da der Baustein in den sleepmodus versetzt werden soll, muß ja
bekanntlicher weise der WDTimer ausgestellt werden. Dieses klappt auch.
Nur dann das erneute Einstellen des WD klappt nicht. Ich will ihn so
einstellen, das er nicht gleich einen Reset durchführt, sonder das
Programm weiter abläuft:
Controller:Atmega88, CodeVision AVR.

Hier meine beiden Routinen WDT_on, WDT_off

//******************************************************************

void WDT_off(void)
{
       #asm("cli")  //Interrupts aus
       #asm("wdr")
       MCUSR&=0xf7; //clear WDRF in MCUSR register
       WDTCSR|=0x18;//logisch 1 in WDCE u. WDE im WDTCSR register
       WDTCSR=0x00;
       #asm("sei")
}
//*******************************************************************
void WDT_on(void)
        {


            #asm("cli")  //Interrupts aus
            #asm("wdr")
            MCUSR&=0xf7;
            WDTCSR=0x38;
            WDTCSR=0x28;
            #asm("sei")
        }
//*******************************************************************

von Uwe Nagel (Gast)


Lesenswert?

Wenn ich das richtig sehe setzt du die Prescaler Bits WDP3 und WDP2
(WDTCSR=0x28;).
Diese Kombination steht in meinem Datenblatt als 'Reserved'.
Vielleicht will er deshalb nicht...

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.