<?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 Re: K70 Watchdog does NOT reset some times.  in Kinetis Microcontrollers</title>
    <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/K70-Watchdog-does-NOT-reset-some-times/m-p/429949#M24840</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I have tried this both with the LPO and the Bus Clock. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Also the above is just a sample. In the actual application the watchdog_refreshes are about 300ms apart. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;And finally my problem is not missing refreshes, but missing resets. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;With a great deal of effort I now have something that appears to work. &lt;/P&gt;&lt;P&gt;Though I can not tell what exactly fixed it. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;What I have done is:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;In addition to refreshing the WatchDog, I am validating many of the watchdog registers at the top of my 300ms loop. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I am validating that the watchdog is enabled, &lt;/P&gt;&lt;P&gt;that the current count is not 0, that it is lower than the timeout value, that after delaying for 10ms the watchdog counter has incremented, &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If any of my tests fail - I reinitialize the watchdog and test again. &lt;/P&gt;&lt;P&gt;If it fails a 2nd time I reset the system myself. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;With all of the above I am getting the watchdog to trigger every time I forceably lock up the system - and that was not happening before. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;And with my actual application I am getting 8 units on a test bench to run through a weekend, and the wathcdog is reseting them when the application code "locks up"&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Mon, 02 Nov 2015 20:01:16 GMT</pubDate>
    <dc:creator>asmith</dc:creator>
    <dc:date>2015-11-02T20:01:16Z</dc:date>
    <item>
      <title>K70 Watchdog does NOT reset some times.</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/K70-Watchdog-does-NOT-reset-some-times/m-p/429947#M24838</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I am trying to impliment/Test the watchdog on a K70. &lt;/P&gt;&lt;P&gt;Code below. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I am getting the opposite problem most everyone else sees. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;About 2/3 of the time the Watchog fires and restarts the system and I can verify that the WDOG_RSTCNT has incremented. &lt;/P&gt;&lt;P&gt;About 1/3 of the time the K70 hangs at while(1); forever. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static void&lt;/P&gt;&lt;P&gt;watchdog_unlock(void) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* unlock watchdog */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; WDOG_UNLOCK = WDOG_UNLOCK_WDOGUNLOCK(0xC520); /* Key 1 */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; WDOG_UNLOCK = WDOG_UNLOCK_WDOGUNLOCK(0xD928); /* Key 2 */&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static void&lt;/P&gt;&lt;P&gt;watchdog_delay(uint16_t nCount) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; uint16_t delay = 0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (delay=0;delay&amp;lt;nCount*10;delay++) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NULL;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static void&lt;/P&gt;&lt;P&gt;watchdog_refresh(void) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; _int_disable();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; WDOG_REFRESH = 0xA602;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; WDOG_REFRESH = 0xB480;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; _int_enable();&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static uint32_t wdog_to = 125*2;&lt;/P&gt;&lt;P&gt;void&lt;/P&gt;&lt;P&gt;OS_WatchdogInitialize(void) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; _int_disable();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; watchdog_unlock();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; watchdog_delay(1);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; WDOG_TOVALH = wdog_to &amp;gt;&amp;gt; 16;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; WDOG_TOVALL = wdog_to &amp;amp; 0xffff;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; WDOG_STCTRLH = WDOG_STCTRLH_DISTESTWDOG_MASK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Disable functional test&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | WDOG_STCTRLH_WDOGEN_MASK;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 14 DISTESTWDOG&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 12:13 BYTESEL&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 11 TESTSEL&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 10 TESTWDOG&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 7 1 WAIT_EN = 0&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 6 1 STOP_EN = 0&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 5 0 DBG_EN = 0&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 4 1 ALLOWUPDATE = 1&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 3 0 WINEN = 0&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 2 0 IRQSTEN = 0&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 1 1 CLKSRC = 0&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 0 1 WDOGEN = 0&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; WDOG_WINL = WDOG_WINH = 0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; WDOG_PRESC = 0x700;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; _int_enable();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; _time_delay(4);&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;void watchdog_test() {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; int lc = 0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; OS_WatchdogInitialize();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; while (1) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; watchdog_refresh();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (lc++ &amp;gt; 150) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while(1);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&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;&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;&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;&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;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 64,1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Bot&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 26 Oct 2015 18:21:01 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/K70-Watchdog-does-NOT-reset-some-times/m-p/429947#M24838</guid>
      <dc:creator>asmith</dc:creator>
      <dc:date>2015-10-26T18:21:01Z</dc:date>
    </item>
    <item>
      <title>Re: K70 Watchdog does NOT reset some times.</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/K70-Watchdog-does-NOT-reset-some-times/m-p/429948#M24839</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello David Lynch:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Since you are configuring the LPO as watchdog clock source, then I think you are refreshing the watchdog too fast. The thread in the next link is a long discussion but the bottom line is that you need to wait for the refresh to take effect within the Watchdog clock domain:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="https://community.nxp.com/message/354895"&gt;WDOG ignoring refresh when using LPO clock&lt;/A&gt; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;So the recommendation is to wait at least 4 WDOG clock cycles before refreshing again.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards!&lt;BR /&gt;Jorge Gonzalez&lt;/P&gt;&lt;P&gt;-----------------------------------------------------------------------------------------------------------------------&lt;/P&gt;&lt;P&gt;Note: If this post answers your question, please click the Correct Answer button. Thank you!&lt;/P&gt;&lt;P&gt;-----------------------------------------------------------------------------------------------------------------------&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 01 Nov 2015 02:40:43 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/K70-Watchdog-does-NOT-reset-some-times/m-p/429948#M24839</guid>
      <dc:creator>Jorge_Gonzalez</dc:creator>
      <dc:date>2015-11-01T02:40:43Z</dc:date>
    </item>
    <item>
      <title>Re: K70 Watchdog does NOT reset some times.</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/K70-Watchdog-does-NOT-reset-some-times/m-p/429949#M24840</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I have tried this both with the LPO and the Bus Clock. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Also the above is just a sample. In the actual application the watchdog_refreshes are about 300ms apart. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;And finally my problem is not missing refreshes, but missing resets. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;With a great deal of effort I now have something that appears to work. &lt;/P&gt;&lt;P&gt;Though I can not tell what exactly fixed it. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;What I have done is:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;In addition to refreshing the WatchDog, I am validating many of the watchdog registers at the top of my 300ms loop. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I am validating that the watchdog is enabled, &lt;/P&gt;&lt;P&gt;that the current count is not 0, that it is lower than the timeout value, that after delaying for 10ms the watchdog counter has incremented, &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If any of my tests fail - I reinitialize the watchdog and test again. &lt;/P&gt;&lt;P&gt;If it fails a 2nd time I reset the system myself. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;With all of the above I am getting the watchdog to trigger every time I forceably lock up the system - and that was not happening before. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;And with my actual application I am getting 8 units on a test bench to run through a weekend, and the wathcdog is reseting them when the application code "locks up"&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 02 Nov 2015 20:01:16 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/K70-Watchdog-does-NOT-reset-some-times/m-p/429949#M24840</guid>
      <dc:creator>asmith</dc:creator>
      <dc:date>2015-11-02T20:01:16Z</dc:date>
    </item>
    <item>
      <title>Re: K70 Watchdog does NOT reset some times.</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/K70-Watchdog-does-NOT-reset-some-times/m-p/429950#M24841</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I have tried with both the LPO and Bus clocks. &lt;/P&gt;&lt;P&gt;Getting the delays correct appears to be critical. &lt;/P&gt;&lt;P&gt;Though even that is not enough. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regardless, or which I uses I end up with situations where on some restart cycles the WDOG fails to properly initialize. &lt;/P&gt;&lt;P&gt;Sometimes re-initializing fixes that, &lt;/P&gt;&lt;P&gt;Others it does not. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I can not incorporate the HW WDOG into our product unless it is robust. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have worked with other HW WDOG's, the one in the K70 is the most difficult I have had to work with. &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 20 Nov 2015 18:23:37 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/K70-Watchdog-does-NOT-reset-some-times/m-p/429950#M24841</guid>
      <dc:creator>asmith</dc:creator>
      <dc:date>2015-11-20T18:23:37Z</dc:date>
    </item>
  </channel>
</rss>

