Watchdog timer for the LPC4088

Committer:
loopsva
Date:
Fri Dec 20 19:42:32 2013 +0000
Revision:
0:fc62d045ca0c
Initial cut. A Watchdog timer for the LPC4088.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
loopsva 0:fc62d045ca0c 1 #ifndef WATCHDOG_4088_H
loopsva 0:fc62d045ca0c 2 #define WATCHDOG_4088_H
loopsva 0:fc62d045ca0c 3
loopsva 0:fc62d045ca0c 4 #include "mbed.h"
loopsva 0:fc62d045ca0c 5
loopsva 0:fc62d045ca0c 6 /** Routines to set and kick the Watchdog timer for the LPC4088.
loopsva 0:fc62d045ca0c 7 *
loopsva 0:fc62d045ca0c 8 * The LPC4088 has a fixed, internal 500KHz oscillator which
loopsva 0:fc62d045ca0c 9 * is divided by 4 to give an 8uS master clock to the Watchdog countdown timer.
loopsva 0:fc62d045ca0c 10 *
loopsva 0:fc62d045ca0c 11 * User inputs a value from 1 to 134 seconds when initializing the Watchdog
loopsva 0:fc62d045ca0c 12 * timer. The user's input number is multiplied by 125k and then placed into
loopsva 0:fc62d045ca0c 13 * the countdown timer.
loopsva 0:fc62d045ca0c 14 *
loopsva 0:fc62d045ca0c 15 * The user is responsible for "kicking" the Watchdog before the timeout interval
loopsva 0:fc62d045ca0c 16 * expires, otherwise the LPC4088 will automatically reboot.
loopsva 0:fc62d045ca0c 17 *
loopsva 0:fc62d045ca0c 18 * @code
loopsva 0:fc62d045ca0c 19 * #include "mbed.h"
loopsva 0:fc62d045ca0c 20 * #include "Watchdog.h"
loopsva 0:fc62d045ca0c 21 *
loopsva 0:fc62d045ca0c 22 * Watchdog wdt;
loopsva 0:fc62d045ca0c 23 *
loopsva 0:fc62d045ca0c 24 * int main() {
loopsva 0:fc62d045ca0c 25 * initialization code....
loopsva 0:fc62d045ca0c 26 * wdt.kick(20); //init the watchdog for a 20 second timeout
loopsva 0:fc62d045ca0c 27 * while(1) {
loopsva 0:fc62d045ca0c 28 * wait_ms(1000); //do some code
loopsva 0:fc62d045ca0c 29 * wdt.kick(); //kick the watchdog before 20 seconds is up
loopsva 0:fc62d045ca0c 30 * }
loopsva 0:fc62d045ca0c 31 * }
loopsva 0:fc62d045ca0c 32 * @endcode
loopsva 0:fc62d045ca0c 33 *
loopsva 0:fc62d045ca0c 34 */
loopsva 0:fc62d045ca0c 35 /* Watchdog controller class
loopsva 0:fc62d045ca0c 36 */
loopsva 0:fc62d045ca0c 37 class Watchdog {
loopsva 0:fc62d045ca0c 38
loopsva 0:fc62d045ca0c 39 public:
loopsva 0:fc62d045ca0c 40 /** Create a Watchdog object and initialize timeout in seconds
loopsva 0:fc62d045ca0c 41 *
loopsva 0:fc62d045ca0c 42 * @param int timeout in seconds. Range (1 - 134)
loopsva 0:fc62d045ca0c 43 */
loopsva 0:fc62d045ca0c 44 void kick(int WDTseconds);
loopsva 0:fc62d045ca0c 45
loopsva 0:fc62d045ca0c 46
loopsva 0:fc62d045ca0c 47 /** Keep alive by kicking the Watchdog occasionally
loopsva 0:fc62d045ca0c 48 *
loopsva 0:fc62d045ca0c 49 * @param NONE
loopsva 0:fc62d045ca0c 50 */
loopsva 0:fc62d045ca0c 51 void kick();
loopsva 0:fc62d045ca0c 52
loopsva 0:fc62d045ca0c 53 private:
loopsva 0:fc62d045ca0c 54 int WDTseconds;
loopsva 0:fc62d045ca0c 55 };
loopsva 0:fc62d045ca0c 56
loopsva 0:fc62d045ca0c 57 #endif