Программатор некий ТРБ2, MPLABом опознаётся как родной PICSTART. Контроллер
PIC12F675. MPLAB
6.30.00. Глюк такой.
Компилирую программу, жму кнопку "Program" в MPLABе. Программирование проходит нормально, верификация (которая делается следом самим MPLABом) - тоже всё ОК. Жму кнопку "Verify" -
обнаруживается несоответствие одного байта EEPROM. Причём адрес этого байта определяется связкой
MOVLW XX
MOVWF EEADR,
присутствующей в начале программы. Как может текст программы влиять на процесс программирования/верификации??? Еще прикол - в начале программы есть команда
RLF DEV_TYPE,F (DEV_TYPE=#58, но этот адрес роли не играет)
Если эту команду убрать - глюк исчезает. Даже если изменить её на RLF DEV_TYPE,W - всё путём. Но если написать
RLF DEV_TYPE,W
MOVWF DEV_TYPE
глюк снова проявляется. За что MPLAB так невзлюбил эту ячейку?? Изменение имени ячейки или её адреса эффекта не даёт, EEPROM всё равно программируется криво.
Программа в зашитом пике читает злосчастную ячейку EEPROM так же, как и программатор при повторных верификациях, то есть криво (обнаруживается там не то, что записывали).
На нескольких контроллерах глюк проявляется абсолютно одинаково. Программатор без нареканий программировал эти самые 12F675 уже год. Пытался загрузить злополучный HEX в другой программатор (ChipProg) - косяк тот же. Видимо, дело всё-таки в HEXe. На что грешить - совершенно непонятно.