This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TMS320F28386S: Is it possible to configure the watchdog timer as a non-maskable interrupt that can interrupt any other ISRs or is interrupt nesting required?

Part Number: TMS320F28386S


Tool/software:

Hello all,

In the application I am developing I have encountered extremely rare situations where the C28x CPU1 processor appears to be getting hung up and I suspect that it is getting caught up in an ISR.

I have the Watchdog timer configured as follows:

void InitWatchdog(void)
{
   //--- Configure Watchdog
   SysCtl_setWatchdogPredivider(SYSCTL_WD_PREDIV_512);      // WDPRECLKDIV = INTOSC1/512
   SysCtl_setWatchdogPrescaler(SYSCTL_WD_PRESCALE_2);       // WDCLK=OSCCLK/512/2
   SysCtl_setWatchdogWindowValue(0);                    // Minimum window threshold value (disabled)

   //--- Set Watchdog Mode (Reset / Interrupt)
   SysCtl_setWatchdogMode(SYSCTL_WD_MODE_INTERRUPT);       // watchdog generates an interrupt

   //--- Enable / Disable Watchdog
   SysCtl_enableWatchdog();                                // Enable watchdog
   SysCtl_serviceWatchdog();

   //--- Enable Watchdog interrupt
   Interrupt_register(INT_WAKE, &wakeISR);     // Re-map watchdog wake interrupt signal to call the ISR function
   Interrupt_enable(INT_WAKE);                 // Enable WAKEINT in PIE group 1 and enable INT1 in IER to enable PIE group 1
}   // end of InitWatchdog()

Ideally I want the wakeISR() to fire and reboot the module as I have it configured but it is not occurring, presumably because PIE interrupts do not have the ability to execute while another one is running. Instead they are queued up according to priority.

Is there a way to configure the Watchdog timer to fire a non-maskable interrupt when it expires so that it will be able to interrupt any other ISRs or will I have to enable nesting and nest the wakeISR inside of all other interrupts?

Best regards,

-Jakub