Hallo zusammen,

ich möchte mein Programm mit einem Watchdog überwachen. Also habe ich diesen über

#pragma config WDT = ON
#pragma config WDTPS = 128

eingeschalten und den Postscaler auf 1:128 gesetzt. Das bedeutet doch, dass der WD nun 18ms*128 = 2,304s ausgelöst wird.
Soweit so gut. Zu Beginn des Programms leuchtet während einer Init-Routine eine rote LED auf. Während der Init ist eine 10s Warteschleife, also muss die LED am Start mindestens 10s leuchten. In der Schleife lösche ich mit

_asm CLRWDT _endasm

immer mal wieder den WD. Die LED leuchtet auch nie auf, also gehe ich davon aus, dass kein Reset ausgelöst wurde.

Jetzt das Problem:

Wenn ich den WD wie oben beschrieben implementiere, dann liefern mir die Rechroutinen falsche Ergebnisse. Ohne funktioniert's, mit nicht. Jetzt ist meine Vermutung, dass der WD-Reset doch irgendwo ausgelöst wird und der PIC dort weitermacht, wo er aufgehört hat und zwischenzeitlich irgendwas am Stack geändert hat. Oder aber umgekehrt: er startet von vorn und im Stack stehen noch alte Variablen. Aber das kann ja auch nicht sein, da ich die Variablen immer mit nem Wert initialisiere...
Also kurz: Ich habe keine Ahnung, wieso der mit aktivierten WD auf einmal falsch rechnet... Weiss jemand Rat bei diesem Problem?

Grüsse
SteffenJ