//
// Use the internal EEPROM
// By PEK '2005
//
// Compiler: GCC
// MCU: ATMega88
// Clock: 32 kHz
//

#include <avr/io.h>

void E2Write(unsigned int uiAddress, unsigned char ucData)
{
	while(EECR & _BV(EEPE));	// Wait for write completion
	EEAR = uiAddress;
	EEDR = ucData;
	EECR = _BV(EEMPE);
	EECR |= _BV(EEPE);	// Write to the EEPROM
}

unsigned char E2Read(unsigned int uiAddress)
{
	while(EECR & _BV(EEPE));	// Wait for write completion
	EEAR = uiAddress;
	EECR = _BV(EERE);	// Read from the EEPROM
	return EEDR;
}

int main(void)
{	
	unsigned char ucValue = 0;

	// Initiate Ports
	PORTD = 0x00;
	DDRD = 0xFF;	// PortD as output

	E2Write(0x0005, 0x55);	// Write to E2
	
	ucValue = E2Read(0x0005);	// Read from E2
	PORTD = ucValue;
	
	return 1;
}
