Столкнулся с непонятным поведением МК.
Функционирование прошивки зависит от содержимого EEPROM (если ключевой байт не равен 0x00 - работает). Некоторое время работает (вкл/выкл. несколько раз), затем перестает.
Читаю программатором память - ключевой байт сброшен в 0x00, также появляются артефакты по неиспользуемым адресам памяти.
В прошивке нет кода, пишущего в память, только чтение, так что ошибка логики исключается.
После записи памяти проверяю содержимое - все точно.
Скорость программатора на минимуме - ошибок чтения быть не должно, да и неработающая прошивка говорит об изменении памяти.
Тоже мне бином Ньютона. Защита от халявы поставлена. Счетчик включений в ЕЕПРОМе сидит. В прошивке нет кода, пишущего в память, только чтение - кто сказал что нет, суслика можно и не видеть, а он есть. И воще вопрос ни о чём.
Да, ответ ни о чем. СпойлерНовичку простительно - придя на форум, считают себя Ст.Джобсами, как минимум, среди недоумков. Это не наезд - так, мягкое внушение. Может быть, дело в питании. При плавной подаче-снятии питания могут быть такие ситуации, когда в промежуточном состоянии (0...5В) МК как бы "полуработает", т.е. он вроде уже и МК, только не совсем - разные "органы" его оживают не одновременно. Пытаться найти логику поведения в такой ситуации = предсказать траекторию прыжков раненого тореаодорм быка. Решение - не надо экономить 5 копеек, надо установить супервайзер питания, который ресетом разрешает работу только при установившемся питании. Кстати, в доке это прописано. И второе - разрушаются ( по моим наблюдениям ) обычно начальные ячейки EEPROM, потому я в своих изделиях ( тиражи - сотни экз. ) использовал начиная приблизительно с 0x20 . В самом МК тоже есть BOD (Brown-out Detector), но я его не использовал, потому не могу охарактеризовать.
Вторая причина - опять же в питании. Сильная помеха может проникать в кристалл и, независимо от отсутствия команд записи, непосредственно воздействовать на EEPROM . Правильная разводка, экранирование, фильтрация - эта азбука проектировщика д. быть соблюдена. Надеюсь, керамика > 0,1 mkF непосредственно у МК стоит ?
Либо аппаратная ошибка (питание ниже 2,7вольта при работе с еепром на стирание/запись) либо программный глюк.
Корректно записанная программатором информация искажаться не должна.
На крайний случай схемы BOD и POR с соответствующим программным контролем
флагов вполне справляются с помехами по питанию.
Основные правила работы с EEPROM: включить BODEN, не использовать первый байт EEPROM, после работы с EEPROM указатель на первый байт. Если и МК и насрет в этот байт, то мы его все равно не используем. Учитываем, что запись 1 байта длится 8 мс. Если используется WATCHDOG, то перед записью в EEPROM либо отключать либо считаем байты и время записи и настраиваем сторожевой таймер на соответствующее время с запасом.
Друзья Кота, грызущие канифоль! Все хорошо, теорию погрызли. И? Уж коль пошла такая котовасия, требую от ТС выложить причину сей котовасии. Asm or hex, что есть. А там посмотрим. Нехрен тухлый вискас перетирать.
Телепат. Видит, чем управляет дивайс, какое питание, разводка платы, помеховая обстановка. Считать, что ошибка работы дивайса = 100% ошибка в проге может только очень начинающий embedder .
А ТСу это уже до лампы, он уже Рождество отметил, ему хорошо