LPC1768 and LPC11U24 watchdog timer
Dependents: GSwifi_tsutenkaku barometer-m0 BMAGThrRev
WDT.cpp@0:f28de891b0d3, 2012-08-04 (annotated)
- Committer:
- okini3939
- Date:
- Sat Aug 04 05:23:40 2012 +0000
- Revision:
- 0:f28de891b0d3
- Child:
- 1:f7baa89f84bc
1st build
;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
okini3939 | 0:f28de891b0d3 | 1 | #include "mbed.h" |
okini3939 | 0:f28de891b0d3 | 2 | #include "WDT.h" |
okini3939 | 0:f28de891b0d3 | 3 | |
okini3939 | 0:f28de891b0d3 | 4 | // Simon's Watchdog code from |
okini3939 | 0:f28de891b0d3 | 5 | // http://mbed.org/forum/mbed/topic/508/ |
okini3939 | 0:f28de891b0d3 | 6 | void Watchdog::init(float s) { |
okini3939 | 0:f28de891b0d3 | 7 | LPC_WDT->WDCLKSEL = 0x01; // Set CLK src to PCLK |
okini3939 | 0:f28de891b0d3 | 8 | uint32_t clk = SystemCoreClock / 16; // WD has a fixed /4 prescaler, PCLK default is /4 |
okini3939 | 0:f28de891b0d3 | 9 | LPC_WDT->WDTC = s * (float)clk; |
okini3939 | 0:f28de891b0d3 | 10 | LPC_WDT->WDMOD = 0x03; // Enabled and Reset |
okini3939 | 0:f28de891b0d3 | 11 | kick(); |
okini3939 | 0:f28de891b0d3 | 12 | } |
okini3939 | 0:f28de891b0d3 | 13 | // "kick" or "feed" the dog - reset the watchdog timer |
okini3939 | 0:f28de891b0d3 | 14 | // by writing this required bit pattern |
okini3939 | 0:f28de891b0d3 | 15 | void Watchdog::kick() { |
okini3939 | 0:f28de891b0d3 | 16 | __disable_irq(); |
okini3939 | 0:f28de891b0d3 | 17 | LPC_WDT->WDFEED = 0xAA; |
okini3939 | 0:f28de891b0d3 | 18 | LPC_WDT->WDFEED = 0x55; |
okini3939 | 0:f28de891b0d3 | 19 | __enable_irq(); |
okini3939 | 0:f28de891b0d3 | 20 | } |
okini3939 | 0:f28de891b0d3 | 21 | |
okini3939 | 0:f28de891b0d3 | 22 | int Watchdog::getFlg () { |
okini3939 | 0:f28de891b0d3 | 23 | return LPC_WDT->WDMOD & (1<<2) ? 1 : 0; |
okini3939 | 0:f28de891b0d3 | 24 | } |