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
Watchdog.cpp@1:70e99b5845fd, 2014-11-14 (annotated)
- 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?
User | Revision | Line number | New 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) |