На всякий случай даю функции работы с EEPROM, взяты с application notes или откуда-то еще, но точно "фирменные". Работают 100%, проверено на ATmega8 & ATmega16.
Код
//Записывает байт в EEPROM по указанному адресу
void eeprom_write_byte(unsigned int addr, unsigned char byte)
{
while(EECR & (1<<EEWE)); //ждем, если запись не окончена
EEAR=addr; //указываем адрес
EEDR=byte; //байт данных
EECR|=(1<<EEMWE); //разрешаем запись
EECR|=(1<<EEWE); //строб записи
}
//Читает байт из EEPROM по указанному адресу
unsigned char eeprom_read_byte(unsigned int addr)
{
while(EECR & (1<<EEWE)); //ждем, если запись не окончена
EEAR=addr; //указываем адрес
EECR|=(1<<EERE); //разрешаем чтение
return EEDR; //возвращаем считанный байт
}
]
С уважением ко всем!
Выбор.