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