<?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>S12 / MagniV Microcontrollers中的主题 MC9S12D64 - Restart Cause</title>
    <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/MC9S12D64-Restart-Cause/m-p/140673#M3140</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt; &lt;/DIV&gt;&lt;DIV&gt; &lt;/DIV&gt;&lt;DIV&gt;Hi,&lt;/DIV&gt;&lt;DIV&gt;For MC9S12D64, can I understand the restart cause of microcontroller by using microcontroller hardware (which one of them : normal power up - master clear reset - watchdog reset).&lt;/DIV&gt;&lt;DIV&gt;Thanks...&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;--&lt;BR /&gt;Alban Edit: FSL Part Number must figure in Message Subject line.&lt;/SPAN&gt;&lt;BR /&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Message Edited by Alban on &lt;/SPAN&gt;&lt;SPAN class="date_text"&gt;2007-07-21&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN class="time_text"&gt;07:54 PM&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 20 Jul 2007 17:48:13 GMT</pubDate>
    <dc:creator>BFS</dc:creator>
    <dc:date>2007-07-20T17:48:13Z</dc:date>
    <item>
      <title>MC9S12D64 - Restart Cause</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/MC9S12D64-Restart-Cause/m-p/140673#M3140</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt; &lt;/DIV&gt;&lt;DIV&gt; &lt;/DIV&gt;&lt;DIV&gt;Hi,&lt;/DIV&gt;&lt;DIV&gt;For MC9S12D64, can I understand the restart cause of microcontroller by using microcontroller hardware (which one of them : normal power up - master clear reset - watchdog reset).&lt;/DIV&gt;&lt;DIV&gt;Thanks...&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;--&lt;BR /&gt;Alban Edit: FSL Part Number must figure in Message Subject line.&lt;/SPAN&gt;&lt;BR /&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Message Edited by Alban on &lt;/SPAN&gt;&lt;SPAN class="date_text"&gt;2007-07-21&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN class="time_text"&gt;07:54 PM&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 20 Jul 2007 17:48:13 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/MC9S12D64-Restart-Cause/m-p/140673#M3140</guid>
      <dc:creator>BFS</dc:creator>
      <dc:date>2007-07-20T17:48:13Z</dc:date>
    </item>
    <item>
      <title>Re: Restart Cause</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/MC9S12D64-Restart-Cause/m-p/140674#M3141</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;Hi, I use the C32 chip and have just recently been trying to learn the resets. There should be a page in the manual early on about where resets go in physical memory. The power up and hardware resets go to 0xFFFE and the watchdog goes to 0xFFFC on my chip. Check chapter 1 of your manual for "resets" or "vectors". The way I implemented it in code is in the Startup.c file that Codewarrior provides that does all initilizations, I have this code&lt;BR /&gt;&lt;BR /&gt;VECTOR 0 _Startup&lt;BR /&gt;VECTOR 2 _Startup&lt;BR /&gt;&lt;BR /&gt;This restarts my program on a hardware reset and a watchdog reset. I'm not exactly sure of the definitions, so hopefully another freescaler can explain in more detail.&lt;BR /&gt;&lt;BR /&gt;Message Edited by Shugie on &lt;SPAN class="date_text"&gt;2007-07-20&lt;/SPAN&gt; &lt;SPAN class="time_text"&gt;09:39 AM&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 20 Jul 2007 23:39:15 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/MC9S12D64-Restart-Cause/m-p/140674#M3141</guid>
      <dc:creator>Shugie</dc:creator>
      <dc:date>2007-07-20T23:39:15Z</dc:date>
    </item>
    <item>
      <title>Re: Restart Cause</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/MC9S12D64-Restart-Cause/m-p/140675#M3142</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;&lt;STRONG&gt;Power up&lt;/STRONG&gt;&amp;nbsp; vs&amp;nbsp; &lt;STRONG&gt;/RESET pin reset&lt;/STRONG&gt; can be distinguished using PORF bit ( CRGFLG register, CRG module). Power up makes PORF&amp;nbsp;this bit. And you clear it. So immediately after reset&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;1) you read PORF bit value. '1' means power up reset, '0' - not power up reset.&lt;BR /&gt;2) you have to clear PORF bit by writing '1' to it.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;BR /&gt;&lt;STRONG&gt;COP reset&lt;/STRONG&gt; , &lt;STRONG&gt;CME reset&lt;/STRONG&gt; and all other resets (/RESET pin reset&amp;nbsp;and power on reset) use 3 different reset vectors. So to make it different, all these 3 vectors should point do different entry points. If you are coding in C then you could write 3 functions (entry points) that could pass different value of reset type to common startup function. Somethink like this:&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;enum {&amp;nbsp; PONRESET, EXTERNRESET, COPRESET, CMERESET };&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;mainreset()&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&amp;nbsp; init_stack_pointer;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // is PORF set?&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&amp;nbsp; if(CRGFLG &amp;amp; 0x40)&amp;nbsp; startup(PONRESET);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&amp;nbsp; else&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; startup(EXTERNRESET);&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;copreset()&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&lt;DIV&gt;&amp;nbsp;&amp;nbsp; init_stack_pointer;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&amp;nbsp; startup(COPRESET);&lt;/DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;cmereset()&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&lt;DIV&gt;&amp;nbsp;&amp;nbsp; init_stack_pointer;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&amp;nbsp; startup(CMERESET);&lt;/DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;startup(int resettype)&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&amp;nbsp; CRGFLG &amp;amp;= 0x40;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; ...&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Note that&amp;nbsp;to make CME and COP reset vectors&amp;nbsp;working you should have proper circuit on /RESET pin. See chapter CRG Block User Guide,&amp;nbsp;&amp;nbsp;5.2 Description of Reset Operation for details.&amp;nbsp; In short, on reset MCU drives /RESET pin low, then, after few cycles, MCU samples /RESET pin to make sure&amp;nbsp;was it external reset or internal reset. So you can't&amp;nbsp;have large cap on /RESET pin. Also you shouldn't use something like DS1813 for brown-out protection. If you do so&amp;nbsp;then &amp;nbsp;MCU will be sort of unable to fetch COP or CME vectors.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 21 Jul 2007 01:10:08 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/MC9S12D64-Restart-Cause/m-p/140675#M3142</guid>
      <dc:creator>kef</dc:creator>
      <dc:date>2007-07-21T01:10:08Z</dc:date>
    </item>
    <item>
      <title>Re: Restart Cause</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/MC9S12D64-Restart-Cause/m-p/140676#M3143</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;Rereading your message I think I missed what I was trying to say. Those VECTOR definitions go to various functions, so if you wanted to you could do&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;VECTOR 0 Function1&lt;BR /&gt;VECTOR 2 Function2&lt;BR /&gt;&lt;BR /&gt;Have the functions do their debugging stuff and then have them call your main program loop. I hope this is more helpful.&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 21 Jul 2007 04:02:56 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/MC9S12D64-Restart-Cause/m-p/140676#M3143</guid>
      <dc:creator>Shugie</dc:creator>
      <dc:date>2007-07-21T04:02:56Z</dc:date>
    </item>
    <item>
      <title>Re: Restart Cause</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/MC9S12D64-Restart-Cause/m-p/140677#M3144</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;Thanks for replies. They were vey helpful.&lt;/DIV&gt;&lt;DIV&gt;BFS&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 23 Jul 2007 22:19:16 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/MC9S12D64-Restart-Cause/m-p/140677#M3144</guid>
      <dc:creator>BFS</dc:creator>
      <dc:date>2007-07-23T22:19:16Z</dc:date>
    </item>
  </channel>
</rss>

