<?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: EEPROM only works in BDM mode in S12 / MagniV Microcontrollers</title>
    <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/EEPROM-only-works-in-BDM-mode/m-p/135241#M2207</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;I have encountered such a situation where I was accidently writing to the write-once register ECLKDIV several times during setup. This doesn't work in normal single chip mode, but it will in special single chip mode (BDM attached). Check the disassembled code and make sure that the register is written to only once.&lt;BR /&gt;&lt;BR /&gt;If that's not the problem, it is most likely related to the clock and prescaler settings.&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 31 May 2007 16:09:32 GMT</pubDate>
    <dc:creator>Lundin</dc:creator>
    <dc:date>2007-05-31T16:09:32Z</dc:date>
    <item>
      <title>EEPROM only works in BDM mode</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/EEPROM-only-works-in-BDM-mode/m-p/135240#M2206</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt; &lt;/DIV&gt;&lt;DIV&gt;Dear group,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;I am trying to use the internal EEPROM of a S12XDP512 chip and my driver is working perfectly in BDM mode. However, as soon as I restart the board in normal mode, the EEPROM write is not performed any more. I have check PVIOL and ACCERR flags, they are not set.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;I&amp;nbsp;have a 16 Mhz&amp;nbsp;oscillator and &amp;nbsp;the PLL is configured at 40 Mhz. My setup code is as follows:&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN style="font-family: 'Courier New'; font-size: 1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #define EEP_PRDCLK&amp;nbsp;&amp;nbsp; (0x01u)&lt;BR /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #define EEP_ECLKDIV&amp;nbsp; (0x0Au)&lt;BR /&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN style="font-family: 'Courier New'; font-size: 1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; vtEepromReg.ECLKDIV = (EEP_PRDCLK&amp;lt;&amp;lt;6u) + EEP_ECLKDIV;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN style="font-family: 'Courier New'; font-size: 1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Pas de protection */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; vtEepromReg.EPROT=0xFF;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN style="font-family: 'Courier New'; font-size: 1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* attend que l'e2prom soit prete */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while(TEST_BIT(vtEepromReg.ESTAT, ESTAT_CCIF)==0) {&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;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; EEP_DEVPT_ERROR_CHECK(TEST_BIT(vtEepromReg.ECLKDIV, ECLKDIV_EDIVLD)!=0, EEP_E_HW_UNINIT, tRet)&lt;BR /&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;Did you already encounter a similar situation? Thank you in advance for your replies.&lt;/DIV&gt;&lt;DIV&gt;&lt;BR /&gt;Best regards,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Puce_log&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 30 May 2007 15:47:49 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/EEPROM-only-works-in-BDM-mode/m-p/135240#M2206</guid>
      <dc:creator>puce_log</dc:creator>
      <dc:date>2007-05-30T15:47:49Z</dc:date>
    </item>
    <item>
      <title>Re: EEPROM only works in BDM mode</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/EEPROM-only-works-in-BDM-mode/m-p/135241#M2207</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;I have encountered such a situation where I was accidently writing to the write-once register ECLKDIV several times during setup. This doesn't work in normal single chip mode, but it will in special single chip mode (BDM attached). Check the disassembled code and make sure that the register is written to only once.&lt;BR /&gt;&lt;BR /&gt;If that's not the problem, it is most likely related to the clock and prescaler settings.&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 31 May 2007 16:09:32 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/EEPROM-only-works-in-BDM-mode/m-p/135241#M2207</guid>
      <dc:creator>Lundin</dc:creator>
      <dc:date>2007-05-31T16:09:32Z</dc:date>
    </item>
    <item>
      <title>Re: EEPROM only works in BDM mode</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/EEPROM-only-works-in-BDM-mode/m-p/135242#M2208</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;Dear group,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;I'm sorry for the long silence. We have finally managed to solve this issue that was related to EEPROM protection.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;We wanted to encapsulate the access to the EEPROM in a variable vtEeprom that we mapped at the right place in the memory map, as shown below. The problem is the compiler is initializing the variable at 0, which clears all EEPROM protection bits.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;#pragma DATA_SEG EEPROM_REG&lt;BR /&gt;static volatile tEEPROM_DATA vtEeprom; /**&amp;lt; EEPROM memory area */&lt;BR /&gt;#pragma DATA_SEG DEFAULT&lt;BR /&gt;&lt;/DIV&gt;&lt;DIV&gt;PRM file:&lt;/DIV&gt;&lt;DIV&gt;SEGMENTS&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; EEPROM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = READ_ONLY&amp;nbsp; 0x0C00 TO 0x0FFF;&lt;/DIV&gt;&lt;DIV&gt;PLACEMENT&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; EEPROM_DATA&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; INTO&amp;nbsp; EEPROM;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;In the corrected code below we have simply removed the EEP protection register from the data section considered:&lt;/DIV&gt;&lt;DIV&gt;&lt;DIV&gt;#pragma DATA_SEG EEPROM_REG&lt;BR /&gt;static volatile tEEPROM_DATA vtEeprom; /**&amp;lt; EEPROM memory area */&lt;BR /&gt;#pragma DATA_SEG DEFAULT&lt;BR /&gt;&lt;/DIV&gt;&lt;DIV&gt;const uint8 eep_prot_byte @ &lt;STRONG&gt;&lt;FONT color="#ff0000"&gt;0x0FFD&lt;/FONT&gt;&lt;/STRONG&gt; = 0xF8 ;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;PRM file:&lt;/DIV&gt;&lt;DIV&gt;SEGMENTS&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; EEPROM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = READ_ONLY&amp;nbsp; 0x0C00 TO &lt;STRONG&gt;&lt;FONT color="#FF3300"&gt;0x0FFC&lt;/FONT&gt;&lt;/STRONG&gt;;&lt;/DIV&gt;&lt;DIV&gt;PLACEMENT&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; EEPROM_DATA&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; INTO&amp;nbsp; EEPROM;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Thanks for your help, hope it works for you.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;puce_log&lt;/DIV&gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 07 Nov 2007 04:52:25 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/EEPROM-only-works-in-BDM-mode/m-p/135242#M2208</guid>
      <dc:creator>puce_log</dc:creator>
      <dc:date>2007-11-07T04:52:25Z</dc:date>
    </item>
  </channel>
</rss>

