Выбираешь один из неиспользуемых адресов в EEPROM и сравниваешь его с 0xFF - если совпало, пишешь туда что-то не равное 0xFF и инициализируешь все остальные переменные, хранящиеся в EEPROM.
Например:
Код
#define EE_ADR_FLAG ((void*)0x10)
unsigned char val = eeprom_read_byte(EE_ADR_FLAG);
if(val == 0xFF)
{ // инициализируем другие переменные
// ................
eeprom_write_byte(EE_ADR1,DEF_ADR1);
eeprom_write_byte(EE_ADR2,DEF_ADR2);
// ................
// изменяем флажок - все записано
eeprom_write_byte(EE_ADR_FLAG,0xAA);
}
// дальше считываем из EEPROM в рабочие переменные в оперативной памяти
val1 = eeprom_read_byte(EE_ADR1);
val2 = eeprom_read_byte(EE_ADR2);
Сообщение отредактировал alexeyv - May 26 2015, 08:17