I'm having problems clearing the watchdog interrupt on the TM4C129x -
I have the watchdog interrupt hooked up to a general purpose Fault handler. The FH does a register capture and then ID's the IRQ source and executes this code:
switch ( get_ipsr() ) {
case 0x22: // ----------------------- WDT Faults ----------------------
if ( !FHandlerState.wdt_fired ) {
WatchdogIntClear(WATCHDOG0_BASE);
IntDisable(INT_WATCHDOG);
FHandlerState.wdt_fired = 1;
scram_message_out_string(DUMP_TO_BOTH," Watchdog Timeout");
p->motw = motw_type_wdttimeout;
while ( IntIsEnabled(INT_WATCHDOG) ) { ; } // Spin loop until it clears.
IntPendClear(INT_WATCHDOG);
}
break;
The intent is the the WDT interrupt will clear and the fault handler will go on about its business cleaning up and making reports. After about a second, I should get a hard reset. What I see is that I keep getting WDT interrupts, and then I blow out the stack and start getting hard faults.
This seems pretty simple. Why do I get two watchdog interrupts?
- Robert
I have been unable to