Кажется обнаружена причина затирания памяти МК при старте и периодический отказ стартовать.
При старте микроконтроллера с использованием рекомендуемого стартап кода, происходит проверка бита DBGSR.0, если бит выставлен, то происходит прыжок по адресу 0xFA40, данная процедура необходима для прошивки МК по JTAG. В случае, если JTAG отключен, то на свободных выводах при включении питания могут возникать наводки, из-за которых бит DBGSR.0 выставляется в единицу и программа прыгает по адресу 0xFA40. При этом без JTAG адаптера МК начинает вести себя непредсказуемо, что может закончится повреждением Flash-памяти и другими сбоями. Проверить это довольно-таки легко: достаточно выключить питание, положить палец на выводы JTAG и включить питание, в большинстве случаев происходит зависание МК.
Чтобы избежать данной ситуации необходимо УДАЛИТЬ в файле START167.A66 следующие строчки:
Код: Выделить всё
DBGSR EQU 0F0FCH
extr #1
mov R4,DBGSR
jnb R4.0,RUN_MAIN
mov R5,R4
and R5,#000C0H
jmpr CC_NZ,RUN_MAIN
jmpa CC_UC,0FA40H
Чтобы при этом сохранилась возможность прошивать МК по JTAG без внешней памяти, необходимо использовать метод, описанный мною в ERRATA. Откорректированная версия ERRATA прилагается.
P.S. Хотелось бы получить от разработчиков МК текст программы, находящейся по адресу 0xFA40, а то заниматься дизассемблированием, чтобы понять, что же происходит не очень хочется. Правда, на ответ я не надеюсь.