Упростил код до минимума
Код
[font="Courier New"]int main(void){
u08 eeData = 0x22;
u16 eeAddr = 20;
while(EECR & _BV(EEWE)); // Ждать завершения предыдущей записи
EEAR = (eeAddr & 0x01ff); // Проинициализировать регистр адреса
EEDR = eeData;
EECR |= _BV(EEMWE); // Установить флаг EEMWE
EECR |= _BV(EEWE); // Начать запись в EEPROM
while(EECR & _BV(EEWE)); // Ждать завершения предыдущей записи
// EEAR = 0; // Сбросить адрес EEPEROM в "0"
while(EECR & _BV(EEWE)); // Ждать завершения предыдущей записи
EEAR = (eeAddr & 0x01ff); // Проинициализировать регистр адреса
EECR |= _BV(EERE); // Выполнить чтение
eeData = EEDR;
while(EECR & _BV(EEWE)); // Ждать завершения предыдущей записи
// EEAR = 0; // Сбросить адрес EEPEROM в "0"[/font]
u08 eeData = 0x22;
u16 eeAddr = 20;
while(EECR & _BV(EEWE)); // Ждать завершения предыдущей записи
EEAR = (eeAddr & 0x01ff); // Проинициализировать регистр адреса
EEDR = eeData;
EECR |= _BV(EEMWE); // Установить флаг EEMWE
EECR |= _BV(EEWE); // Начать запись в EEPROM
while(EECR & _BV(EEWE)); // Ждать завершения предыдущей записи
// EEAR = 0; // Сбросить адрес EEPEROM в "0"
while(EECR & _BV(EEWE)); // Ждать завершения предыдущей записи
EEAR = (eeAddr & 0x01ff); // Проинициализировать регистр адреса
EECR |= _BV(EERE); // Выполнить чтение
eeData = EEDR;
while(EECR & _BV(EEWE)); // Ждать завершения предыдущей записи
// EEAR = 0; // Сбросить адрес EEPEROM в "0"[/font]
и тем не менее на выходе 0xFF.
Потратил много времени на поиск причины, но где ошибка, так и не понял.
