Была прога написанная имено под AT90S8535. Сейчас потребовалось сделать несколько таких девайсов. Естественно закуплена была mega8535. При установке бита совместимости всё работает, но запись в EEPROM не происходит (проверенно). С AT90S8535 всё впорядке - работает.
Вот код записи чтения байта в/из EEPROM. В чём прикол понять немогу.
IAR.
Код
void EEPUT(unsigned int ADR,unsigned char data)
{ unsigned int err=0;
while (--err && (EECR & (1<<EEWE)));
if (err && good1)
{
CLI;
EEAR = (ADR & 0x01ff);
EEDR = data;
EECR = (1<<EEMWE);
EECR = (1<<EEWE);
EEAR = 0;
SEI;
}
}
unsigned char EEGET(unsigned int ADR)
{ unsigned int err=0;
unsigned char t;
while (--err && (EECR & (1<<EEWE)));
if (err)
{ EEAR = (ADR & 0x01ff);
EECR = (1<<EERE);
}
EEAR = 0;
t = EEDR;
return (t);
}
Частота 5 МГц. Т.е. задержка ожидания готовности до 0,15с - в 20 раз перекрывает время записи.
Да и по ерате вроде проблем небыло. Не может же 5 мег дохлых быть изодной партии и подряд.
Хотя сейчас именно мысль появилась - если запись привязана к внутреннему рц генератору, то может он накрылся?