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@0:2a46d40a176e, 2014-10-20 (annotated)
- 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?
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 | 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 | } |