Перейти к содержанию
    

PIC16F873 управление пинами через ICD(ICSP)

Здравствуйте.

Проблема в следующем:

Есть устройство на 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, но это не обязательно - можно и другое что приделать. Главное понять, есть ли в принципе возможность...

Изменено пользователем Ant.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если вы действительно имеете ввиду "внешнюю EEPROM подключенной по SPI", то возможности программировать ее через ICD никогда и не было.

Внешняя EEPROM к программированию МК отношения не имеет.

Через отладчик/программатор можно прошить только внутреннюю EEPROM, но все биты защиты взведены. Более того, взведен даже бит LVP, так что вы даже очистить ПИК не можете через ICD, только выпаивая и подключая к параллельному программатору.

 

Но если задача состоит только в изменении внешней EEPROM - то проблем нет никаких.

Выпаиваете её из платы и читаете/пишете во внешнем программаторе :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если вы действительно имеете ввиду "внешнюю 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), предварительно удалив там компаунд, но это не самое технологичное решение.

Изменено пользователем Ant.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Меня интересует не сколько программирование внешней EEPROM, сколько доступ к периферийным регистрам МК(в частности к GPIO) через интерфейс ICD(вернее ICSP) при установленных битах защиты.

Теперь понял вашу мысль, идея интересная. Возможно и осуществимая.

Нужно поискать у Микрочипа документы по протоколу отладчика (в свободном ли он доступе),

ну и попробовать на реальной тестовой плате.

Я в этом направлении никогда не разбирался.

 

Единственно, смущает, что у ПИК16 полупрограммный отладчик, который при включении грузит доп. коды во флеш и использует часть общих ресурсов.

Этот бит тоже есть в слове конфигурации, у вас он в распечатке отсутствует.

 

И если доступ к портам идет через этот доп. отладчик, то ничего не получится.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

вы даже очистить ПИК не можете через ICD, только выпаивая и подключая к параллельному программатору.

Это Вы с АВР попутали. :rolleyes:

Сорри за оффтоп.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...