Watchdog Timer for the K64F. User can set timeout value from 1 to 356 seconds with a one second resolution.

Dependents:   Telliskivi2_2014 mbed-IBooth-ETH TwitterReader

Committer:
loopsva
Date:
Mon Oct 20 23:40:26 2014 +0000
Revision:
0:2a46d40a176e
Child:
1:70e99b5845fd
Watchdog Timer for the K64F. Timeout value can be set from 1 to 356 seconds with one second resolution.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
loopsva 0:2a46d40a176e 1 #include "mbed.h"
loopsva 0:2a46d40a176e 2 #include "Watchdog.h"
loopsva 0:2a46d40a176e 3
loopsva 0:2a46d40a176e 4 void Watchdog::kick(int toVal) {
loopsva 0:2a46d40a176e 5 const uint32_t K64FWDONESEC = 0x00B80000; //approx 1 second delay
loopsva 0:2a46d40a176e 6 if((toVal < 1) || (toVal > 356)) toVal = 356;
loopsva 0:2a46d40a176e 7 WDOG_UNLOCK = 0xC520;
loopsva 0:2a46d40a176e 8 WDOG_UNLOCK = 0xD928;
loopsva 0:2a46d40a176e 9 uint32_t wdogCntl = K64FWDONESEC * toVal;
loopsva 0:2a46d40a176e 10 WDOG_TOVALH = wdogCntl >> 16;
loopsva 0:2a46d40a176e 11 WDOG_TOVALL = wdogCntl & 0xFFFF;
loopsva 0:2a46d40a176e 12 EnableWDOG();
loopsva 0:2a46d40a176e 13 }
loopsva 0:2a46d40a176e 14
loopsva 0:2a46d40a176e 15 void Watchdog::kick() {
loopsva 0:2a46d40a176e 16 WDOG_REFRESH = 0xA602;
loopsva 0:2a46d40a176e 17 WDOG_REFRESH = 0xB480;
loopsva 0:2a46d40a176e 18 }
loopsva 0:2a46d40a176e 19
loopsva 0:2a46d40a176e 20 void Watchdog::DisableWDOG() {
loopsva 0:2a46d40a176e 21 WDOG_UNLOCK = 0xC520;
loopsva 0:2a46d40a176e 22 WDOG_UNLOCK = 0xD928;
loopsva 0:2a46d40a176e 23 WDOG_STCTRLH &= 0xFFFE;
loopsva 0:2a46d40a176e 24 }
loopsva 0:2a46d40a176e 25
loopsva 0:2a46d40a176e 26 void Watchdog::EnableWDOG() {
loopsva 0:2a46d40a176e 27 WDOG_UNLOCK = 0xC520;
loopsva 0:2a46d40a176e 28 WDOG_UNLOCK = 0xD928;
loopsva 0:2a46d40a176e 29 WDOG_STCTRLH |= 0x0001;
loopsva 0:2a46d40a176e 30 kick();
loopsva 0:2a46d40a176e 31 }