void EEPROM_write(unsigned int uiAddress, unsigned char ucData)
{
/* Wait for completion of previous write */
while(EECR & (1<<EEPE))
;
/* Set up address and Data Registers */
EEAR = uiAddress;
EEDR = ucData;
/* Write logical one to EEMPE */
EECR |= (1<<EEMPE);
/* Start eeprom write by setting EEPE */
EECR |= (1<<EEPE);
/* Enable EEPROM Ready interrupt */
EECR |= (1<<EERIE);
}
unsigned char EEPROM_read(unsigned int uiAddress)
{
/* Wait for completion of previous write */
while(EECR & (1<<EEPE))
;
/* Set up address register */
EEAR = uiAddress;
/* Start eeprom read by writing EERE */
EECR |= (1<<EERE);
/* Return data from Data Register */
return EEDR;
}
bool EEPROM_Ready = false;
void setup()
{
Serial.begin(115200);
Serial.println((char)EEPROM_read(0));
EEPROM_write(0, 'A');
if(EEPROM_Ready == true) Serial.println("EEPROM Ready setup");
}
void loop()
{
if(EEPROM_Ready == true)
{
EEPROM_Ready = false;
Serial.println("EEPROM Ready loop");
Serial.println((char)EEPROM_read(0));
}
}
ISR(EE_READY_vect)
{
EEPROM_Ready = true;
EECR &= ~(1<<EERIE);
}