#include <iom128a.h>
#include "intrinsics.h"
// write one byte data to pointed EEPROM address
void pdd_write_eeprom_byte(u16 uiAddress, u8 ucData)
{
char cSREG;
// store SREG value
cSREG = SREG;
// disable global interrupt
__disable_interrupt();
// Wait for completion of previous write
while (EECR & (1 << EEWE))
{
;
}
// Set up address and data registers
EEAR = uiAddress;
EEDR = ucData;
// Write logical one to EEMWE
EECR |= (1<<EEMWE);
// Start eeprom write by setting EEWE
EECR |= (1<<EEWE);
// restore SREG value
SREG = cSREG;
}
// read one byte data from pointed EEPROM address
u8 pdd_read_eeprom_byte(u16 uiAddress)
{
char cSREG;
// store SREG value
cSREG = SREG;
__disable_interrupt();
// Wait for completion of previous write
while (EECR & (1 << EEWE))
{
;
}
// Set up address register
EEAR = uiAddress;
// Start eeprom read by writing EERE
EECR |= (1 << EERE);
// restore SREG value
SREG = cSREG;
// Return data from data register
return EEDR;
}