
A very basic example using the watchdog timer
main.cpp@0:8da3c40a4505, 2010-02-17 (annotated)
- Committer:
- simon
- Date:
- Wed Feb 17 14:32:10 2010 +0000
- Revision:
- 0:8da3c40a4505
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
simon | 0:8da3c40a4505 | 1 | #include "mbed.h" |
simon | 0:8da3c40a4505 | 2 | |
simon | 0:8da3c40a4505 | 3 | DigitalOut led(LED1); |
simon | 0:8da3c40a4505 | 4 | |
simon | 0:8da3c40a4505 | 5 | class Watchdog { |
simon | 0:8da3c40a4505 | 6 | public: |
simon | 0:8da3c40a4505 | 7 | void kick(float s) { |
simon | 0:8da3c40a4505 | 8 | LPC_WDT->WDCLKSEL = 0x1; // Set CLK src to PCLK |
simon | 0:8da3c40a4505 | 9 | uint32_t clk = SystemCoreClock / 16; // WD has a fixed /4 prescaler, PCLK default is /4 |
simon | 0:8da3c40a4505 | 10 | LPC_WDT->WDTC = s * (float)clk; |
simon | 0:8da3c40a4505 | 11 | LPC_WDT->WDMOD = 0x3; // Enabled and Reset |
simon | 0:8da3c40a4505 | 12 | kick(); |
simon | 0:8da3c40a4505 | 13 | } |
simon | 0:8da3c40a4505 | 14 | |
simon | 0:8da3c40a4505 | 15 | void kick() { |
simon | 0:8da3c40a4505 | 16 | LPC_WDT->WDFEED = 0xAA; |
simon | 0:8da3c40a4505 | 17 | LPC_WDT->WDFEED = 0x55; |
simon | 0:8da3c40a4505 | 18 | } |
simon | 0:8da3c40a4505 | 19 | }; |
simon | 0:8da3c40a4505 | 20 | |
simon | 0:8da3c40a4505 | 21 | Watchdog w; |
simon | 0:8da3c40a4505 | 22 | |
simon | 0:8da3c40a4505 | 23 | int main() { |
simon | 0:8da3c40a4505 | 24 | printf("Hello World!\n"); |
simon | 0:8da3c40a4505 | 25 | w.kick(2.5); |
simon | 0:8da3c40a4505 | 26 | |
simon | 0:8da3c40a4505 | 27 | int hang = 0; |
simon | 0:8da3c40a4505 | 28 | while(1) { |
simon | 0:8da3c40a4505 | 29 | printf("loop...\n"); |
simon | 0:8da3c40a4505 | 30 | wait(0.1); |
simon | 0:8da3c40a4505 | 31 | |
simon | 0:8da3c40a4505 | 32 | if(hang == 10) { |
simon | 0:8da3c40a4505 | 33 | while(1); |
simon | 0:8da3c40a4505 | 34 | } |
simon | 0:8da3c40a4505 | 35 | |
simon | 0:8da3c40a4505 | 36 | w.kick(); |
simon | 0:8da3c40a4505 | 37 | hang++; |
simon | 0:8da3c40a4505 | 38 | } |
simon | 0:8da3c40a4505 | 39 | } |