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:
Fri Nov 14 17:22:46 2014 +0000
Revision:
1:70e99b5845fd
Parent:
0:2a46d40a176e
Added Compiler K64F target flag

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 1:70e99b5845fd 4 #if defined(TARGET_K64F)
loopsva 1:70e99b5845fd 5
loopsva 0:2a46d40a176e 6 void Watchdog::kick(int toVal) {
loopsva 0:2a46d40a176e 7 const uint32_t K64FWDONESEC = 0x00B80000; //approx 1 second delay
loopsva 0:2a46d40a176e 8 if((toVal < 1) || (toVal > 356)) toVal = 356;
loopsva 0:2a46d40a176e 9 WDOG_UNLOCK = 0xC520;
loopsva 0:2a46d40a176e 10 WDOG_UNLOCK = 0xD928;
loopsva 0:2a46d40a176e 11 uint32_t wdogCntl = K64FWDONESEC * toVal;
loopsva 0:2a46d40a176e 12 WDOG_TOVALH = wdogCntl >> 16;
loopsva 0:2a46d40a176e 13 WDOG_TOVALL = wdogCntl & 0xFFFF;
loopsva 0:2a46d40a176e 14 EnableWDOG();
loopsva 0:2a46d40a176e 15 }
loopsva 0:2a46d40a176e 16
loopsva 0:2a46d40a176e 17 void Watchdog::kick() {
loopsva 0:2a46d40a176e 18 WDOG_REFRESH = 0xA602;
loopsva 0:2a46d40a176e 19 WDOG_REFRESH = 0xB480;
loopsva 0:2a46d40a176e 20 }
loopsva 0:2a46d40a176e 21
loopsva 0:2a46d40a176e 22 void Watchdog::DisableWDOG() {
loopsva 0:2a46d40a176e 23 WDOG_UNLOCK = 0xC520;
loopsva 0:2a46d40a176e 24 WDOG_UNLOCK = 0xD928;
loopsva 0:2a46d40a176e 25 WDOG_STCTRLH &= 0xFFFE;
loopsva 0:2a46d40a176e 26 }
loopsva 0:2a46d40a176e 27
loopsva 0:2a46d40a176e 28 void Watchdog::EnableWDOG() {
loopsva 0:2a46d40a176e 29 WDOG_UNLOCK = 0xC520;
loopsva 0:2a46d40a176e 30 WDOG_UNLOCK = 0xD928;
loopsva 0:2a46d40a176e 31 WDOG_STCTRLH |= 0x0001;
loopsva 0:2a46d40a176e 32 kick();
loopsva 1:70e99b5845fd 33 }
loopsva 1:70e99b5845fd 34
loopsva 1:70e99b5845fd 35 #endif //(TARGET_K64F)