<?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>ColdFire/68K Microcontrollers and ProcessorsのトピックRe: Watchdog for MCF52235 - Cannot turn it on</title>
    <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Watchdog-for-MCF52235-Cannot-turn-it-on/m-p/140305#M2302</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;Solved my own issue.&amp;nbsp; I've not had much luck with receiving help from this forum in a timely manner &lt;IMG alt=":smileysad:" class="emoticon emoticon-smileysad" id="smileysad" src="http://freescale.i.lithium.com/i/smilies/16x16_smiley-sad.gif" title="Smiley Sad" /&gt;.&amp;nbsp; In case this helps someone else, here is what works for me.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;This is the init from mcf5223_sysinit.c&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;void&lt;BR /&gt;mcf5223_wtm_init(void)&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;//&lt;BR /&gt;&amp;nbsp;// Enable Software Watchdog Timer - Timing 2^23 * Bus Freq&lt;BR /&gt;&amp;nbsp;//&lt;BR /&gt;&amp;nbsp;// WatchDog Service Routine&lt;BR /&gt;&amp;nbsp;MCF_SCM_CWSR = 0x55;&lt;BR /&gt;&amp;nbsp;MCF_SCM_CWSR = 0xAA;&lt;BR /&gt;&amp;nbsp;// Set Watchdog Timing Delay&lt;BR /&gt;&amp;nbsp;// 6 = 2^27 * Bus Clock Frequency (60MHz) = 2.23 Seconds&lt;BR /&gt;&amp;nbsp;MCF_SCM_CWCR = &amp;nbsp;MCF_SCM_CWCR_CWT(6);&lt;BR /&gt;&amp;nbsp;// Enable Watchdog&lt;BR /&gt;&amp;nbsp;MCF_SCM_CWCR |=&amp;nbsp;MCF_SCM_CWCR_CWE;&lt;BR /&gt;&amp;nbsp;// WatchDog Service Routine&lt;BR /&gt;&amp;nbsp;MCF_SCM_CWSR = 0x55;&lt;BR /&gt;&amp;nbsp;MCF_SCM_CWSR = 0xAA;&lt;BR /&gt;&amp;nbsp;// Wait to Hook ISR&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Moved the ISR Hook to the init function of a FreeRTOS task for the project which executes much later:&lt;/DIV&gt;&lt;DIV&gt;&lt;BR /&gt;&amp;nbsp;//Hook Watchdog ISR to Interrupt&lt;BR /&gt;&amp;nbsp;MCF_INTC0_ICR8&amp;nbsp; =&amp;nbsp; MCF_INTC_ICR_IP(7) | MCF_INTC_ICR_IL(3);&lt;BR /&gt;&amp;nbsp;MCF_INTC0_IMRL&amp;nbsp;&amp;amp;=&amp;nbsp;~(MCF_INTC_IMRL_MASK8);&lt;BR /&gt;&amp;nbsp;Csa_watchdog_is_ready = 1;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Serviced the Watchdog by waking a task after 1 sec within the system clock ISR:&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;__declspec(interrupt)&lt;BR /&gt;void&lt;BR /&gt;timer_isr()&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;++timer_ticks;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&amp;nbsp;if (++timerct &amp;gt;= INTS_PER_CTICK)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cticks++;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (Csa_watchdog_is_ready)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(!(--Csa_wdog_timer_cnt))&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&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;Csa_wdog_timer_cnt = CSA_WDOG_CNT;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CsaProcessList |= CSA_WATCHDOG_PROCESS;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TK_WAKE(&amp;amp;to_csa);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;The Task that services the ISR:&lt;BR /&gt;void csa_watchdog_process(void)&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;MCF_SCM_CWSR = 0x55;&lt;BR /&gt;&amp;nbsp;MCF_SCM_CWSR = 0xAA;&lt;BR /&gt;&amp;nbsp;//printf("watchdog ");&lt;BR /&gt;&amp;nbsp;CsaProcessList &amp;amp;= ~CSA_WATCHDOG_PROCESS;&lt;BR /&gt;}&lt;BR /&gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 20 Dec 2006 00:48:31 GMT</pubDate>
    <dc:creator>paynete</dc:creator>
    <dc:date>2006-12-20T00:48:31Z</dc:date>
    <item>
      <title>Watchdog for MCF52235 - Cannot turn it on</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Watchdog-for-MCF52235-Cannot-turn-it-on/m-p/140304#M2301</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;Working with ColdFire_Lite Tcp Stack.&amp;nbsp; Having an issue with unresponsive TCP or general lockup.&amp;nbsp; Thought I would enable watchdog.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Changed mcf5223_wtm_init in mcf5223_sysinit.c to turn on Watchdog.&lt;/DIV&gt;&lt;DIV&gt;void mcf5223_wtm_init(void)&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;/*&lt;BR /&gt;&amp;nbsp;* Enable Software Watchdog Timer - Timing 2^23 * Bus Freq&lt;BR /&gt;&amp;nbsp;*/&lt;BR /&gt;&amp;nbsp;MCF_SCM_CWCR = &amp;nbsp;MCF_SCM_CWCR_CWT(5) &amp;nbsp;|&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MCF_SCM_CWCR_CWE&amp;nbsp;&amp;nbsp;|&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MCF_SCM_CWCR_CWTA&amp;nbsp;&amp;nbsp;|&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MCF_SCM_CWCR_CWTAVAL&amp;nbsp;|&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MCF_SCM_CWCR_CWTIC&amp;nbsp;&amp;nbsp;;&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;&lt;BR /&gt;&amp;nbsp;MCF_INTC0_ICR8&amp;nbsp; =&amp;nbsp; MCF_INTC_ICR_IL(2);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;MCF_INTC0_IMRL&amp;nbsp;&amp;amp;=&amp;nbsp;~(MCF_INTC_IMRL_MASK8);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;MCF_SCM_CWSR = 0x55;&lt;BR /&gt;&amp;nbsp;MCF_SCM_CWSR = 0xAA;&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Tried without setting&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CWTA,&amp;nbsp; CWTAVAL,&amp;nbsp;&amp;nbsp;&amp;amp; CWTIC&amp;nbsp; also.&lt;BR /&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Added _watchdog_handler to mcf5223_vectors.s as .extern and to vector48:&lt;BR /&gt;&amp;nbsp;.extern _watchdog_handler&lt;BR /&gt;vector48:&amp;nbsp;.long &amp;nbsp;_watchdog_handler //_irq_handler&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Added&amp;nbsp; watchdog_handler to Int_handlers.c to perform soft reset&lt;/DIV&gt;&lt;DIV&gt;__interrupt__&lt;BR /&gt;void watchdog_handler (void)&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;mcf5xxx_irq_disable();&lt;BR /&gt;&amp;nbsp;MCF_CIM_RCR |= MCF_CIM_RCR_SOFTRST;&amp;nbsp; //TEP Software Reset ***********************&amp;nbsp;&lt;BR /&gt;}&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Purposely did not service the CWSR on a periodic basis for test.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;What am I doing wrong.&lt;BR /&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 16 Dec 2006 00:02:06 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Watchdog-for-MCF52235-Cannot-turn-it-on/m-p/140304#M2301</guid>
      <dc:creator>paynete</dc:creator>
      <dc:date>2006-12-16T00:02:06Z</dc:date>
    </item>
    <item>
      <title>Re: Watchdog for MCF52235 - Cannot turn it on</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Watchdog-for-MCF52235-Cannot-turn-it-on/m-p/140305#M2302</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;Solved my own issue.&amp;nbsp; I've not had much luck with receiving help from this forum in a timely manner &lt;IMG alt=":smileysad:" class="emoticon emoticon-smileysad" id="smileysad" src="http://freescale.i.lithium.com/i/smilies/16x16_smiley-sad.gif" title="Smiley Sad" /&gt;.&amp;nbsp; In case this helps someone else, here is what works for me.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;This is the init from mcf5223_sysinit.c&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;void&lt;BR /&gt;mcf5223_wtm_init(void)&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;//&lt;BR /&gt;&amp;nbsp;// Enable Software Watchdog Timer - Timing 2^23 * Bus Freq&lt;BR /&gt;&amp;nbsp;//&lt;BR /&gt;&amp;nbsp;// WatchDog Service Routine&lt;BR /&gt;&amp;nbsp;MCF_SCM_CWSR = 0x55;&lt;BR /&gt;&amp;nbsp;MCF_SCM_CWSR = 0xAA;&lt;BR /&gt;&amp;nbsp;// Set Watchdog Timing Delay&lt;BR /&gt;&amp;nbsp;// 6 = 2^27 * Bus Clock Frequency (60MHz) = 2.23 Seconds&lt;BR /&gt;&amp;nbsp;MCF_SCM_CWCR = &amp;nbsp;MCF_SCM_CWCR_CWT(6);&lt;BR /&gt;&amp;nbsp;// Enable Watchdog&lt;BR /&gt;&amp;nbsp;MCF_SCM_CWCR |=&amp;nbsp;MCF_SCM_CWCR_CWE;&lt;BR /&gt;&amp;nbsp;// WatchDog Service Routine&lt;BR /&gt;&amp;nbsp;MCF_SCM_CWSR = 0x55;&lt;BR /&gt;&amp;nbsp;MCF_SCM_CWSR = 0xAA;&lt;BR /&gt;&amp;nbsp;// Wait to Hook ISR&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Moved the ISR Hook to the init function of a FreeRTOS task for the project which executes much later:&lt;/DIV&gt;&lt;DIV&gt;&lt;BR /&gt;&amp;nbsp;//Hook Watchdog ISR to Interrupt&lt;BR /&gt;&amp;nbsp;MCF_INTC0_ICR8&amp;nbsp; =&amp;nbsp; MCF_INTC_ICR_IP(7) | MCF_INTC_ICR_IL(3);&lt;BR /&gt;&amp;nbsp;MCF_INTC0_IMRL&amp;nbsp;&amp;amp;=&amp;nbsp;~(MCF_INTC_IMRL_MASK8);&lt;BR /&gt;&amp;nbsp;Csa_watchdog_is_ready = 1;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Serviced the Watchdog by waking a task after 1 sec within the system clock ISR:&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;__declspec(interrupt)&lt;BR /&gt;void&lt;BR /&gt;timer_isr()&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;++timer_ticks;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&amp;nbsp;if (++timerct &amp;gt;= INTS_PER_CTICK)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cticks++;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (Csa_watchdog_is_ready)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(!(--Csa_wdog_timer_cnt))&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&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;Csa_wdog_timer_cnt = CSA_WDOG_CNT;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CsaProcessList |= CSA_WATCHDOG_PROCESS;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TK_WAKE(&amp;amp;to_csa);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;The Task that services the ISR:&lt;BR /&gt;void csa_watchdog_process(void)&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;MCF_SCM_CWSR = 0x55;&lt;BR /&gt;&amp;nbsp;MCF_SCM_CWSR = 0xAA;&lt;BR /&gt;&amp;nbsp;//printf("watchdog ");&lt;BR /&gt;&amp;nbsp;CsaProcessList &amp;amp;= ~CSA_WATCHDOG_PROCESS;&lt;BR /&gt;}&lt;BR /&gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 20 Dec 2006 00:48:31 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Watchdog-for-MCF52235-Cannot-turn-it-on/m-p/140305#M2302</guid>
      <dc:creator>paynete</dc:creator>
      <dc:date>2006-12-20T00:48:31Z</dc:date>
    </item>
  </channel>
</rss>

