<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic SWT interrupt with MQX in MQX Software Solutions</title>
    <link>https://community.nxp.com/t5/MQX-Software-Solutions/SWT-interrupt-with-MQX/m-p/629741#M16958</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;I want to setup a watchdog but I don't want to use MQX watchdog. I rather use SWT watchdog from the microcontroller (MPC5668G). By the way, I'm using MQX 4.1.1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Here is the init function to setup the watchdog. As you can see, I've setup the watchdog to interrupt first and then reset on second consecutive timeout. However, even if a watchdog timer timeout occurs, the ISR is never called.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/*==============================================================================&lt;BR /&gt;&amp;nbsp;* Function name: SWT_Init&lt;BR /&gt;&amp;nbsp;* Description:&amp;nbsp;&amp;nbsp; This function initializes the Software Watchdog Timer.&lt;BR /&gt;&amp;nbsp;* Inputs:&lt;BR /&gt;&amp;nbsp;*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; eMode -&amp;gt; Watchdog refresh mode (normal, window)&lt;BR /&gt;&amp;nbsp;*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; eAction -&amp;gt; Action to be taken when watchdog timeout occurs&lt;BR /&gt;&amp;nbsp;*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; u32Timeout -&amp;gt; Watchdog timeout in ms&lt;BR /&gt;&amp;nbsp;*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; u32WindowStartValue -&amp;gt; Value after which watchdog should be refreshed if&lt;BR /&gt;&amp;nbsp;*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; window mode is used (ignored in normal mode) in ms&lt;BR /&gt;&amp;nbsp;*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pfIsr -&amp;gt; Function that will be call upon watchdog timeout&lt;BR /&gt;&amp;nbsp;* Outputs:&lt;BR /&gt;&amp;nbsp;*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; None&lt;BR /&gt;==============================================================================*/&lt;BR /&gt;void SWT_Init(SWT_eWatchdogMode eMode, SWT_eWatchdogAction eAction, uint32_t u32Timeout, uint32_t u32WindowStartValue, INT_EXCEPTION_FPTR pfIsr)&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; uint32_t u32NbClkTicks;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; vuint32_t u32TmpTCR;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; vuint32_t u32TmpCR;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Clear any pending interrupt */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SWT.IR.B.TIF = (vuint32_t)1;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Install interrupt function to be called */&lt;BR /&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp; _int_install_isr(PSP_EXCPT_WATCHDOG_TIMER, pfIsr, NULL);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; _int_set_exception_handler(PSP_EXCPT_WATCHDOG_TIMER, pfIsr);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Enable watchdog interrupt */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; _PSP_SPR_GET(u32TmpTCR, E200CORE_TCR);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; u32TmpTCR |= E200CORE_TCR_WIE;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; _PSP_SPR_SET(E200CORE_TCR, u32TmpTCR);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Set watchdog mode */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(SWT_KE_MODE_WINDOW == eMode)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; u32TmpCR |= SWT_KU32_CR_WND;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; u32NbClkTicks = (SWT_KU32_WATCHDOG_CLOCK_FREQ / (uint32_t)1000) * u32WindowStartValue;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SWT.WN.R = u32NbClkTicks;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; u32TmpCR &amp;amp;= ~SWT_KU32_CR_WND;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Set action to be taken when watchdog timeout occurs */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(SWT_KE_ACTION_INTERRUPT_THEN_RESET == eAction)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; u32TmpCR |= SWT_KU32_CR_ITR;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; u32TmpCR &amp;amp;= ~SWT_KU32_CR_ITR;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Watchdog counter stop in debug mode, enable access by z6 core, enable watchdog and&amp;nbsp; hardware lock bit */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; u32TmpCR |= (&amp;nbsp;&amp;nbsp; SWT_KU32_CR_FRZ&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | SWT_KU32_CR_MAP0&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | SWT_KU32_CR_HLK&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | SWT_KU32_CR_WEN);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Set timeout value */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; u32NbClkTicks = (SWT_KU32_WATCHDOG_CLOCK_FREQ / (uint32_t)1000) * u32Timeout;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SWT.TO.R = u32NbClkTicks;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Update control register */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SWT.CR.R = u32TmpCR;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Here is what I do in my init task:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;printf("init\n");&lt;BR /&gt;_int_install_exception_isr();&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* Initialize and start watchdog */&lt;BR /&gt;SWT_Init(SWT_KE_MODE_REGULAR, SWT_KE_ACTION_INTERRUPT_THEN_RESET, (uint32_t)200, (uint32_t)0, HandleWatchdogTimeout);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Here is my ISR function:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;void HandleWatchdogTimeout(uint32_t u32IsrVector, uint32_t u32ExceptionVector, void * pvIsrData, void * pvExceptionFrame)&lt;BR /&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf("u32IsrVector: %d\nu32ExceptionVector: %d\n", u32IsrVector, u32ExceptionVector);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for(;;){}&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I've also tried to setup a simple ISR function with _int_install_isr() but it doesn't work better. Does anyone has an idea of what the problem could be?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks&lt;/P&gt;&lt;P&gt;Hugo&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 03 Nov 2016 15:46:38 GMT</pubDate>
    <dc:creator>hbouch</dc:creator>
    <dc:date>2016-11-03T15:46:38Z</dc:date>
    <item>
      <title>SWT interrupt with MQX</title>
      <link>https://community.nxp.com/t5/MQX-Software-Solutions/SWT-interrupt-with-MQX/m-p/629741#M16958</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;I want to setup a watchdog but I don't want to use MQX watchdog. I rather use SWT watchdog from the microcontroller (MPC5668G). By the way, I'm using MQX 4.1.1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Here is the init function to setup the watchdog. As you can see, I've setup the watchdog to interrupt first and then reset on second consecutive timeout. However, even if a watchdog timer timeout occurs, the ISR is never called.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/*==============================================================================&lt;BR /&gt;&amp;nbsp;* Function name: SWT_Init&lt;BR /&gt;&amp;nbsp;* Description:&amp;nbsp;&amp;nbsp; This function initializes the Software Watchdog Timer.&lt;BR /&gt;&amp;nbsp;* Inputs:&lt;BR /&gt;&amp;nbsp;*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; eMode -&amp;gt; Watchdog refresh mode (normal, window)&lt;BR /&gt;&amp;nbsp;*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; eAction -&amp;gt; Action to be taken when watchdog timeout occurs&lt;BR /&gt;&amp;nbsp;*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; u32Timeout -&amp;gt; Watchdog timeout in ms&lt;BR /&gt;&amp;nbsp;*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; u32WindowStartValue -&amp;gt; Value after which watchdog should be refreshed if&lt;BR /&gt;&amp;nbsp;*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; window mode is used (ignored in normal mode) in ms&lt;BR /&gt;&amp;nbsp;*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pfIsr -&amp;gt; Function that will be call upon watchdog timeout&lt;BR /&gt;&amp;nbsp;* Outputs:&lt;BR /&gt;&amp;nbsp;*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; None&lt;BR /&gt;==============================================================================*/&lt;BR /&gt;void SWT_Init(SWT_eWatchdogMode eMode, SWT_eWatchdogAction eAction, uint32_t u32Timeout, uint32_t u32WindowStartValue, INT_EXCEPTION_FPTR pfIsr)&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; uint32_t u32NbClkTicks;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; vuint32_t u32TmpTCR;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; vuint32_t u32TmpCR;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Clear any pending interrupt */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SWT.IR.B.TIF = (vuint32_t)1;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Install interrupt function to be called */&lt;BR /&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp; _int_install_isr(PSP_EXCPT_WATCHDOG_TIMER, pfIsr, NULL);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; _int_set_exception_handler(PSP_EXCPT_WATCHDOG_TIMER, pfIsr);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Enable watchdog interrupt */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; _PSP_SPR_GET(u32TmpTCR, E200CORE_TCR);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; u32TmpTCR |= E200CORE_TCR_WIE;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; _PSP_SPR_SET(E200CORE_TCR, u32TmpTCR);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Set watchdog mode */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(SWT_KE_MODE_WINDOW == eMode)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; u32TmpCR |= SWT_KU32_CR_WND;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; u32NbClkTicks = (SWT_KU32_WATCHDOG_CLOCK_FREQ / (uint32_t)1000) * u32WindowStartValue;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SWT.WN.R = u32NbClkTicks;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; u32TmpCR &amp;amp;= ~SWT_KU32_CR_WND;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Set action to be taken when watchdog timeout occurs */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(SWT_KE_ACTION_INTERRUPT_THEN_RESET == eAction)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; u32TmpCR |= SWT_KU32_CR_ITR;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; u32TmpCR &amp;amp;= ~SWT_KU32_CR_ITR;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Watchdog counter stop in debug mode, enable access by z6 core, enable watchdog and&amp;nbsp; hardware lock bit */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; u32TmpCR |= (&amp;nbsp;&amp;nbsp; SWT_KU32_CR_FRZ&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | SWT_KU32_CR_MAP0&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | SWT_KU32_CR_HLK&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | SWT_KU32_CR_WEN);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Set timeout value */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; u32NbClkTicks = (SWT_KU32_WATCHDOG_CLOCK_FREQ / (uint32_t)1000) * u32Timeout;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SWT.TO.R = u32NbClkTicks;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Update control register */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SWT.CR.R = u32TmpCR;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Here is what I do in my init task:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;printf("init\n");&lt;BR /&gt;_int_install_exception_isr();&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* Initialize and start watchdog */&lt;BR /&gt;SWT_Init(SWT_KE_MODE_REGULAR, SWT_KE_ACTION_INTERRUPT_THEN_RESET, (uint32_t)200, (uint32_t)0, HandleWatchdogTimeout);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Here is my ISR function:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;void HandleWatchdogTimeout(uint32_t u32IsrVector, uint32_t u32ExceptionVector, void * pvIsrData, void * pvExceptionFrame)&lt;BR /&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf("u32IsrVector: %d\nu32ExceptionVector: %d\n", u32IsrVector, u32ExceptionVector);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for(;;){}&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I've also tried to setup a simple ISR function with _int_install_isr() but it doesn't work better. Does anyone has an idea of what the problem could be?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks&lt;/P&gt;&lt;P&gt;Hugo&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 03 Nov 2016 15:46:38 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MQX-Software-Solutions/SWT-interrupt-with-MQX/m-p/629741#M16958</guid>
      <dc:creator>hbouch</dc:creator>
      <dc:date>2016-11-03T15:46:38Z</dc:date>
    </item>
    <item>
      <title>Re: SWT interrupt with MQX</title>
      <link>https://community.nxp.com/t5/MQX-Software-Solutions/SWT-interrupt-with-MQX/m-p/629742#M16959</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Hugo:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;From MQX point of view,&amp;nbsp; installing application-defined ISR, we need to&lt;/P&gt;&lt;P&gt;1&amp;nbsp; _int_install_isr , this function replace the ISR with an application-defined, interrupt-specific ISR, which MQX RTOS calls, when the interrupt occurs. The application should do the replacement before it initializes the device&lt;/P&gt;&lt;P&gt;2&amp;nbsp;&amp;nbsp; _bsp_int_init ,&amp;nbsp;&amp;nbsp;&amp;nbsp; it initializes a specific interrupt in the proper interrupt controller, set the priority of the interrupt&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;Daniel&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 09 Nov 2016 10:27:15 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MQX-Software-Solutions/SWT-interrupt-with-MQX/m-p/629742#M16959</guid>
      <dc:creator>danielchen</dc:creator>
      <dc:date>2016-11-09T10:27:15Z</dc:date>
    </item>
    <item>
      <title>Re: SWT interrupt with MQX</title>
      <link>https://community.nxp.com/t5/MQX-Software-Solutions/SWT-interrupt-with-MQX/m-p/629743#M16960</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;The interrupt flag (TSR[WIS] = 1) also need to be cleared during initialization.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The critical interrupt should be enabled (MSR[CE] = 1). In MQX it is already the case.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The proper interrupt has to be setup:&lt;/P&gt;&lt;P&gt;/* Install interrupt function to be called */&lt;BR /&gt;_int_install_isr(MPXN20_INTC_SWT_TIMEOUT_VECTOR, pfIsr, NULL);&lt;BR /&gt;_bsp_int_init(MPXN20_INTC_SWT_TIMEOUT_VECTOR, 15, 0, TRUE);&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 15 Nov 2016 15:45:37 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MQX-Software-Solutions/SWT-interrupt-with-MQX/m-p/629743#M16960</guid>
      <dc:creator>hbouch</dc:creator>
      <dc:date>2016-11-15T15:45:37Z</dc:date>
    </item>
  </channel>
</rss>

