ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Среда
24 апреля
1167297 Топик полностью
AlexG (23.01.2022 19:39, просмотров: 289) ответил mse homjak на Не факт... Не факт... Для АВР есть хороший способ избежать проблем с ЕЕПРОМ, известный с первобытных времён: парковать ЕЕАР в "0", например, после любого использования. И всё... У меня в Мегах(ещо классичских, 128, 48) лежат калибровочные таблицы почти во всю память. Ну ни разу не приезжало поделие с диагнозом "чота не то меряет". С 2003 года.
Я знаю про нулевой адрес и BOD. Почти всегда использовал встроенные в компилятор функции работы с EEPROM и с обычными AVR они не подводили (кроме как в бета-версии среды разработки). Какие-то меры там уже приняты, подозреваю, что неиспользуемый нулевой адрес и парковка. 

У Хмег случались повреждения данных. Достаточно редко чтобы как-то попытаться это исследовать, но достаточно часто чтобы потребовались меры.

С поддержкой AVR-D в IAR сейчас столько проблем, что до вопроса надежности EEPROM можно элементарно не дойти. Компилятор при попытке получения указателя на элемент лежащей в EEPROM структуры может подсунуть не тот адрес. Находящийся в регистрах адрес, относительно которого компилятор обращается к переменным, в нужный момент может оказаться затерт (а data-брекпойнтов нет, чтобы выяснить кто-же это сделал). switch-caseы и ifы, волшебным образом влетающие не в ту ветку. Плюс все это проявляется по разному при разных уровнях оптимизации. Плюс сходящий с ума линкер. Просто замечательно, что все это происходит в небольшом чисто пробном проекте.