Aus Sicherungsgründen soll ich bei meinem Sensor den Watchdog
aktivieren.
Klingt einfach. hat aber eingie Tücken die ich nicht ganz verstehe.
Beim Init wird er erstmal ausgeschalten. Das Programm soll ja erstma in
Ruhe starten.
Dann kommt:
1 | WDTCTL = WDT_ARST_1000;
|
2 |
|
3 | while(1)
|
4 | {
|
5 |
|
6 | WDTCTL = WDTPW + WDTCNTCL;
|
7 | sTemperatur.Temp_Diff_limit = fnReadFlash(TEMP_DIFF_LIMIT);
|
8 | sTemperatur.Temp_Warn = fnReadFlash(TEMP_WARN);
|
9 | sTemperatur.InnenMax = fnReadFlash(MAXTEMPINNEN);
|
10 | sTemperatur.AussenMax = fnReadFlash(MAXTEMPAUSSEN);
|
11 |
|
12 | sTemperatur.Innen_alt = sTemperatur.Innen;
|
13 | sTemperatur.Aussen_alt = sTemperatur.Aussen;
|
14 | WDTCTL = WDTPW + WDTCNTCL;
|
15 | sTemperatur.Innen = fnGetTemperatur(INNEN);
|
16 | sTemperatur.Aussen = fnGetTemperatur(AUSSEN);
|
ohne die 3. letzte Zeile kann ihc mittels Breakpoints feststellen, dass
er die vorletzte Zeile erreicht, die letzte aber nicht.
Komischer Weise ist es das selbe Spiel mit der 3. letzten Zeile. Müßte
dieser Befehl den Watchdog Counter nicht reseten?
Die Abarbeitung der kompletten While Schleife dauert nichtmal eine
Sekunde. Bei Der Watchdoginit müßte ich meines Erachtens nicht mal
zwischendrin reseten.
Wo is mein Gedankenfehler?