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 #ifndef WATCHDOG_K64F_H
loopsva 0:2a46d40a176e 2 #define WATCHDOG_K64F_H
loopsva 0:2a46d40a176e 3
loopsva 0:2a46d40a176e 4 #include "mbed.h"
loopsva 0:2a46d40a176e 5
loopsva 0:2a46d40a176e 6 /** Routines to set and kick the Watchdog timer for the K64F.
loopsva 0:2a46d40a176e 7 *
loopsva 0:2a46d40a176e 8 * User inputs a value from 1 to 356 seconds when initializing the Watchdog
loopsva 0:2a46d40a176e 9 * timer. The user's input number is multiplied by a fixed value and then
loopsva 0:2a46d40a176e 10 * placed into the countdown timer.
loopsva 0:2a46d40a176e 11 *
loopsva 0:2a46d40a176e 12 * The user is responsible for "kicking" the Watchdog before the timeout interval
loopsva 0:2a46d40a176e 13 * expires, otherwise the K64F will automatically reboot.
loopsva 0:2a46d40a176e 14 *
loopsva 0:2a46d40a176e 15 * @code
loopsva 0:2a46d40a176e 16 * #include "mbed.h"
loopsva 0:2a46d40a176e 17 * #include "Watchdog.h"
loopsva 0:2a46d40a176e 18 *
loopsva 0:2a46d40a176e 19 * Watchdog wdt;
loopsva 0:2a46d40a176e 20 *
loopsva 0:2a46d40a176e 21 * int main() {
loopsva 0:2a46d40a176e 22 * //initialization code....
loopsva 0:2a46d40a176e 23 * wdt.kick(20); //init the watchdog for a 20 second timeout
loopsva 0:2a46d40a176e 24 * while(1) {
loopsva 0:2a46d40a176e 25 * wait_ms(1000); //do some code
loopsva 0:2a46d40a176e 26 * wdt.kick(); //kick the watchdog before 20 seconds is up
loopsva 0:2a46d40a176e 27 * }
loopsva 0:2a46d40a176e 28 * }
loopsva 0:2a46d40a176e 29 * @endcode
loopsva 0:2a46d40a176e 30 *
loopsva 0:2a46d40a176e 31 */
loopsva 0:2a46d40a176e 32 /* Watchdog controller class
loopsva 0:2a46d40a176e 33 */
loopsva 0:2a46d40a176e 34 class Watchdog {
loopsva 0:2a46d40a176e 35
loopsva 0:2a46d40a176e 36 public:
loopsva 0:2a46d40a176e 37 /** Create a Watchdog object and initialize timeout in seconds
loopsva 0:2a46d40a176e 38 *
loopsva 0:2a46d40a176e 39 * @param int timeout in seconds. Range (1 - 356)
loopsva 0:2a46d40a176e 40 *
loopsva 0:2a46d40a176e 41 * Note: if value out of range, default value with be 356
loopsva 0:2a46d40a176e 42 *
loopsva 0:2a46d40a176e 43 * @return NONE
loopsva 0:2a46d40a176e 44 */
loopsva 0:2a46d40a176e 45 void kick(int WDTseconds);
loopsva 0:2a46d40a176e 46
loopsva 0:2a46d40a176e 47 /** Keep alive by kicking the Watchdog occasionally
loopsva 0:2a46d40a176e 48 *
loopsva 0:2a46d40a176e 49 * @param NONE
loopsva 0:2a46d40a176e 50 *
loopsva 0:2a46d40a176e 51 * @return NONE
loopsva 0:2a46d40a176e 52 */
loopsva 0:2a46d40a176e 53 void kick();
loopsva 0:2a46d40a176e 54
loopsva 0:2a46d40a176e 55 private:
loopsva 0:2a46d40a176e 56 /** Disable the watchdog Function
loopsva 0:2a46d40a176e 57 *
loopsva 0:2a46d40a176e 58 * @param NONE
loopsva 0:2a46d40a176e 59 *
loopsva 0:2a46d40a176e 60 * @return NONE
loopsva 0:2a46d40a176e 61 */
loopsva 0:2a46d40a176e 62 void DisableWDOG();
loopsva 0:2a46d40a176e 63
loopsva 0:2a46d40a176e 64 /** Enable the watchdog Function
loopsva 0:2a46d40a176e 65 *
loopsva 0:2a46d40a176e 66 * @param NONE
loopsva 0:2a46d40a176e 67 *
loopsva 0:2a46d40a176e 68 * @return NONE
loopsva 0:2a46d40a176e 69 */
loopsva 0:2a46d40a176e 70 void EnableWDOG();
loopsva 0:2a46d40a176e 71
loopsva 0:2a46d40a176e 72 };
loopsva 0:2a46d40a176e 73
loopsva 0:2a46d40a176e 74 #endif