Всем доброго.
Сложилась неприятная ситуация с линейкой ATmega8A, ATmega32A и (предположительно) ATmega64L, все выпуска конца 16 года и новее.
Симптомы такие:
1. при питании 3.3В:
- заливка EEPROM с программатора идёт только при принудительной установке паузы после каждого байта минимум 10мс (9 - уже появляются ошибки верификации), причём при изменении одного байта и повторной заливке могут "посыпаться" несколько других, казалось бы даже и рядом не стоявших, а питание при этом стабильное,
- EEPROM крайне легко повреждается даже при чтении, если при этом активно дрыгать питанием,
- запись байта "изнутри" может вызвать повреждение его содержимого даже после ребута (это я вообще не понимаю как получается, можно с натяжкой списать на предыдущий пункт, но почему предпочитает ломаться именно последний записанный байт - загадка),
- особый смак: если (это случайно получилось) отключено питание AVCC, то активное дрыгание основным питанием приводило к повреждению EEPROM даже в случае свехсложной программы int main(void){while(1);} честно-честно,
2. при питании 5В работает как и раньше (по крайней мере с программатора шьётся на ура с первого же раза, насчёт повреждения пока не проверял).
Напоминаю на всяк случай: нижняя граница питания по спеку 2.7В, а частота при этом может быть 8МГц максимум, т.е. спек не нарушен. Тактируется проц от внутреннего RC 8МГц.
Обращение к EEPROM "изнутри" шло как в примере из спека, при обнаружении проблем были учтены дополнительные проверки битов и запреты прерываний (каюсь, не ставил cli-sei, работало годами), результат не стопроцентный, хотя вроде стало получше.
Это НЕ относится (почему-то) к чипам выпуска 14 года, например.
Вроде бы вырулил введением дополнительных пауз ПЕРЕД записью (типа медленно подошёл, огляделся, быстро спёр и слинял), аккуратным стартом проца и т.п., но осадок остался.
Что изменилось в чипах после поглощения атмела микрочипом? Или у меня уже попросту бред?