Moin !
Ich habe im Moment leider Probleme , den Watchdog des MSP430F5438 zum
Laufen zu bekommen. Ich starte den Watchdog zwar, aber erhalte keinen
Reset des µC, bei einem Test mit while(1) Schleife :(
Mein Code sieht folgendermaßen aus:
1 | // Defines für den WDT
|
2 |
|
3 |
|
4 | // Bit 8..15 -> bei jedem schreibzugriff auf WDTCTL
|
5 | //löschen, dann beschreiben mit WDTPW Passwort
|
6 |
|
7 | #define WDT_STOP WDTCTL = WDTPW + ((0x00FF & WDTCTL) | WDTHOLD);
|
8 | //WDTHOLD, Passwortbits = 0 und REST gesetzt ergibt 0x007F
|
9 | #define WDT_START WDTCTL = WDTPW + (WDTCTL & 0x007F);
|
10 |
|
11 | #define WDT_RESET WDTCTL = WDTPW + ((0x00FF & WDTCTL) | WDTCNTCL);
|
In der main wird dann VOR der while(1) Schleife folgendes aufgerufen
1 | //Watchdog initialisierung
|
2 |
|
3 | //WDTHOLD = 1; für angehalten, sollte bei Änderungen gehalten bleiben
|
4 |
|
5 | //WDTCNTCL = 1; Counterclearbit, Zähler auf 0x0000
|
6 | //WDTSSEL = 1; Sourceselectbit, ACLK
|
7 | //WDTIS0..1 = 00; Timerinterval CLK/32768 -> 1s
|
8 |
|
9 | WDTCTL = WDTPW + WDTHOLD + WDTCNTCL + WDTSSEL__ACLK;
|
10 |
|
11 | //Starten des Watchdogs
|
12 | WDT_START;
|
13 |
|
14 | //Bei Funktionseintritt wird aufgerufen
|
15 | WDT_RESET;
|