Hi Experts,
I have problem with EEPROM programming, I have code that will program a byte in EEPROM with the parameter send by calling function. But,when it execute, the routine will program the entire 512 bytes instead of just a byte. I confirm my EECR also set to write just 1 byte. My code are below, did my code wrong or is that some other bits in the register I need set in proper way.
unsigned char P_OTHER[10] @0x00000800; //eeprom address start here
unsigned char mydata;
void
eeprom_write(unsigned char* add, unsigned char data) {
EECR = 0x06; //eelat=1,auto terminate=1
*add = data; //byte to program
EECR_EEPGM = active; //turn on programming voltage
while(EECR_EEPGM); //wait until programing done
EECR &= 0xFB; //clear eelat and eepgm
}
void
funtion_one()
{
mydata = 'A';
eeprom_write(&P_OTHER[5],mydata);
}
my EEDIV is set to 0x8056, my crystal running on 9.8304MHz. EEPROM clock is set bus clock.
Even my erase routine does the same. ex. when I erase just a byte, it goes to entire eeprom array.
I notice all this when I debug the program in MON08. Could you help me out on this.
Thanks Guru's