<?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: Storing dynamic data in flash.. help ? in 8-bit Microcontrollers</title>
    <link>https://community.nxp.com/t5/8-bit-Microcontrollers/Storing-dynamic-data-in-flash-help/m-p/123906#M56</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;I have read all the documentation described here and have successful implemented the code using CW 5.0. BUT, for some reason I dont know yet, I still cant simulate it using the "True-Time Simulator" that says I am trying to access "unimplemented ROM bytes". Im coding for the KX8 variant and also I have correctly specified the ROM resident routines addresses.&lt;BR /&gt;&lt;BR /&gt;My question is: Have anyone done this already using the simulator or it only works using the device directly? Am I doing something wrong maybe?&lt;BR /&gt;&lt;BR /&gt;Here is the code:&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BLOCKQUOTE&gt;&lt;BR /&gt;/* ROM Resident Routines Pointer Definitions */&lt;BR /&gt;#define PRGRNGE 0x1009 /* Program a range of FLASH locations */&lt;BR /&gt;#define ERARNGE 0x1006 /* Erase a page or a whole array of FLASH */&lt;BR /&gt;#define RDVRRNG 0x1003 /* Reads/Verifies a range of locations in FLASH */&lt;BR /&gt;#define GETBYTE 0x1000 /* Gets a byte of data from comm port */&lt;BR /&gt;#define DELNUS 0X100C /* Generate a delay */&lt;BR /&gt;&lt;BR /&gt;void FLASHProgram(void);&lt;BR /&gt;void FLASHErase(void);&lt;BR /&gt;&lt;BR /&gt;/* RAM Data Block */&lt;BR /&gt;unsigned char CTRLBYT @0x0048; /* Select between mass/page erase */&lt;BR /&gt;unsigned char CPUSPD @0x0049; /* CPU value equals 4x Bus speed */&lt;BR /&gt;unsigned int LADDR @0x004A; /* Last address of FLASH to manipulate */&lt;BR /&gt;unsigned char DATA[4] @0x004C; /* Data to program into FLASH */&lt;BR /&gt;&lt;BR /&gt;unsigned int FADDR = 0xFB43; /* First Address to store data in FLASH */&lt;BR /&gt;unsigned char DataSize = 4; /* Variable to calculate Last Address */&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;const byte FLBPR_INIT @0x0000FF7E = 0xFF; /* Initialize Flash Block Protection */&lt;BR /&gt;&lt;BR /&gt;/*&lt;BR /&gt;* FLASHProgram: Calls ROM-Resident Routine PRGRNGE.&lt;BR /&gt;* Locations starting from address specified by FADDR will be&lt;BR /&gt;* programmed. The range size is calculated depending on LADDR&lt;BR /&gt;*&lt;BR /&gt;* Parameters: None&lt;BR /&gt;*&lt;BR /&gt;* Return : None&lt;BR /&gt;*/&lt;BR /&gt;void FLASHProgram(void){&lt;BR /&gt;&lt;BR /&gt;asm(LDHX FADDR); /* Load address of RAM Data Block to H:X */&lt;BR /&gt;asm(JSR PRGRNGE); /* Call PRGRNGE ROM Subroutine */&lt;BR /&gt;&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;/*&lt;BR /&gt;* FLASHErase: Calls ROM-Resident Routine ERARNGE.&lt;BR /&gt;* In the case mass bit (CTRLBYT bit 6) is set, calling ERARNGE&lt;BR /&gt;* will perform a mass erase. If the mass bit is cleared (0), a&lt;BR /&gt;* page erase will be performed. FADDR may be any address in the&lt;BR /&gt;* range to be erased.&lt;BR /&gt;*&lt;BR /&gt;* Parameters: None&lt;BR /&gt;*&lt;BR /&gt;* Return : None&lt;BR /&gt;*/&lt;BR /&gt;void FLASHErase(void){&lt;BR /&gt;&lt;BR /&gt;asm(LDHX FADDR); /* Load to H:X address in FLASH range to be erased */&lt;BR /&gt;asm(JSR ERARNGE); /* Call ERARNGE ROM Subroutine */&lt;BR /&gt;&lt;BR /&gt;}&lt;BR /&gt;&lt;/BLOCKQUOTE&gt;&lt;BR /&gt;&lt;BR /&gt;And here is the call:&lt;BR /&gt;&lt;BR /&gt;&lt;BLOCKQUOTE&gt;&lt;BR /&gt;/* RAM DATA Initialization */&lt;BR /&gt;CTRLBYT = 0; /* Page erase (clear bit-6) */&lt;BR /&gt;CPUSPD = 40; /* 9.8304MHz * 4 = 39.3 = 40 (using external OSC) */&lt;BR /&gt;LADDR = FADDR + DataSize - 1; /* Last address in FLASH to program */&lt;BR /&gt;&lt;BR /&gt;/* DATA Buffer Initialization */&lt;BR /&gt;DATA[0] = 0xAA;&lt;BR /&gt;DATA[1] = 0xBB;&lt;BR /&gt;DATA[2] = 0xCC;&lt;BR /&gt;DATA[3] = 0xDD;&lt;BR /&gt;&lt;BR /&gt;FLASHErase(); /* Erase the page in FLASH specified by FADDR */&lt;BR /&gt;/*&lt;BR /&gt;* NOTE: FLASH locations must be blank before&lt;BR /&gt;* trying to write data into them.&lt;BR /&gt;*/&lt;BR /&gt;FLASHProgram(); /* Program DATA into FLASH location starting at FADDR */&lt;BR /&gt;&lt;/BLOCKQUOTE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;Please, help. &lt;IMG alt=":smileyhappy:" class="emoticon emoticon-smileyhappy" id="smileyhappy" src="http://freescale.i.lithium.com/i/smilies/16x16_smiley-happy.gif" title="Smiley Happy" /&gt; I must be missing something... TIA&lt;BR /&gt;Ozelo&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 23 Mar 2006 22:35:01 GMT</pubDate>
    <dc:creator>Ozelo</dc:creator>
    <dc:date>2006-03-23T22:35:01Z</dc:date>
    <item>
      <title>Storing dynamic data in flash.. help ?</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/Storing-dynamic-data-in-flash-help/m-p/123905#M55</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt; &lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN style="color: #ff0000;"&gt;This message contains an entire topic ported from a separate forum. The original message and all replies are in this single message. We have seeded this new forum with selected information that we expect will be of value to you as you search for answers to your questions.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN class="postdetails"&gt;&lt;STRONG&gt;Posted: Tue Feb 22, 2005 6:56 pm&lt;/STRONG&gt;&lt;SPAN class="gen"&gt;&amp;nbsp;&lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN class="postdetails"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN class="postdetails"&gt;&amp;nbsp;am interested to know how I can store dynamic data in the flash of an HC08KX8. Basically I need to store non-volatile data in th KX8 wich will change during runtime! I understand there are ROM routines to write to flash, but I not sure how I would use them using C. Once the KX8 is running in the field, it will be shut off and on, and the values stored need to be remembered! Any info, links to where I can read up on this would be of great help! Thanks in advance!!!!!!&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN class="postdetails"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN class="postdetails"&gt;&lt;SPAN class="postdetails"&gt;&lt;STRONG&gt;Posted: Tue Feb 22, 2005 7:02 pm&lt;/STRONG&gt;&lt;SPAN class="gen"&gt;&amp;nbsp;&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN class="postdetails"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN class="postdetails"&gt;&lt;SPAN class="postbody"&gt;Hi, The Application Note AN1831 is describing how to use the on-chip Flash programming routines on KX8. Got to FSL website and search for: Application Note AN1831 &lt;SPAN class="postdetails"&gt;&lt;STRONG&gt;Posted: Tue Feb 22, 2005 7:15 pm&lt;/STRONG&gt;&lt;SPAN class="gen"&gt;&amp;nbsp;&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN class="postdetails"&gt;&lt;SPAN class="postbody"&gt;&lt;SPAN class="postdetails"&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN class="postdetails"&gt;&lt;SPAN class="postbody"&gt;&lt;SPAN class="postdetails"&gt;&lt;SPAN class="postbody"&gt;Thanks for such a quick response! I'll check it out and get back to you!&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN class="postdetails"&gt;&lt;SPAN class="postbody"&gt;&lt;SPAN class="postdetails"&gt;&lt;SPAN class="postbody"&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN class="postdetails"&gt;&lt;SPAN class="postbody"&gt;&lt;SPAN class="postdetails"&gt;&lt;SPAN class="postbody"&gt;&lt;SPAN class="postdetails"&gt;&lt;STRONG&gt;Posted: Tue Feb 22, 2005 7:17 pm&lt;/STRONG&gt;&lt;SPAN class="gen"&gt;&amp;nbsp;&lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN class="postdetails"&gt;&lt;SPAN class="postbody"&gt;&lt;SPAN class="postdetails"&gt;&lt;SPAN class="postbody"&gt;&lt;SPAN class="postdetails"&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN class="postdetails"&gt;&lt;SPAN class="postbody"&gt;&lt;SPAN class="postdetails"&gt;&lt;SPAN class="postbody"&gt;&lt;SPAN class="postdetails"&gt;&lt;SPAN class="postbody"&gt;Hi, Please refer to:&lt;BR /&gt;&lt;A _jive_internal="true" href="https://community.nxp.com/external-link.jspa?url=http%3A%2F%2Fwww.freescale.com%2Ffiles%2Fmicrocontrollers%2Fdoc%2Fapp_note%2FAN1831.pdf" rel="nofollow" target="_blank"&gt;AN1831 - Using MC68HC908 On-Chip FLASH Programming Routines ROM-Resident Routines in the GR8, KX8, JL3, JK3, JB8 Application Note&lt;/A&gt;&lt;BR /&gt;&lt;A _jive_internal="true" href="https://community.nxp.com/external-link.jspa?url=http%3A%2F%2Fwww.freescale.com%2Ffiles%2Fmicrocontrollers%2Fdoc%2Fapp_note%2FAN3183.pdf" rel="nofollow" target="_blank"&gt;AN2183 - Using FLASH as EEPROM on the MC68HC908GP32 Application Note&lt;/A&gt;&lt;BR /&gt; &lt;A _jive_internal="true" href="https://community.nxp.com/external-link.jspa?url=http%3A%2F%2Fwww.freescale.com%2Ffiles%2Fmicrocontrollers%2Fdoc%2Fapp_note%2FAN2346.pdf" rel="nofollow" target="_blank"&gt;AN2346 - EEPROM Emulation Using FLASH in MC68HC908QY_QT MCUs Application Note&lt;/A&gt;&lt;BR /&gt;&lt;A _jive_internal="true" href="https://community.nxp.com/external-link.jspa?url=http%3A%2F%2Fwww.freescale.com%2Ffiles%2Fmicrocontrollers%2Fdoc%2Fapp_note%2FAN2690.pdf" rel="nofollow" target="_blank"&gt;AN2690 - Low Frequency EEPROM Emulation on the MC68HLC908QY4 Application Note&lt;/A&gt;&lt;BR /&gt; These Application Notes provide enough hints to do the job easily with codes written in C/ASM. Hope this helps.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; &lt;SPAN class="gensmall"&gt;&lt;SPAN class="postdetails"&gt;&lt;STRONG&gt;Posted: Tue Feb 22, 2005 7:24 pm&lt;/STRONG&gt;&lt;SPAN class="gen"&gt;&amp;nbsp;&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN class="postdetails"&gt;&lt;SPAN class="postbody"&gt;&lt;SPAN class="postdetails"&gt;&lt;SPAN class="gensmall"&gt;&lt;SPAN class="postdetails"&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN class="postdetails"&gt;&lt;SPAN class="postbody"&gt;&lt;SPAN class="postdetails"&gt;&lt;SPAN class="gensmall"&gt;&lt;SPAN class="postdetails"&gt;&lt;SPAN class="postbody"&gt;THANKS!!!!!!!!!! I will be reading these!!!!!!!!&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN class="postdetails"&gt;&lt;SPAN class="postbody"&gt;&lt;SPAN class="postdetails"&gt;&lt;SPAN class="gensmall"&gt;&lt;SPAN class="postdetails"&gt;&lt;SPAN class="postbody"&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN class="postdetails"&gt;&lt;SPAN class="postbody"&gt;&lt;SPAN class="postdetails"&gt;&lt;SPAN class="gensmall"&gt;&lt;SPAN class="postdetails"&gt;&lt;SPAN class="postbody"&gt;&lt;SPAN class="postdetails"&gt;&lt;STRONG&gt;Posted: Tue Feb 22, 2005 7:41 pm&lt;SPAN class="gen"&gt;&amp;nbsp;&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN class="postdetails"&gt;&lt;SPAN class="postbody"&gt;&lt;SPAN class="postdetails"&gt;&lt;SPAN class="gensmall"&gt;&lt;SPAN class="postdetails"&gt;&lt;SPAN class="postbody"&gt;&lt;SPAN class="postdetails"&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN class="postdetails"&gt;&lt;SPAN class="postbody"&gt;&lt;SPAN class="postdetails"&gt;&lt;SPAN class="gensmall"&gt;&lt;SPAN class="postdetails"&gt;&lt;SPAN class="postbody"&gt;&lt;SPAN class="postdetails"&gt;&lt;SPAN class="postbody"&gt;Seems like this will do! This site is awesome! Very quick responses!&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN class="postdetails"&gt;&lt;SPAN class="postbody"&gt;&lt;SPAN class="postdetails"&gt;&lt;SPAN class="gensmall"&gt;&lt;SPAN class="postdetails"&gt;&lt;SPAN class="postbody"&gt;&lt;SPAN class="postdetails"&gt;&lt;SPAN class="postbody"&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN class="postdetails"&gt;&lt;SPAN class="postbody"&gt;&lt;SPAN class="postdetails"&gt;&lt;SPAN class="gensmall"&gt;&lt;SPAN class="postdetails"&gt;&lt;SPAN class="postbody"&gt;&lt;SPAN class="postdetails"&gt;&lt;SPAN class="postbody"&gt;&lt;SPAN class="postdetails"&gt;&lt;STRONG&gt;Posted: Tue Feb 22, 2005 8:02 pm&lt;/STRONG&gt;&lt;SPAN class="gen"&gt;&amp;nbsp;&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN class="postdetails"&gt;&lt;SPAN class="postbody"&gt;&lt;SPAN class="postdetails"&gt;&lt;SPAN class="gensmall"&gt;&lt;SPAN class="postdetails"&gt;&lt;SPAN class="postbody"&gt;&lt;SPAN class="postdetails"&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN class="postdetails"&gt;&lt;SPAN class="postbody"&gt;&lt;SPAN class="postdetails"&gt;&lt;SPAN class="gensmall"&gt;&lt;SPAN class="postdetails"&gt;&lt;SPAN class="postbody"&gt;&lt;SPAN class="postdetails"&gt;&lt;SPAN class="postbody"&gt;AN2346 gives ya an algorithm - altogether 100 bytes or so... Could be reused with some clk-speed considerations within each derivate.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN class="postdetails"&gt;&lt;SPAN class="postbody"&gt;&lt;SPAN class="postdetails"&gt;&lt;SPAN class="gensmall"&gt;&lt;SPAN class="postdetails"&gt;&lt;SPAN class="postbody"&gt;&lt;SPAN class="postdetails"&gt;&lt;SPAN class="postbody"&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN class="postdetails"&gt;&lt;SPAN class="postbody"&gt;&lt;SPAN class="postdetails"&gt;&lt;SPAN class="gensmall"&gt;&lt;SPAN class="postdetails"&gt;&lt;SPAN class="postbody"&gt;&lt;SPAN class="postdetails"&gt;&lt;SPAN class="postbody"&gt;&lt;SPAN class="postdetails"&gt;&lt;STRONG&gt;Posted: Wed Mar 02, 2005 2:18 am&lt;/STRONG&gt;&lt;SPAN class="gen"&gt;&amp;nbsp;&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN class="postdetails"&gt;&lt;SPAN class="postbody"&gt;&lt;SPAN class="postdetails"&gt;&lt;SPAN class="gensmall"&gt;&lt;SPAN class="postdetails"&gt;&lt;SPAN class="postbody"&gt;&lt;SPAN class="postdetails"&gt;&lt;SPAN class="postbody"&gt;&lt;SPAN class="postdetails"&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN class="postdetails"&gt;&lt;SPAN class="postbody"&gt;&lt;SPAN class="postdetails"&gt;&lt;SPAN class="gensmall"&gt;&lt;SPAN class="postdetails"&gt;&lt;SPAN class="postbody"&gt;&lt;SPAN class="postdetails"&gt;&lt;SPAN class="postbody"&gt;&lt;SPAN class="postdetails"&gt;&lt;SPAN class="postbody"&gt;Works like a charm! Thanks all!!! HC08 Rules&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN class="postdetails"&gt;&lt;SPAN class="postbody"&gt;&lt;SPAN class="postdetails"&gt;&lt;SPAN class="gensmall"&gt;&lt;SPAN class="postdetails"&gt;&lt;SPAN class="postbody"&gt;&lt;SPAN class="postdetails"&gt;&lt;SPAN class="postbody"&gt;&lt;SPAN class="postdetails"&gt;&lt;SPAN class="postbody"&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN class="postdetails"&gt;&lt;SPAN class="postbody"&gt;&lt;SPAN class="postdetails"&gt;&lt;SPAN class="gensmall"&gt;&lt;SPAN class="postdetails"&gt;&lt;SPAN class="postbody"&gt;&lt;SPAN class="postdetails"&gt;&lt;SPAN class="postbody"&gt;&lt;SPAN class="postdetails"&gt;&lt;SPAN class="postbody"&gt;&lt;SPAN class="postdetails"&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;&lt;P&gt;Message Edited by Alban on &lt;SPAN class="date_text"&gt;01-26-2006&lt;/SPAN&gt; &lt;SPAN class="time_text"&gt;11:58 AM&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 25 Jan 2006 00:15:58 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/Storing-dynamic-data-in-flash-help/m-p/123905#M55</guid>
      <dc:creator>RChapman</dc:creator>
      <dc:date>2006-01-25T00:15:58Z</dc:date>
    </item>
    <item>
      <title>Re: Storing dynamic data in flash.. help ?</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/Storing-dynamic-data-in-flash-help/m-p/123906#M56</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;I have read all the documentation described here and have successful implemented the code using CW 5.0. BUT, for some reason I dont know yet, I still cant simulate it using the "True-Time Simulator" that says I am trying to access "unimplemented ROM bytes". Im coding for the KX8 variant and also I have correctly specified the ROM resident routines addresses.&lt;BR /&gt;&lt;BR /&gt;My question is: Have anyone done this already using the simulator or it only works using the device directly? Am I doing something wrong maybe?&lt;BR /&gt;&lt;BR /&gt;Here is the code:&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BLOCKQUOTE&gt;&lt;BR /&gt;/* ROM Resident Routines Pointer Definitions */&lt;BR /&gt;#define PRGRNGE 0x1009 /* Program a range of FLASH locations */&lt;BR /&gt;#define ERARNGE 0x1006 /* Erase a page or a whole array of FLASH */&lt;BR /&gt;#define RDVRRNG 0x1003 /* Reads/Verifies a range of locations in FLASH */&lt;BR /&gt;#define GETBYTE 0x1000 /* Gets a byte of data from comm port */&lt;BR /&gt;#define DELNUS 0X100C /* Generate a delay */&lt;BR /&gt;&lt;BR /&gt;void FLASHProgram(void);&lt;BR /&gt;void FLASHErase(void);&lt;BR /&gt;&lt;BR /&gt;/* RAM Data Block */&lt;BR /&gt;unsigned char CTRLBYT @0x0048; /* Select between mass/page erase */&lt;BR /&gt;unsigned char CPUSPD @0x0049; /* CPU value equals 4x Bus speed */&lt;BR /&gt;unsigned int LADDR @0x004A; /* Last address of FLASH to manipulate */&lt;BR /&gt;unsigned char DATA[4] @0x004C; /* Data to program into FLASH */&lt;BR /&gt;&lt;BR /&gt;unsigned int FADDR = 0xFB43; /* First Address to store data in FLASH */&lt;BR /&gt;unsigned char DataSize = 4; /* Variable to calculate Last Address */&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;const byte FLBPR_INIT @0x0000FF7E = 0xFF; /* Initialize Flash Block Protection */&lt;BR /&gt;&lt;BR /&gt;/*&lt;BR /&gt;* FLASHProgram: Calls ROM-Resident Routine PRGRNGE.&lt;BR /&gt;* Locations starting from address specified by FADDR will be&lt;BR /&gt;* programmed. The range size is calculated depending on LADDR&lt;BR /&gt;*&lt;BR /&gt;* Parameters: None&lt;BR /&gt;*&lt;BR /&gt;* Return : None&lt;BR /&gt;*/&lt;BR /&gt;void FLASHProgram(void){&lt;BR /&gt;&lt;BR /&gt;asm(LDHX FADDR); /* Load address of RAM Data Block to H:X */&lt;BR /&gt;asm(JSR PRGRNGE); /* Call PRGRNGE ROM Subroutine */&lt;BR /&gt;&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;/*&lt;BR /&gt;* FLASHErase: Calls ROM-Resident Routine ERARNGE.&lt;BR /&gt;* In the case mass bit (CTRLBYT bit 6) is set, calling ERARNGE&lt;BR /&gt;* will perform a mass erase. If the mass bit is cleared (0), a&lt;BR /&gt;* page erase will be performed. FADDR may be any address in the&lt;BR /&gt;* range to be erased.&lt;BR /&gt;*&lt;BR /&gt;* Parameters: None&lt;BR /&gt;*&lt;BR /&gt;* Return : None&lt;BR /&gt;*/&lt;BR /&gt;void FLASHErase(void){&lt;BR /&gt;&lt;BR /&gt;asm(LDHX FADDR); /* Load to H:X address in FLASH range to be erased */&lt;BR /&gt;asm(JSR ERARNGE); /* Call ERARNGE ROM Subroutine */&lt;BR /&gt;&lt;BR /&gt;}&lt;BR /&gt;&lt;/BLOCKQUOTE&gt;&lt;BR /&gt;&lt;BR /&gt;And here is the call:&lt;BR /&gt;&lt;BR /&gt;&lt;BLOCKQUOTE&gt;&lt;BR /&gt;/* RAM DATA Initialization */&lt;BR /&gt;CTRLBYT = 0; /* Page erase (clear bit-6) */&lt;BR /&gt;CPUSPD = 40; /* 9.8304MHz * 4 = 39.3 = 40 (using external OSC) */&lt;BR /&gt;LADDR = FADDR + DataSize - 1; /* Last address in FLASH to program */&lt;BR /&gt;&lt;BR /&gt;/* DATA Buffer Initialization */&lt;BR /&gt;DATA[0] = 0xAA;&lt;BR /&gt;DATA[1] = 0xBB;&lt;BR /&gt;DATA[2] = 0xCC;&lt;BR /&gt;DATA[3] = 0xDD;&lt;BR /&gt;&lt;BR /&gt;FLASHErase(); /* Erase the page in FLASH specified by FADDR */&lt;BR /&gt;/*&lt;BR /&gt;* NOTE: FLASH locations must be blank before&lt;BR /&gt;* trying to write data into them.&lt;BR /&gt;*/&lt;BR /&gt;FLASHProgram(); /* Program DATA into FLASH location starting at FADDR */&lt;BR /&gt;&lt;/BLOCKQUOTE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;Please, help. &lt;IMG alt=":smileyhappy:" class="emoticon emoticon-smileyhappy" id="smileyhappy" src="http://freescale.i.lithium.com/i/smilies/16x16_smiley-happy.gif" title="Smiley Happy" /&gt; I must be missing something... TIA&lt;BR /&gt;Ozelo&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 23 Mar 2006 22:35:01 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/Storing-dynamic-data-in-flash-help/m-p/123906#M56</guid>
      <dc:creator>Ozelo</dc:creator>
      <dc:date>2006-03-23T22:35:01Z</dc:date>
    </item>
    <item>
      <title>Re: Storing dynamic data in flash.. help ?</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/Storing-dynamic-data-in-flash-help/m-p/123907#M57</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;P&gt;&lt;FONT size="2"&gt;Hello Ozelo,&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;I would suspect that the simulator would &lt;U&gt;not&lt;/U&gt; simulate the ROM-based routines since there is really no reason for it to do so.&amp;nbsp; So you will probably need to test EEPROM emulation using actual hardware.&amp;nbsp; For the simulator, "implemented ROM" would actually refer to flash memory.&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;For simulation purposes, you might&amp;nbsp;replace the ROM routine calls with&amp;nbsp;dummy functions that do nothing, to be used during simulation only.&amp;nbsp; This will at least allow the program to compile and link.&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;Regards,&lt;BR /&gt;Mac&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 24 Mar 2006 00:20:37 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/Storing-dynamic-data-in-flash-help/m-p/123907#M57</guid>
      <dc:creator>bigmac</dc:creator>
      <dc:date>2006-03-24T00:20:37Z</dc:date>
    </item>
  </channel>
</rss>

