Автор: Ant. May 4 2018, 09:18
Здравствуйте.
Проблема в следующем:
Есть устройство на PIC16F873 с внешней EEPROM подключенной по SPI.
Биты конфигурации:
Код
Address Value Field Category Setting
2007 0E46 FOSC Oscillator Selection bits HS oscillator
WDTE Watchdog Timer Enable bit WDT enabled
PWRTE Power-up Timer Enable bit PWRT enabled
CP FLASH Program Memory Code Protection bits 0000h to 0FFFh code protected
BOREN Brown-out Reset Enable bit BOR enabled
LVP Low Voltage In-Circuit Serial Programming Enable bitRB3 is digital I/O, HV on MCLR must be used for programming
CPD Data EE Memory Code Protection Data EEPROM memory code-protected
WRT FLASH Program Memory Write Enable Unprotected program memory may be written to by EECON control
На устройстве присутствует ICD разъем.
Хотелось бы запрограммировать внешнюю EEPROM дергая портами через ICD интерфейс.
Возможно ли это с учетом установленных битов защиты?
В MPLAB IDE v8.89 все Special Function Registers отображаются по нулям. При попытке изменения значения RB в данном окошке оно становится красным, после обновления - черным, но с контроллером похоже ничего не происходит. Это нормально?
Использую MPLAB ICD2, но это не обязательно - можно и другое что приделать. Главное понять, есть ли в принципе возможность...
Автор: Baser May 4 2018, 11:05
Если вы действительно имеете ввиду "внешнюю EEPROM подключенной по SPI", то возможности программировать ее через ICD никогда и не было.
Внешняя EEPROM к программированию МК отношения не имеет.
Через отладчик/программатор можно прошить только внутреннюю EEPROM, но все биты защиты взведены. Более того, взведен даже бит LVP, так что вы даже очистить ПИК не можете через ICD, только выпаивая и подключая к параллельному программатору.
Но если задача состоит только в изменении внешней EEPROM - то проблем нет никаких.
Выпаиваете её из платы и читаете/пишете во внешнем программаторе
Автор: Ant. May 4 2018, 14:44
Цитата(Baser @ May 4 2018, 14:05)
Если вы действительно имеете ввиду "внешнюю EEPROM подключенной по SPI", то возможности программировать ее через ICD никогда и не было.
Внешняя EEPROM к программированию МК отношения не имеет.
Меня интересует не сколько программирование внешней EEPROM, сколько доступ к периферийным регистрам МК(в частности к GPIO) через интерфейс ICD(вернее ICSP) при установленных битах защиты. По идее они относятся к памяти и если полагаться на цитату из MPLAB "Unprotected program memory may be written to by EECON control", то должен быть доступ к этому регистру и возможно к остальным тоже.
Может быть для этого нужно, чтобы ядро и все клоки периферии не были остановлены?
Не обязательно делать это штатными средствами типа ICD2 или PICKit - можно было бы сделать свое устройство на любом восьминогом МК.
Цитата
Более того, взведен даже бит LVP, так что вы даже очистить ПИК не можете через ICD, только выпаивая и подключая к параллельному программатору.
MPLAB ICD2 вроде умеет подавать HV на MCLR. Этого должно быть достаточно, но перепрошивать сам PIC не требуется.
Цитата
Но если задача состоит только в изменении внешней EEPROM - то проблем нет никаких.
Выпаиваете её из платы и читаете/пишете во внешнем программаторе
Проблема в том, что плата установлена в литом герметичном корпусе и залита компаундом, так что доступен лишь разъем внутресхемного программирования. EEPROM находится с обратной стороны и без разрушения конструкции к ней не добраться. Можно лишь подцепиться к контактам PICа(он с доступной стороны платы, но в SOIC), предварительно удалив там компаунд, но это не самое технологичное решение.
Автор: Baser May 4 2018, 15:18
Цитата(Ant. @ May 4 2018, 17:44)
Меня интересует не сколько программирование внешней EEPROM, сколько доступ к периферийным регистрам МК(в частности к GPIO) через интерфейс ICD(вернее ICSP) при установленных битах защиты.
Теперь понял вашу мысль, идея интересная. Возможно и осуществимая.
Нужно поискать у Микрочипа документы по протоколу отладчика (в свободном ли он доступе),
ну и попробовать на реальной тестовой плате.
Я в этом направлении никогда не разбирался.
Единственно, смущает, что у ПИК16 полупрограммный отладчик, который при включении грузит доп. коды во флеш и использует часть общих ресурсов.
Этот бит тоже есть в слове конфигурации, у вас он в распечатке отсутствует.
И если доступ к портам идет через этот доп. отладчик, то ничего не получится.
Автор: Smen May 8 2018, 06:13
Цитата(Baser @ May 4 2018, 16:05)
вы даже очистить ПИК не можете через ICD, только выпаивая и подключая к параллельному программатору.
Это Вы с АВР попутали.
Сорри за оффтоп.