<?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 Write EEPROM</title>
    <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/MC9s12D64-Write-EEPROM/m-p/152665#M4433</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hi,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;I try to save value in my EEPROM. My µ is a MC9S12D64 with oscl 16Mhz.&lt;BR /&gt;I use the function progEeprom from AN2204.&lt;BR /&gt;After a power down power up, my saved value have changed.&lt;BR /&gt;&lt;BR /&gt;With the help of my debugger (NoICE12), I find that ESTAT register never change.&lt;BR /&gt;The value of ESTAT is always 0xC1&lt;SPAN&gt;&lt;A href="http://freescale.i.lithium.com/i/smilies/16x16_smiley-mad.gif" rel="nofollow noopener noreferrer noopener noreferrer" target="_blank"&gt;&lt;IMG alt=":smileymad:" class="emoticon-smileymad emoticon" src="http://freescale.i.lithium.com/i/smilies/16x16_smiley-mad.gif" title="Smiley Mad" /&gt;&lt;/A&gt;&lt;/SPAN&gt;.&lt;BR /&gt;&lt;BR /&gt;According to AN2400, after ESTAT = CBEIF ,&amp;nbsp; ESTAT must be equal to 0x00.&lt;BR /&gt;&lt;BR /&gt;Any Idea?&lt;BR /&gt;&lt;BR /&gt;Regards&lt;BR /&gt;&lt;/BLOCKQUOTE&gt;&lt;DIV&gt;&lt;DIV class="msg_source_code"&gt;&lt;DIV class="text_smallest"&gt;Code:&lt;/DIV&gt;&lt;PRE&gt;UINT8 ProgEeprom(UINT16* progAdr, UINT16* bufferPtr) { if(((UINT16)progAdr &amp;amp; ALIGNED_WORD_MASK) != 0)&amp;nbsp;&amp;nbsp;&amp;nbsp; // Check for aligned word&amp;nbsp;&amp;nbsp; {&amp;nbsp; return(FAIL);&amp;nbsp; } ESTAT = (ACCERR | PVIOL);// Clear error flags&amp;nbsp;&amp;nbsp;&amp;nbsp; if( (ESTAT &amp;amp; CBEIF) == CBEIF)// Is command buffer empty–&amp;nbsp;&amp;nbsp; {&amp;nbsp; *progAdr++ = *bufferPtr++;// Latch data and address&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ECMD = PROG;// Configure prog command&amp;nbsp;&amp;nbsp; ESTAT = CBEIF;// Launch the command&amp;nbsp;&amp;nbsp; if(( (ESTAT &amp;amp; ACCERR)&amp;nbsp; == ACCERR) ||&amp;nbsp;&amp;nbsp;&amp;nbsp; ((ESTAT &amp;amp; PVIOL) == PVIOL))// Was the access error flag set, violation error flags set ˜&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&amp;nbsp;&amp;nbsp; return(FAIL);&amp;nbsp;&amp;nbsp; }&amp;nbsp; while( (ESTAT &amp;amp; CCIF) != CCIF)// Wait for last command to finish&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; return(PASS);&amp;nbsp; } else&amp;nbsp; {&amp;nbsp; return(FAIL);&amp;nbsp; }&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/PRE&gt;&lt;/DIV&gt;&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt; &lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 29 Oct 2020 08:56:15 GMT</pubDate>
    <dc:creator>topchair</dc:creator>
    <dc:date>2020-10-29T08:56:15Z</dc:date>
    <item>
      <title>MC9s12D64 Write EEPROM</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/MC9s12D64-Write-EEPROM/m-p/152665#M4433</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hi,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;I try to save value in my EEPROM. My µ is a MC9S12D64 with oscl 16Mhz.&lt;BR /&gt;I use the function progEeprom from AN2204.&lt;BR /&gt;After a power down power up, my saved value have changed.&lt;BR /&gt;&lt;BR /&gt;With the help of my debugger (NoICE12), I find that ESTAT register never change.&lt;BR /&gt;The value of ESTAT is always 0xC1&lt;SPAN&gt;&lt;A href="http://freescale.i.lithium.com/i/smilies/16x16_smiley-mad.gif" rel="nofollow noopener noreferrer noopener noreferrer" target="_blank"&gt;&lt;IMG alt=":smileymad:" class="emoticon-smileymad emoticon" src="http://freescale.i.lithium.com/i/smilies/16x16_smiley-mad.gif" title="Smiley Mad" /&gt;&lt;/A&gt;&lt;/SPAN&gt;.&lt;BR /&gt;&lt;BR /&gt;According to AN2400, after ESTAT = CBEIF ,&amp;nbsp; ESTAT must be equal to 0x00.&lt;BR /&gt;&lt;BR /&gt;Any Idea?&lt;BR /&gt;&lt;BR /&gt;Regards&lt;BR /&gt;&lt;/BLOCKQUOTE&gt;&lt;DIV&gt;&lt;DIV class="msg_source_code"&gt;&lt;DIV class="text_smallest"&gt;Code:&lt;/DIV&gt;&lt;PRE&gt;UINT8 ProgEeprom(UINT16* progAdr, UINT16* bufferPtr) { if(((UINT16)progAdr &amp;amp; ALIGNED_WORD_MASK) != 0)&amp;nbsp;&amp;nbsp;&amp;nbsp; // Check for aligned word&amp;nbsp;&amp;nbsp; {&amp;nbsp; return(FAIL);&amp;nbsp; } ESTAT = (ACCERR | PVIOL);// Clear error flags&amp;nbsp;&amp;nbsp;&amp;nbsp; if( (ESTAT &amp;amp; CBEIF) == CBEIF)// Is command buffer empty–&amp;nbsp;&amp;nbsp; {&amp;nbsp; *progAdr++ = *bufferPtr++;// Latch data and address&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ECMD = PROG;// Configure prog command&amp;nbsp;&amp;nbsp; ESTAT = CBEIF;// Launch the command&amp;nbsp;&amp;nbsp; if(( (ESTAT &amp;amp; ACCERR)&amp;nbsp; == ACCERR) ||&amp;nbsp;&amp;nbsp;&amp;nbsp; ((ESTAT &amp;amp; PVIOL) == PVIOL))// Was the access error flag set, violation error flags set ˜&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&amp;nbsp;&amp;nbsp; return(FAIL);&amp;nbsp;&amp;nbsp; }&amp;nbsp; while( (ESTAT &amp;amp; CCIF) != CCIF)// Wait for last command to finish&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; return(PASS);&amp;nbsp; } else&amp;nbsp; {&amp;nbsp; return(FAIL);&amp;nbsp; }&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/PRE&gt;&lt;/DIV&gt;&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt; &lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 29 Oct 2020 08:56:15 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/MC9s12D64-Write-EEPROM/m-p/152665#M4433</guid>
      <dc:creator>topchair</dc:creator>
      <dc:date>2020-10-29T08:56:15Z</dc:date>
    </item>
    <item>
      <title>Re: MC9s12D64 Write EEPROM</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/MC9s12D64-Write-EEPROM/m-p/152666#M4434</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;BR /&gt;&lt;/DIV&gt;&lt;BLOCKQUOTE&gt;&lt;DIV&gt;&lt;HR /&gt;&lt;/DIV&gt;&lt;DIV&gt;topchair wrote:&lt;BR /&gt;&lt;/DIV&gt;&lt;BLOCKQUOTE&gt;&lt;P&gt;With the help of my debugger (NoICE12), I find that ESTAT register never change.&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;&lt;/P&gt;&lt;HR /&gt;&lt;P&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;Eeprom programming is to quick to notice it with debugger. Erase takes ~20ms, program ~0.1ms. It's very likely that it takes more than 20ms from breakpoint is hit to when debugger notices that and reads from ESTAT. Try sampling ESTAT to some variable, then read it with debugger.&amp;nbsp;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 14 Feb 2009 00:28:03 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/MC9s12D64-Write-EEPROM/m-p/152666#M4434</guid>
      <dc:creator>kef</dc:creator>
      <dc:date>2009-02-14T00:28:03Z</dc:date>
    </item>
  </channel>
</rss>

