<?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: S08DZ EEPROM Sector Erase Problem in 8-bit Microcontrollers</title>
    <link>https://community.nxp.com/t5/8-bit-Microcontrollers/S08DZ-EEPROM-Sector-Erase-Problem/m-p/174348#M12028</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello Lundin,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Here is my code, I found it on this forum.&lt;/P&gt;&lt;P&gt;Write a byte works OK, so I simply changed the FCMD to ERASE_SECTOR.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks,&lt;BR /&gt;David&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;#define EEPROM_BASE 0x1600&amp;nbsp; // Base address for EEPROM memory in a DZ32&lt;BR /&gt;#define EEPROM_ACCESS(x) *(unsigned char *)(x + EEPROM_BASE)&lt;BR /&gt;#define BYTE_PROGRAM 0x20&lt;BR /&gt;#define ERASE_SECTOR 0x40&lt;/P&gt;&lt;P&gt;// Code in Main Loop&lt;/P&gt;&lt;P&gt;EEPROM_Erase_Sector(0x00,0x00); // Erase Flash Sector&lt;BR /&gt;EEPROM_Write_Byte(0x00, Data); // Write the Data - unsigned char&lt;/P&gt;&lt;P&gt;// Function Implementations&lt;/P&gt;&lt;P&gt;void EEPROM_Erase_Sector( unsigned int address, unsigned char data)&lt;BR /&gt;{&lt;BR /&gt;void EEPROM_Write_Byte( unsigned int address, unsigned char data)&lt;BR /&gt;/* Writes a byte of data to the EEPROM address passed to it */&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp; if (FSTAT_FACCERR)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // If EEPROM access error flag is set&lt;BR /&gt;&amp;nbsp;&amp;nbsp; FSTAT_FACCERR = 1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Then clear it&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp; while(!FSTAT_FCBEF);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Make sure command buffer is empty&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp; EEPROM_ACCESS(address) = data;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Write the data&lt;BR /&gt;&amp;nbsp; FCMD = ERASE_SECTOR;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&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; // Wait at least 4 cycles before clearing FSTAT_FCBEF&lt;BR /&gt;&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;&lt;BR /&gt;&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;&lt;BR /&gt;&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;&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp; FSTAT = 0x80;&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 command buffer empty flag&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp; if (FSTAT_FACCERR)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // If EEPROM access error flag is set&lt;BR /&gt;&amp;nbsp;&amp;nbsp; FSTAT_FACCERR = 1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Then clear it&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp; if (FSTAT_FPVIOL)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // If EEPROM write error flag is set&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FSTAT_FPVIOL = 1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Then clear it&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;&lt;BR /&gt;&amp;nbsp; while (!FSTAT_FCCF);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Wait for all commands to complete&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;void EEPROM_Write_Byte( unsigned int address, unsigned char data)&lt;BR /&gt;/* Writes a byte of data to the EEPROM address passed to it */&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp; if (FSTAT_FACCERR)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // If EEPROM access error flag is set&lt;BR /&gt;&amp;nbsp;&amp;nbsp; FSTAT_FACCERR = 1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Then clear it&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp; while(!FSTAT_FCBEF);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Make sure command buffer is empty&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp; EEPROM_ACCESS(address) = data;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Write the data&lt;BR /&gt;&amp;nbsp; FCMD = BYTE_PROGRAM;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Flash/EEPROM command to program a byte (0x20)&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&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; // Wait at least 4 cycles before clearing FSTAT_FCBEF&lt;BR /&gt;&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;&lt;BR /&gt;&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;&lt;BR /&gt;&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;&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp; FSTAT = 0x80;&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 command buffer empty flag&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp; if (FSTAT_FACCERR)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // If EEPROM access error flag is set&lt;BR /&gt;&amp;nbsp;&amp;nbsp; FSTAT_FACCERR = 1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Then clear it&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp; if (FSTAT_FPVIOL)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // If EEPROM write error flag is set&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FSTAT_FPVIOL = 1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Then clear it&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;&lt;BR /&gt;&amp;nbsp; while (!FSTAT_FCCF);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Wait for all commands to complete&lt;BR /&gt;}&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 19 Jan 2011 00:07:18 GMT</pubDate>
    <dc:creator>datamstr</dc:creator>
    <dc:date>2011-01-19T00:07:18Z</dc:date>
    <item>
      <title>S08DZ EEPROM Sector Erase Problem</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/S08DZ-EEPROM-Sector-Erase-Problem/m-p/174344#M12024</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi All,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I can write a byte&amp;nbsp;to the EEPROM on the S08DZ32, but can't erase a sector. I am using the same C code that i use for programming a byte, but just changing the command byte from 0x20 to 0x40. Will someone post their EEPROM erase code so I can compare?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks,&lt;BR /&gt;David&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 07 Jan 2011 07:48:47 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/S08DZ-EEPROM-Sector-Erase-Problem/m-p/174344#M12024</guid>
      <dc:creator>datamstr</dc:creator>
      <dc:date>2011-01-07T07:48:47Z</dc:date>
    </item>
    <item>
      <title>Re: S08DZ EEPROM Sector Erase Problem</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/S08DZ-EEPROM-Sector-Erase-Problem/m-p/174345#M12025</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello David,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Unless you take suitable precautions, it&amp;nbsp;may be&amp;nbsp;possible for&amp;nbsp;COP reset to occur before the sector erase process completes.&amp;nbsp; Does a reset actually occur when you attempt to erase?&amp;nbsp; Programming a single byte is a much quicker process.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Within the EEPROM or RAM based code loop, that waits until the programming/erase process is complete, it is advisable to reset the COP timer, each time through the&amp;nbsp;loop.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Mac&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 11 Jan 2011 09:48:11 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/S08DZ-EEPROM-Sector-Erase-Problem/m-p/174345#M12025</guid>
      <dc:creator>bigmac</dc:creator>
      <dc:date>2011-01-11T09:48:11Z</dc:date>
    </item>
    <item>
      <title>Re: S08DZ EEPROM Sector Erase Problem</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/S08DZ-EEPROM-Sector-Erase-Problem/m-p/174346#M12026</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Mac,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks for your feedback! I did not enable the COP using the Device Initializer and was not planning to enable the COP.&lt;/P&gt;&lt;P&gt;It looks like the COP is enabled by default, though. I will do some more testing.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks,&lt;BR /&gt;David&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 18 Jan 2011 22:23:41 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/S08DZ-EEPROM-Sector-Erase-Problem/m-p/174346#M12026</guid>
      <dc:creator>datamstr</dc:creator>
      <dc:date>2011-01-18T22:23:41Z</dc:date>
    </item>
    <item>
      <title>Re: S08DZ EEPROM Sector Erase Problem</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/S08DZ-EEPROM-Sector-Erase-Problem/m-p/174347#M12027</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I just finished writing a new eeprom driver for the S08DZ this very day, so I'm very much up-to-date on all bits and bytes. If you post your code, I'll be happy to take a look at it.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 18 Jan 2011 22:53:26 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/S08DZ-EEPROM-Sector-Erase-Problem/m-p/174347#M12027</guid>
      <dc:creator>Lundin</dc:creator>
      <dc:date>2011-01-18T22:53:26Z</dc:date>
    </item>
    <item>
      <title>Re: S08DZ EEPROM Sector Erase Problem</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/S08DZ-EEPROM-Sector-Erase-Problem/m-p/174348#M12028</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello Lundin,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Here is my code, I found it on this forum.&lt;/P&gt;&lt;P&gt;Write a byte works OK, so I simply changed the FCMD to ERASE_SECTOR.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks,&lt;BR /&gt;David&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;#define EEPROM_BASE 0x1600&amp;nbsp; // Base address for EEPROM memory in a DZ32&lt;BR /&gt;#define EEPROM_ACCESS(x) *(unsigned char *)(x + EEPROM_BASE)&lt;BR /&gt;#define BYTE_PROGRAM 0x20&lt;BR /&gt;#define ERASE_SECTOR 0x40&lt;/P&gt;&lt;P&gt;// Code in Main Loop&lt;/P&gt;&lt;P&gt;EEPROM_Erase_Sector(0x00,0x00); // Erase Flash Sector&lt;BR /&gt;EEPROM_Write_Byte(0x00, Data); // Write the Data - unsigned char&lt;/P&gt;&lt;P&gt;// Function Implementations&lt;/P&gt;&lt;P&gt;void EEPROM_Erase_Sector( unsigned int address, unsigned char data)&lt;BR /&gt;{&lt;BR /&gt;void EEPROM_Write_Byte( unsigned int address, unsigned char data)&lt;BR /&gt;/* Writes a byte of data to the EEPROM address passed to it */&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp; if (FSTAT_FACCERR)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // If EEPROM access error flag is set&lt;BR /&gt;&amp;nbsp;&amp;nbsp; FSTAT_FACCERR = 1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Then clear it&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp; while(!FSTAT_FCBEF);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Make sure command buffer is empty&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp; EEPROM_ACCESS(address) = data;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Write the data&lt;BR /&gt;&amp;nbsp; FCMD = ERASE_SECTOR;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&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; // Wait at least 4 cycles before clearing FSTAT_FCBEF&lt;BR /&gt;&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;&lt;BR /&gt;&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;&lt;BR /&gt;&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;&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp; FSTAT = 0x80;&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 command buffer empty flag&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp; if (FSTAT_FACCERR)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // If EEPROM access error flag is set&lt;BR /&gt;&amp;nbsp;&amp;nbsp; FSTAT_FACCERR = 1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Then clear it&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp; if (FSTAT_FPVIOL)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // If EEPROM write error flag is set&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FSTAT_FPVIOL = 1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Then clear it&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;&lt;BR /&gt;&amp;nbsp; while (!FSTAT_FCCF);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Wait for all commands to complete&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;void EEPROM_Write_Byte( unsigned int address, unsigned char data)&lt;BR /&gt;/* Writes a byte of data to the EEPROM address passed to it */&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp; if (FSTAT_FACCERR)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // If EEPROM access error flag is set&lt;BR /&gt;&amp;nbsp;&amp;nbsp; FSTAT_FACCERR = 1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Then clear it&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp; while(!FSTAT_FCBEF);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Make sure command buffer is empty&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp; EEPROM_ACCESS(address) = data;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Write the data&lt;BR /&gt;&amp;nbsp; FCMD = BYTE_PROGRAM;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Flash/EEPROM command to program a byte (0x20)&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&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; // Wait at least 4 cycles before clearing FSTAT_FCBEF&lt;BR /&gt;&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;&lt;BR /&gt;&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;&lt;BR /&gt;&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;&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp; FSTAT = 0x80;&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 command buffer empty flag&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp; if (FSTAT_FACCERR)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // If EEPROM access error flag is set&lt;BR /&gt;&amp;nbsp;&amp;nbsp; FSTAT_FACCERR = 1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Then clear it&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp; if (FSTAT_FPVIOL)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // If EEPROM write error flag is set&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FSTAT_FPVIOL = 1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Then clear it&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;&lt;BR /&gt;&amp;nbsp; while (!FSTAT_FCCF);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Wait for all commands to complete&lt;BR /&gt;}&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 19 Jan 2011 00:07:18 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/S08DZ-EEPROM-Sector-Erase-Problem/m-p/174348#M12028</guid>
      <dc:creator>datamstr</dc:creator>
      <dc:date>2011-01-19T00:07:18Z</dc:date>
    </item>
    <item>
      <title>Re: S08DZ EEPROM Sector Erase Problem</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/S08DZ-EEPROM-Sector-Erase-Problem/m-p/174349#M12029</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Also, I am disabling interrupts during the Flash erase:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DisableInterrupts; // no interrupts during Flash Erase&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; EEPROM_Erase_Sector(0x00,0x00); // Erase Flash Sector&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;David&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 19 Jan 2011 00:22:03 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/S08DZ-EEPROM-Sector-Erase-Problem/m-p/174349#M12029</guid>
      <dc:creator>datamstr</dc:creator>
      <dc:date>2011-01-19T00:22:03Z</dc:date>
    </item>
    <item>
      <title>Re: S08DZ EEPROM Sector Erase Problem</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/S08DZ-EEPROM-Sector-Erase-Problem/m-p/174350#M12030</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;This is what I suspect:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;while(!FSTAT_FCBEF); // Make sure command buffer is empty&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;When doing a burst write you want to do like the above, to make sure no pending commands are executed.&lt;/P&gt;&lt;P&gt;When doing a sector erase, I see no reason to do that. Instead you wait for FCCF at the end like your code already does.&lt;/P&gt;&lt;P&gt;It would seem that the CPU might get stuck in that loop. Apart from that, I can't see any problems in the code.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Also, the problem could be related to the prescaler and initialization of registers.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 19 Jan 2011 00:48:10 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/S08DZ-EEPROM-Sector-Erase-Problem/m-p/174350#M12030</guid>
      <dc:creator>Lundin</dc:creator>
      <dc:date>2011-01-19T00:48:10Z</dc:date>
    </item>
  </channel>
</rss>

