ИМХО, стоит попробовать пользоваться своими функциями. Например: <c>
unsigned char eeprom_getc(unsigned char __eeprom *addr)
{
/* Wait for completion of previous write */
while(EECR & (1 << EEWE))
;
__disable_interrupt();
/* Set up address register */
EEAR = (unsigned int) addr;
/* Start eeprom read by writing EERE */
EECR |= (1 << EERE);
/* Return data from Data Register */
EEAR = 0;
__enable_interrupt();
return EEDR;
}
void eeprom_putc(unsigned char c, unsigned char __eeprom *addr)
{
/* Wait for completion of previous write */
while(EECR & (1 << EEWE))
;
__disable_interrupt();
/* Set up address and Data Registers */
EEAR = (unsigned int) addr;
EEDR = c;
/* Write logwical one to EEMWE */
EECR |= (1 << EEMWE);
/* Start eeprom write by setting EEWE */
EECR |= (1 << EEWE);
EEAR = 0;
__enable_interrupt();
}
</c>
А дальше смотреть. Может проблемы с питанием.