Forum: Compiler & IDEs [SOLVED] Watchdog - ATMEGA 168


von Michael A. (michael_a43)


Lesenswert?

Hallo,

ich habe am WE ein bisschen mit der WATCHDOG-Funktion getestet und da 
habe ich ein kleine Problem.

Ich binde die Datei "<avr/wdt.h>" ein.
Und hier dann mein etwas verkürzter Sourcecode:
1
int main(void)
2
{ 
3
    wdt_disable();  //disable for startup
4
    
5
    uart_init(); //for DEBUG 
6
7
    //ein paar Init-Funktionen    
8
 
9
    uart_puts("Init Timer...\n\r"); 
10
    TimerInit(); // initialize timer
11
    
12
    wdt_enable(WDTO_2S);
13
   
14
    sei (); 
15
    while(1)
16
    {   
17
            //MAINLOOP
18
        //wdt_reset(); //zum testen auskommentiert
19
    }
20
}

Da ich ja in der Main-Schleife den wdt_reset auskommentiert habe, 
schlägt der Watchdog nach 2 Sekunden zu - dies passt noch zu meinem 
Verständnis.

Auf der Seriellen Schnittstelle stehe ich da, in dem der Text "Init 
Timer..." erscheint.
Nur wird jetzt aber ständig der Text "Init Timer" ausgegeben - in ein 
paar ms Abstand.
Müsste nicht der Watchdog am Programmstart beendet werden und dann mit 
den 2 Sekunden wieder beginnen  ?

Wo habe ich hier meinen Denkfehler bei der verwendung von Watchdogs ?

Gruß,

Michi

: Bearbeitet durch User
von Peter D. (peda)


Lesenswert?

1
      MCUSR = 0;
2
      wdt_disable();

von Michael A. (michael_a43)


Lesenswert?

Vielen Dank - das war die Lösung.

Gruß,

Michael

: Bearbeitet durch User
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.