<?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 How to use S12VR internal eeprom? in S12 / MagniV Microcontrollers</title>
    <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/How-to-use-S12VR-internal-eeprom/m-p/443931#M11503</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P style="text-align: left;"&gt;Hello.&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px; text-align: left;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="text-align: left;"&gt;I used S12VR.&lt;/P&gt;&lt;P style="text-align: left;"&gt;I want to write or read from internal EEPROM of S12VR.&lt;/P&gt;&lt;P style="text-align: left;"&gt;so,&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px; text-align: left;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="text-align: left;"&gt;////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;/P&gt;&lt;P&gt;static volatile word data[] ={0x1234,0x4567,0x6789,0x9123};&lt;BR /&gt;word eeprom_address = 0x400 ;&lt;/P&gt;&lt;P&gt;static byte start_flash_command_and_wait[]={&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*Clear FSTAT*/&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*BSET FSTAT 0x80*/&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x1C, 0x01, 0x06, 0x80,&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*Wait for command to end*/&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*BRCLR FSTAT 0x80*/&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x1F, 0x01, 0x06, 0x80, -5,&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*Return*/&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x3D&lt;BR /&gt;};&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;void main()&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; CPMUOSC_OSCE = 0;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*Using internal OSC. FREF = 1MHz*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; CPMUSYNR_SYNDIV = 0x18;&amp;nbsp; /*FVCO = 50MHz = 2*FREF/(0x18+0x01)*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; CPMUSYNR_VCOFRQ = 0x01; /*48MHz &amp;lt; fVCO&amp;lt;= 50MHz*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; while (!CPMUFLG_LOCK){}&amp;nbsp; /* Wait for PLL to lock */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; CPMUCLKS_PLLSEL = 1;&amp;nbsp; /* select the PLLCLK/2 as the bus clock */&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; CPMUPOSTDIV = 0;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*FPLL = FVCO/(POSTDIV + 1) = 50MHz*/&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; /*FBUS = 25MHz*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; ECLKCTL_NECLK = 0; /*Mirror Bus clock to a PIN...Only use it for reference purposes not to clock another device*/&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FCCOBIX = 0 ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FCCOB = 0x1100 ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FCCOBIX = 1 ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FCCOB = eeprom_address ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; eeprom_address+= 8;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; while (!FSTAT_CCIF);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FSTAT=0x30;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (FCCOBIX=2; (FCCOBIX&amp;lt;(4+2)); FCCOBIX++){&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FCCOB = data[FCCOBIX-2];&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FCCOBIX--;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; asm(PSHC);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; asm(SEI);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; asm BSR&amp;nbsp; start_flash_command_and_wait;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; asm(PULC);&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for(;;)&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _FEED_COP(); /* feeds the dog */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;what is wrong?&lt;/P&gt;&lt;P&gt;Do you have an exam code to read or write internal eeprom?&lt;/P&gt;&lt;P&gt;help me plz.&lt;/P&gt;&lt;P&gt;thanks.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Tue, 19 May 2015 05:05:57 GMT</pubDate>
    <dc:creator>jtpark</dc:creator>
    <dc:date>2015-05-19T05:05:57Z</dc:date>
    <item>
      <title>How to use S12VR internal eeprom?</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/How-to-use-S12VR-internal-eeprom/m-p/443931#M11503</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P style="text-align: left;"&gt;Hello.&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px; text-align: left;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="text-align: left;"&gt;I used S12VR.&lt;/P&gt;&lt;P style="text-align: left;"&gt;I want to write or read from internal EEPROM of S12VR.&lt;/P&gt;&lt;P style="text-align: left;"&gt;so,&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px; text-align: left;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="text-align: left;"&gt;////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;/P&gt;&lt;P&gt;static volatile word data[] ={0x1234,0x4567,0x6789,0x9123};&lt;BR /&gt;word eeprom_address = 0x400 ;&lt;/P&gt;&lt;P&gt;static byte start_flash_command_and_wait[]={&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*Clear FSTAT*/&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*BSET FSTAT 0x80*/&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x1C, 0x01, 0x06, 0x80,&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*Wait for command to end*/&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*BRCLR FSTAT 0x80*/&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x1F, 0x01, 0x06, 0x80, -5,&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*Return*/&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x3D&lt;BR /&gt;};&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;void main()&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; CPMUOSC_OSCE = 0;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*Using internal OSC. FREF = 1MHz*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; CPMUSYNR_SYNDIV = 0x18;&amp;nbsp; /*FVCO = 50MHz = 2*FREF/(0x18+0x01)*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; CPMUSYNR_VCOFRQ = 0x01; /*48MHz &amp;lt; fVCO&amp;lt;= 50MHz*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; while (!CPMUFLG_LOCK){}&amp;nbsp; /* Wait for PLL to lock */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; CPMUCLKS_PLLSEL = 1;&amp;nbsp; /* select the PLLCLK/2 as the bus clock */&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; CPMUPOSTDIV = 0;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*FPLL = FVCO/(POSTDIV + 1) = 50MHz*/&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; /*FBUS = 25MHz*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; ECLKCTL_NECLK = 0; /*Mirror Bus clock to a PIN...Only use it for reference purposes not to clock another device*/&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FCCOBIX = 0 ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FCCOB = 0x1100 ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FCCOBIX = 1 ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FCCOB = eeprom_address ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; eeprom_address+= 8;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; while (!FSTAT_CCIF);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FSTAT=0x30;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (FCCOBIX=2; (FCCOBIX&amp;lt;(4+2)); FCCOBIX++){&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FCCOB = data[FCCOBIX-2];&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FCCOBIX--;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; asm(PSHC);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; asm(SEI);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; asm BSR&amp;nbsp; start_flash_command_and_wait;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; asm(PULC);&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for(;;)&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _FEED_COP(); /* feeds the dog */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;what is wrong?&lt;/P&gt;&lt;P&gt;Do you have an exam code to read or write internal eeprom?&lt;/P&gt;&lt;P&gt;help me plz.&lt;/P&gt;&lt;P&gt;thanks.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 19 May 2015 05:05:57 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/How-to-use-S12VR-internal-eeprom/m-p/443931#M11503</guid>
      <dc:creator>jtpark</dc:creator>
      <dc:date>2015-05-19T05:05:57Z</dc:date>
    </item>
    <item>
      <title>Re: How to use S12VR internal eeprom?</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/How-to-use-S12VR-internal-eeprom/m-p/443932#M11504</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;an example code you can find in the appnote AN4448:&lt;/P&gt;&lt;P&gt;&lt;A href="http://cache.freescale.com/files/microcontrollers/doc/app_note/AN4448.pdf"&gt;&lt;SPAN class="l"&gt;&lt;SPAN class="goog-trans-section l"&gt;MC9S12VR Family Demonstration Lab Training&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="l"&gt;&lt;SPAN style="color: #afafaf;"&gt;&lt;A href="http://cache.freescale.com/files/microcontrollers/doc/app_note/AN4448SW.zip"&gt;AN4448SW&lt;/A&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="l"&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="l"&gt;Inside the SW pack, there is a demo project for Flash (both Program and Data&amp;nbsp; (EEPROM)). In the flash.c you can find the routines.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="l"&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="l"&gt;Regards,&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="l"&gt;iggi&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="l"&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="l"&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 26 May 2015 09:20:25 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/How-to-use-S12VR-internal-eeprom/m-p/443932#M11504</guid>
      <dc:creator>iggi</dc:creator>
      <dc:date>2015-05-26T09:20:25Z</dc:date>
    </item>
    <item>
      <title>Re: How to use S12VR internal eeprom?</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/How-to-use-S12VR-internal-eeprom/m-p/443933#M11505</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I solved the problem.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;hidef.h&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* common defines and macros */&lt;BR /&gt;#include "derivative.h"&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* derivative-specific definitions */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#define EEPROM_START&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x000400 &lt;BR /&gt;#define EEPROM_END&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x0007FF&lt;BR /&gt;#define EEPROM_SECTOR&amp;nbsp;&amp;nbsp; 0x04&lt;/P&gt;&lt;P&gt;#define OK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&lt;BR /&gt;#define ERASED&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;BR /&gt;#define NON_ERASED&amp;nbsp; 2&lt;BR /&gt;#define MISALIGNED_ADDRESS&amp;nbsp; 3&lt;BR /&gt;#define ACCESS_ERROR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&lt;BR /&gt;#define VERIFICATION_FAILED 5&lt;BR /&gt;#define LENGTH_OUT_OF_RANGE 6&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;void SetPEEmodeBUSCLK(byte _synr, byte _refdv, byte _postdiv);&lt;/P&gt;&lt;P&gt;#pragma CODE_SEG NON_BANKED&lt;BR /&gt;interrupt 28 void PLL_LockIsr(void);&lt;BR /&gt;#pragma CODE_SEG DEFAULT&lt;/P&gt;&lt;P&gt;byte EEPROM_Erase_Verify_Section(word address, word number_of_words);&lt;BR /&gt;byte EEPROM_Program(word int address, word *ptr, byte number_of_words);&lt;BR /&gt;byte EEPROM_Erase_Sector(word int address);&lt;BR /&gt;word EEPROM_Read_Word(word int address);&lt;BR /&gt;void EEPROM_Init(byte fdiv);&lt;/P&gt;&lt;P&gt;word buf[4] = {0xACBD, 0x9812, 0x5678, 0xEF34};&lt;BR /&gt;byte err;&lt;BR /&gt;byte cnt ;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;void SetPEEmodeBUSCLK(byte _synr, byte _refdv, byte _postdiv)&lt;BR /&gt;{&lt;BR /&gt; CPMUSYNR&amp;nbsp;&amp;nbsp;&amp;nbsp; = _synr;&lt;BR /&gt; CPMUREFDIV&amp;nbsp; = _refdv;&lt;BR /&gt; CPMUPOSTDIV = _postdiv;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp; &lt;BR /&gt; CPMUOSC_OSCE = 1; //enable external oscillator OSCE&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt; while(!CPMUFLG_UPOSC)&lt;BR /&gt;&amp;nbsp; {// you can check for timeot here with error message report&lt;BR /&gt;&amp;nbsp; };&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt; while(!CPMUFLG_LOCK)&lt;BR /&gt;&amp;nbsp; {// you can check for timeot here with error message report&lt;BR /&gt;&amp;nbsp; };&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt; &lt;BR /&gt;&amp;nbsp; //--- select clocks --------------------&lt;BR /&gt; CPMUCLKS = 0B10000011;&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; // bus=fPLL/2; COP is clocked from OSCCLK&lt;BR /&gt; if(CPMUCLKS != 0B10000011)&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; // After writing CPMUCLKS register, it is strongly recommended to read&amp;nbsp; &lt;BR /&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; // back CPMUCLKS register to make sure that write of PLLSEL,&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; asm nop;&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; // RTIOSCSEL, COPOSCSEL0 and COPOSCSEL1 was successful.&lt;BR /&gt;&amp;nbsp; }&lt;BR /&gt; //--------------------------------------&lt;BR /&gt;}&lt;BR /&gt;//******************************************************************************&lt;BR /&gt;//EEPROM Send_Command&lt;BR /&gt;//******************************************************************************&lt;BR /&gt;//this function is stored in RAM memory&lt;BR /&gt;//in C language:&lt;BR /&gt;//&amp;nbsp; {&lt;BR /&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp; FSTAT_CCIF = 1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //launch command&lt;BR /&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp; while(FSTAT_CCIF == 0); //wait for done&lt;BR /&gt;//&amp;nbsp; }&lt;BR /&gt;static byte Send_Command[]=&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp; 0x1C, 0x01, 0x06, 0x80, 0x1F, 0x01, 0x06, 0x80, 0xFB, 0x3D&lt;BR /&gt;};&lt;/P&gt;&lt;P&gt;//******************************************************************************&lt;BR /&gt;//EEPROM_Erase_Verify_Section&lt;BR /&gt;//******************************************************************************&lt;BR /&gt;byte EEPROM_Erase_Verify_Section(word address, word number_of_words)&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp; //check if address is aligned (global address [2:0] = 000)&lt;BR /&gt;&amp;nbsp; if((address &amp;amp; 0x0004) != 0)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return MISALIGNED_ADDRESS; &lt;BR /&gt;&amp;nbsp; &lt;BR /&gt;&amp;nbsp; while(FSTAT_CCIF == 0);&amp;nbsp;&amp;nbsp; //wait if command in progress&lt;BR /&gt;&amp;nbsp; FSTAT = 0x30;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //clear ACCERR and PVIOL&lt;BR /&gt;&amp;nbsp; &lt;BR /&gt;&amp;nbsp; FCCOBIX = 0x00;&lt;BR /&gt;&amp;nbsp; FCCOB&amp;nbsp;&amp;nbsp; = 0x1000;&lt;BR /&gt;&amp;nbsp; &lt;BR /&gt;&amp;nbsp; FCCOBIX = 0x01;&lt;BR /&gt;&amp;nbsp; FCCOB&amp;nbsp;&amp;nbsp; = address;&lt;BR /&gt;&amp;nbsp; &lt;BR /&gt;&amp;nbsp; FCCOBIX = 0x02;&lt;BR /&gt;&amp;nbsp; FCCOB&amp;nbsp;&amp;nbsp; = number_of_words;&lt;BR /&gt;&amp;nbsp; &lt;BR /&gt;&amp;nbsp; asm JSR Send_Command;&lt;BR /&gt;&amp;nbsp; &lt;BR /&gt;&amp;nbsp; if((FSTAT &amp;amp; (FSTAT_ACCERR_MASK | FSTAT_FPVIOL_MASK)) != 0)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return ACCESS_ERROR;&lt;BR /&gt;&amp;nbsp; &lt;BR /&gt;&amp;nbsp; //check if phrases are erased and return result&lt;BR /&gt;&amp;nbsp; if(FSTAT_MGSTAT != 0)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return NON_ERASED;&lt;BR /&gt;&amp;nbsp; else&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return ERASED;&lt;BR /&gt;}&lt;BR /&gt;//******************************************************************************&lt;BR /&gt;//EEPROM_Program&lt;BR /&gt;//******************************************************************************&lt;BR /&gt;byte EEPROM_Program(word address, word *ptr, byte number_of_words)&lt;BR /&gt;{&amp;nbsp; &lt;BR /&gt;&amp;nbsp; word i;&lt;BR /&gt;&amp;nbsp; &lt;BR /&gt;&amp;nbsp; if((number_of_words &amp;lt; 1) || (number_of_words &amp;gt; 4))&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return LENGTH_OUT_OF_RANGE;&lt;BR /&gt;&amp;nbsp; &lt;BR /&gt;&amp;nbsp; //check if address is aligned (global address [0] != 0)&lt;BR /&gt;&amp;nbsp; if((address &amp;amp; 0x0001) != 0)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return MISALIGNED_ADDRESS; &lt;BR /&gt;&amp;nbsp; &lt;BR /&gt;&amp;nbsp; //check if the word(s) is/are erased&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp; if((EEPROM_Erase_Verify_Section(address, number_of_words)) == NON_ERASED)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return NON_ERASED;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp; while(FSTAT_CCIF == 0);&amp;nbsp;&amp;nbsp; //wait if command in progress&lt;BR /&gt;&amp;nbsp; FSTAT = 0x30;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //clear ACCERR and PVIOL&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp; &lt;BR /&gt;&amp;nbsp; FCCOBIX = 0x00;&lt;BR /&gt;&amp;nbsp; FCCOB&amp;nbsp;&amp;nbsp; = 0x1100;&lt;BR /&gt;&amp;nbsp; &lt;BR /&gt;&amp;nbsp; FCCOBIX = 0x01;&lt;BR /&gt;&amp;nbsp; FCCOB&amp;nbsp;&amp;nbsp; = address;&lt;BR /&gt;&amp;nbsp; &lt;BR /&gt;&amp;nbsp; &lt;BR /&gt;&amp;nbsp; for(i=1; i&amp;lt;=number_of_words; i++)&amp;nbsp; //fill appropriate number of words to FCCOB&lt;BR /&gt;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FCCOBIX = i+1;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FCCOB = *ptr;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ptr++;&amp;nbsp; &lt;BR /&gt;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp; asm JSR Send_Command;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp; &lt;BR /&gt;&amp;nbsp; if((FSTAT &amp;amp; (FSTAT_ACCERR_MASK | FSTAT_FPVIOL_MASK)) != 0) return ACCESS_ERROR;&lt;BR /&gt;&amp;nbsp; if(FSTAT_MGSTAT != 0) return VERIFICATION_FAILED;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp; return OK;&lt;BR /&gt;}&lt;BR /&gt;//******************************************************************************&lt;BR /&gt;//EEPROM_Erase_Sector&lt;BR /&gt;//******************************************************************************&lt;BR /&gt;byte EEPROM_Erase_Sector(word address)&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp; //size of sector is 4B&lt;BR /&gt;&amp;nbsp; &lt;BR /&gt;&amp;nbsp; //check if address is aligned (global address [0] != 0)&amp;nbsp; &lt;BR /&gt;&amp;nbsp; if((address &amp;amp; 0x00000001) != 0)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return MISALIGNED_ADDRESS; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp; while(FSTAT_CCIF == 0);&amp;nbsp;&amp;nbsp; //wait if command in progress&lt;BR /&gt;&amp;nbsp; FSTAT = 0x30;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //clear ACCERR and PVIOL&lt;BR /&gt;&amp;nbsp; &lt;BR /&gt;&amp;nbsp; FCCOBIX = 0x00;&lt;BR /&gt;&amp;nbsp; FCCOB&amp;nbsp;&amp;nbsp; = 0x12;&lt;BR /&gt;&amp;nbsp; &lt;BR /&gt;&amp;nbsp; FCCOBIX = 0x01;&lt;BR /&gt;&amp;nbsp; FCCOB&amp;nbsp;&amp;nbsp; = address;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp; asm JSR Send_Command;&lt;BR /&gt;&amp;nbsp; &lt;BR /&gt;&amp;nbsp; if((FSTAT &amp;amp; (FSTAT_ACCERR_MASK | FSTAT_FPVIOL_MASK)) != 0) return ACCESS_ERROR;&lt;BR /&gt;&amp;nbsp; if(FSTAT_MGSTAT != 0) return VERIFICATION_FAILED;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp; return OK;&lt;BR /&gt;}&lt;BR /&gt;//******************************************************************************&lt;BR /&gt;//PFLASH_Read_Word&lt;BR /&gt;//******************************************************************************&lt;BR /&gt;word EEPROM_Read_Word(word address)&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp; word data16;&lt;BR /&gt;&amp;nbsp; data16 = *(word *)address;&lt;BR /&gt;&amp;nbsp; return data16;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;//******************************************************************************&lt;BR /&gt;//PFLASH_Init&lt;BR /&gt;//******************************************************************************&lt;BR /&gt;void EEPROM_Init(byte fdiv)&lt;BR /&gt;{&amp;nbsp; &lt;BR /&gt;&amp;nbsp; FCLKDIV = fdiv;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;}&lt;BR /&gt;//******************************************************************************&lt;/P&gt;&lt;P&gt;static byte start_flash_command_and_wait[]={&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*Clear FSTAT*/&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*BSET FSTAT 0x80*/&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x1C, 0x01, 0x06, 0x80,&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*Wait for command to end*/&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*BRCLR FSTAT 0x80*/&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x1F, 0x01, 0x06, 0x80, -5,&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*Return*/&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x3D&lt;BR /&gt;};&lt;/P&gt;&lt;P&gt;void delay(unsigned int i)&lt;BR /&gt;{&lt;BR /&gt; while(i--) ;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;#pragma CODE_SEG NON_BANKED&lt;/P&gt;&lt;P&gt; __interrupt VectorNumber_Vtimovf void TIM_OVERFLOW(void) &lt;BR /&gt; { &lt;BR /&gt;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; TFLG2_TOF = 1 ;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PTT_PTT0 ^= 1 ;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp; } &lt;/P&gt;&lt;P&gt;__interrupt VectorNumber_Vtimch0 void TIM_CH0(void)&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp; &lt;BR /&gt;&amp;nbsp; TFLG1_C0F = 1 ;&lt;BR /&gt;&amp;nbsp; cnt++ ;&lt;/P&gt;&lt;P&gt;&amp;nbsp; PTT_PTT0 ^= 1 ;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;#pragma CODE_SEG DEFAULT&lt;/P&gt;&lt;P&gt;void main(void) {&lt;BR /&gt;&amp;nbsp; /* put your own code here */&lt;BR /&gt;&amp;nbsp; &lt;BR /&gt;&amp;nbsp; unsigned int addr;&lt;BR /&gt;&amp;nbsp; &lt;BR /&gt;&amp;nbsp; &lt;BR /&gt;&amp;nbsp; &lt;BR /&gt; CPMUOSC_OSCE = 0;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*Using internal OSC. FREF = 1MHz*/&lt;BR /&gt; CPMUSYNR_SYNDIV = 0x18;&amp;nbsp; /*FVCO = 50MHz = 2*FREF/(0x18+0x01)*/&lt;BR /&gt; CPMUSYNR_VCOFRQ = 0x01; /*48MHz &amp;lt; fVCO&amp;lt;= 50MHz*/&lt;BR /&gt; while (!CPMUFLG_LOCK){}&amp;nbsp; /* Wait for PLL to lock */&lt;BR /&gt; CPMUCLKS_PLLSEL = 1;&amp;nbsp; /* select the PLLCLK/2 as the bus clock */&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt; CPMUPOSTDIV = 0;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*FPLL = FVCO/(POSTDIV + 1) = 50MHz*/&lt;BR /&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; /*FBUS = 25MHz*/&lt;BR /&gt;&amp;nbsp;&amp;nbsp; ECLKCTL_NECLK = 0; /*Mirror Bus clock to a PIN...Only use it for reference purposes not to clock another device*/&lt;/P&gt;&lt;P&gt; &lt;BR /&gt; DDRT_DDRT0 = 1 ; // PT0 Output&lt;BR /&gt;&amp;nbsp;&amp;nbsp; PERT_PERT0 = 1 ; //PT0 Pull up&lt;BR /&gt; DDRT_DDRT1 = 1 ; // PT1 Output&lt;BR /&gt;&amp;nbsp;&amp;nbsp; PERT_PERT1 = 1 ; //PT1 Pull up&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; TSCR2_TOI = 1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Timer overflow interrupt enable */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; TSCR1_TEN = 1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Timer Enable */&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; TSCR2_PR = 2 ;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Timer prescaler select */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt; EnableInterrupts;&lt;BR /&gt; &lt;BR /&gt; &lt;/P&gt;&lt;P&gt;//--- PLL Initialization ---------------&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; SetPEEmodeBUSCLK(0x01, 0x80, 0x00);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 16MHz BUSCLK from 8 MHZ oscclk, PEE mode&lt;BR /&gt;&amp;nbsp; &lt;BR /&gt;&amp;nbsp; ECLKCTL_NECLK = 0;&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; // enable ECLK output (bus clock is visible on pin PS7)&lt;BR /&gt;&amp;nbsp; //--------------------------------------&lt;BR /&gt;&amp;nbsp; // INITIALIZE THE EEPROM&lt;BR /&gt;&amp;nbsp; //------------------------------&lt;BR /&gt;&amp;nbsp; EEPROM_Init(0x0F);// default settings:&lt;BR /&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; // internal oscillator is used = 1MHz =&amp;gt; bus clk 8MHz =&amp;gt; divide by 0x07 &lt;BR /&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; // to achieve FCLK 1MHz&lt;BR /&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; // Table 15-7. FDIV values for various BUSCLK Frequencies&lt;/P&gt;&lt;P&gt;&amp;nbsp; //------------------------------&lt;BR /&gt;&amp;nbsp; // check entire EEPROM whether required data are already written&lt;BR /&gt;&amp;nbsp; if( (*(word*)(0x400)) != 0xAABB)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // the flag at 0x0400 says there are not correct data &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // check the eeprom is erased&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //------------------------------&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(EEPROM_Erase_Verify_Section(EEPROM_START,512) == NON_ERASED)&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // if no then erase entire EEPROM&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for(addr = EEPROM_START; addr &amp;lt; EEPROM_END; addr+=EEPROM_SECTOR)&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; err = EEPROM_Erase_Sector(addr);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //...and write required data&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //------------------------------&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; err = EEPROM_Program(EEPROM_START, buf, 4);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for(addr = EEPROM_START+8; addr &amp;lt; EEPROM_END; addr+=2)&amp;nbsp;&amp;nbsp; &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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; err = EEPROM_Program(addr, &amp;amp;addr, 1);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;BR /&gt; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&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;&amp;nbsp; for(;;) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; _FEED_COP(); /* feeds the dog */&lt;BR /&gt; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PTT_PTT1 ^= 1 ;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; delay(1000) ;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;BR /&gt;&amp;nbsp; err = EEPROM_Program(EEPROM_START, buf, 4);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for(addr = EEPROM_START+8; addr &amp;lt; EEPROM_END; addr+=2)&amp;nbsp;&amp;nbsp; &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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; err = EEPROM_Program(addr, &amp;amp;addr, 1);&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;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp; } /* loop forever */&lt;BR /&gt;&amp;nbsp; /* please make sure that you never leave main */&lt;BR /&gt;}&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 20 Jul 2015 09:18:23 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/How-to-use-S12VR-internal-eeprom/m-p/443933#M11505</guid>
      <dc:creator>jtpark</dc:creator>
      <dc:date>2015-07-20T09:18:23Z</dc:date>
    </item>
  </channel>
</rss>

