<?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のトピックRe: S12XEP100 EEPROM sometimes gets dirty</title>
    <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/S12XEP100-EEPROM-sometimes-gets-dirty/m-p/320824#M10385</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thank you very much for having pointed me to that page, It's been very useful. &lt;/P&gt;&lt;P&gt;Now I'll check if the MCUs we had problem with have that maskset.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks again,&lt;/P&gt;&lt;P&gt;Ale&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 17 Jul 2014 12:37:00 GMT</pubDate>
    <dc:creator>Rhapsody</dc:creator>
    <dc:date>2014-07-17T12:37:00Z</dc:date>
    <item>
      <title>S12XEP100 EEPROM sometimes gets dirty</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/S12XEP100-EEPROM-sometimes-gets-dirty/m-p/320822#M10383</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Dear All,&lt;/P&gt;&lt;P&gt;I've developed a firmware that makes use of the internal S12XEP100 EEEPROM.&lt;/P&gt;&lt;P&gt;Everything works 99% of the time, but sometimes, after a power cycle, the EEEPROM is set to random values.&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Here there is the init procedure, that is called without interrupt enable, after having set the clock:&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE class="c++" name="code"&gt;void E3PROM_setup() {&amp;nbsp; &amp;nbsp; e3prom_query();&amp;nbsp; &amp;nbsp; if (erpart == 0xffff || dfpart == 0xffff) { &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; e3prom_dflash_partition(); &amp;nbsp; } &amp;nbsp; e3prom_enable();&amp;nbsp; }&lt;/PRE&gt;&lt;DIV style="display:none;"&gt; &lt;/DIV&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Where:&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;e3prom_query is used to retrive parameters from the e3prom&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE class="c++" name="code"&gt;void e3prom_query() { &amp;nbsp; FSTAT = 0x30; &amp;nbsp; e3prom_wait(); &amp;nbsp; FCCOBIX = 0; &amp;nbsp; FCCOBHI = 0x15; &amp;nbsp; FCCOBLO = 0x00; &amp;nbsp; FSTAT = 0x80; &amp;nbsp; e3prom_wait(); &amp;nbsp; FCCOBIX = 1; &amp;nbsp; dfpart = FCCOB; &amp;nbsp; FCCOBIX = 2; &amp;nbsp; erpart = FCCOB; &amp;nbsp; FCCOBIX = 3; &amp;nbsp; ecount = FCCOB; &amp;nbsp; FCCOBIX = 4; &amp;nbsp; deadcnt = FCCOBHI; &amp;nbsp; rdycnt = FCCOBLO; }&lt;/PRE&gt;&lt;DIV style="display:none;"&gt; &lt;/DIV&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;e3prom_wait is used to wait for e3prom operations complete&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE class="c++" name="code"&gt;void e3prom_wait() { &amp;nbsp; while((ETAG &amp;gt; 0) || (FSTAT_MGBUSY == 1) || FSTAT_CCIF == 0); }&lt;/PRE&gt;&lt;DIV style="display:none;"&gt; &lt;/DIV&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;e3prom_dflash_partition is used to partition the dflash&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE class="c++" name="code"&gt;void e3prom_dflash_partition() { &amp;nbsp; FSTAT = 0x30; &amp;nbsp; e3prom_wait(); &amp;nbsp; FCCOBIX = 0; &amp;nbsp; FCCOBHI = 0x20; &amp;nbsp; FCCOBLO = 0x00; &amp;nbsp; FCCOBIX = 1; &amp;nbsp; FCCOB = 0x0040; &amp;nbsp; FCCOBIX = 2; &amp;nbsp; FCCOB = 0x0004; &amp;nbsp; FSTAT = 0x80; &amp;nbsp; e3prom_wait(); }&lt;/PRE&gt;&lt;DIV style="display:none;"&gt; &lt;/DIV&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE class="c++" name="code"&gt;void e3prom_enable() { &amp;nbsp; FSTAT = 0x30; &amp;nbsp; e3prom_wait(); &amp;nbsp; FCCOBIX = 0; &amp;nbsp; FCCOBHI = 0x13; &amp;nbsp; FCCOBLO = 0x00; &amp;nbsp; FSTAT = 0x80; &amp;nbsp; e3prom_wait(); } &lt;/PRE&gt;&lt;DIV style="display:none;"&gt; &lt;/DIV&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;And these are the routines to read and write:&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE class="c++" name="code"&gt;void E3PROM_set_byte(unsigned long addr, byte val) { &amp;nbsp; byte * __far ptr = (byte * __far)addr; &amp;nbsp; *ptr = val; } byte E3PROM_get_byte(unsigned long addr) { &amp;nbsp; byte * __far ptr = (byte * __far)addr; &amp;nbsp; return *ptr; } &lt;/PRE&gt;&lt;DIV style="display:none;"&gt; &lt;/DIV&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Unfortunately the problem is happening very rarely and it cannot be reproduced sistematically.&lt;/P&gt;&lt;P&gt;Any hint or suggestion on the code above?&lt;/P&gt;&lt;P&gt;Am I wrong in something?&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Many thanks in advance,&lt;/P&gt;&lt;P&gt;Ale&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 16 Jul 2014 07:13:52 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/S12XEP100-EEPROM-sometimes-gets-dirty/m-p/320822#M10383</guid>
      <dc:creator>Rhapsody</dc:creator>
      <dc:date>2014-07-16T07:13:52Z</dc:date>
    </item>
    <item>
      <title>Re: S12XEP100 EEPROM sometimes gets dirty</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/S12XEP100-EEPROM-sometimes-gets-dirty/m-p/320823#M10384</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello&lt;/P&gt;&lt;P&gt;On early versions of this device there was an errata with symptoms similar to this.&lt;/P&gt;&lt;P&gt;Are you using the maskset 5M48H?&lt;/P&gt;&lt;P&gt;If not, this could well be associated with the errata listed as MUCts03976 in the Mask Set Errata:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://cache.freescale.com/files/microcontrollers/doc/errata/MSE9S12XEP100_4M48H.htm?fasp=1&amp;amp;WT_TYPE=Errata&amp;amp;WT_VENDOR=FREESCALE&amp;amp;WT_FILE_FORMAT=htm&amp;amp;WT_ASSET=Documentation" title="http://cache.freescale.com/files/microcontrollers/doc/errata/MSE9S12XEP100_4M48H.htm?fasp=1&amp;amp;WT_TYPE=Errata&amp;amp;WT_VENDOR=FREESCALE&amp;amp;WT_FILE_FORMAT=htm&amp;amp;WT_ASSET=Documentation"&gt;http://cache.freescale.com/files/microcontrollers/doc/errata/MSE9S12XEP100_4M48H.htm?fasp=1&amp;amp;WT_TYPE=Errata&amp;amp;WT_VENDOR=FRE…&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The errata details also include workaround measures that may be useful.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 16 Jul 2014 12:48:11 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/S12XEP100-EEPROM-sometimes-gets-dirty/m-p/320823#M10384</guid>
      <dc:creator>DPB</dc:creator>
      <dc:date>2014-07-16T12:48:11Z</dc:date>
    </item>
    <item>
      <title>Re: S12XEP100 EEPROM sometimes gets dirty</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/S12XEP100-EEPROM-sometimes-gets-dirty/m-p/320824#M10385</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thank you very much for having pointed me to that page, It's been very useful. &lt;/P&gt;&lt;P&gt;Now I'll check if the MCUs we had problem with have that maskset.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks again,&lt;/P&gt;&lt;P&gt;Ale&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 17 Jul 2014 12:37:00 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/S12XEP100-EEPROM-sometimes-gets-dirty/m-p/320824#M10385</guid>
      <dc:creator>Rhapsody</dc:creator>
      <dc:date>2014-07-17T12:37:00Z</dc:date>
    </item>
  </channel>
</rss>

