Arduino программатор PIC-ов.

Arduino программатор PIC-ов.
Иногда встречаются очень интересные проекты выполненные на микросхемах PIC. Это микроконтроллеры с RISC архитектурой,
производимые фирмой Microchip Technology. Программаторы для PIC сложные и дорогие. Чтобы сделать программатор для PIC, нужен программатор для PIC, замкнутый круг для самодельщина. Но у нас есть Arduina! Сделаем из ардуины очень дешевый, очень простой, но работающий как очень дорогие HVSP программаторы микроконтроллеров от Microchip Technology.

HVSP - это High Voltage Serial Programming, высоковольтное последовательное программирование. Высоковольтное программирование позволяет сделать рабочим окирпиченный PIC контроллер из за неправильно выставленных фьюзов или заблокированных ног используемых при низковольтном программировании. В общем без разницы в каком состоянии Вам пришлют хитрые китайцы микроконтроллер, главное, чтобы он был аппаратно живой. А разлочить можно и ардуиной. Запрограммировать можно и ардуиной.

Схема.
программатор.PNG


Сборка на макетной плате.

maket.jpg

Настройка Step-UP DC-DC
13V.jpg


Пример работы программатора сделанного из ардуино нано в макете с парой дополнительных деталей которые можно выдрать из старой техники. Единственное для удобства я использовал повышающий преобразователь для получения 13V нужных для высоковольтного программирования. Удобство заключается в том, что просто вставляете программатор в USB и работаете не заморачиваясь на необходимости подачи внешнего питания. Иначе просто можно подать это напряжение от внешнего блока питания и схема станет еще проще.

pic16f628a.jpg
programmator-avr-svoimi-rukami.jpg
 

Вложения

Изменено:

Комментарии

apecks

✩✩✩✩✩✩✩
10 Июн 2022
5
2

@ТехнарьКто,
Перевод я знаю.
Получается, что программа почему-то не очищает МК. Хотя процедура ERASE проходит успешно.
 

johni5

✩✩✩✩✩✩✩
13 Май 2021
13
2
Проблема может быть в чем угодно: плохой контакт на плате, мк накрылся, магнитные бури на Марсе. Эта ошибка летит когда не получилось записать слово данных. Часто такое бывает когда бит защиты установлен в конфигурации, тогда надо стирать мк полностью. Я бы подключился через монитор порта и попытался вручную, что-нибудь записать через команду write и проверил через read
 

ТехнарьКто

★★★★★✩✩
13 Янв 2020
270
438
@apecks,

Если стирание проходит успешно и запись проходит успешно, возможно просто все записалось? :) Если в прошивке стоит запрет на чтение, то в конце записи будет ошибка, обусловленная работой защиты. Попробуйте записанный pic в работе, может все работает и паника напрасна?
 

apecks

✩✩✩✩✩✩✩
10 Июн 2022
5
2
Не совсем так. Первый раз МК прошился успешно, но потом понял, что не тот файл прошивки "залил". Попытался записать нужный .hex файл. В итоге МК определяется, в коефигурации стоит слово 3FFF. Стирание проходит успешно, выбираю путь к нужному файлу прошивки, нажимаю WRITE - появляется ошибка. МК не работает ни с первым файлом прошивки, ни со вторым.
 

ТехнарьКто

★★★★★✩✩
13 Янв 2020
270
438
@apecks,

У Вас два варианта.
1) Неисправен программатор.
2) Неисправен микроконтроллер.

Дистанционно узнать, что у Вас, это невозможно. Могу лишь пояснить.

1) Проверить собранную схему. Вы по первой схеме в этой ветке собирали или свое сделали? Если по первой схеме в этой ветке, то. Ардуина использована 5V и 16MГц. Попробуйте поставить сопротивление между 10 ногой пика и землей 300 Ом. Проверьте, что на 4 ногу пика подается 13 вольт, а при открытии транзистора эти 13 вольт резко уменьшаются до уровня логического нуля (менее 0.5V). Уровни программирования соответствуют логическим уровням 5V. Питание на PIC подается выше уровней программирования. То есть уровни программирования 4,75V, а питание PIC 5V. Питание ардуино те же 5V. Скетч в ардуино залит рекомендованный мной, а не непонятно как тут ребятами оптимизированный. Я понятия не имею, что они со скетчем сделали. Проверить драйвер в операционной системе потому, что например win10 связи санкциями, тихо гадит после обновлений. Проверить работу программатора на другой, более старой операционной системе win7, winXP. Проверить работу программатора с другим заведомо исправным pic16f628a. Если заработало, переходить к пункту (2).

2) Неисправен микроконтроллер. Например хитрозадые китайцы были застуканы на том, что продавали разово программируемые но определяющиеся как pic16f628a. Программировались всего один раз. Как уж китайцы это намухлевали мне не ведомо, но партия таких была продана через али. Возможно Вы банально сожгли чип. И так бывает. Если есть возможность, проверить pic на другом программаторе, то проверьте. Если возможности отсутствует то когда будет побежден пункт (1) проверите этот pic на своем программаторе. Если один перезаписывается, а второй pic нет, явно второй будет неисправен.

Если схема у Вас другая. Скетч у Вас иной. Тогда спрашивайте у тех, где Вы это брали.

Чем смог, помог.

PS Первая схема в этой ветке идеально работает на не обновляемой WIN7 c множеством PIC16F628a и прошивает и перепрошивает.
 

apecks

✩✩✩✩✩✩✩
10 Июн 2022
5
2
1. Собирал по первой схеме.
2. Использована Ардуина Нано 5 В, 16 МГц.
3. Напряжение на 4 ноге PICa 13В имеется (при стирании), ставил для наглядности светодиод. При нажатии кнопки Write 13В появляется и тут же пропадает, больше не появляется.
4. Скэтч заливал ваш, который для более поздней версии IDE.
Попробую на 10 ногу поставить сопр-ние на 300 Ом, вместо 2кОм, как в схеме. Ещё раз проверю все напряжения. Ну, и попробую другой PIC.
Удивило то, что с первого раза всё получилось сначало. А теперь почему-то не хочет. Уж больно штука удобная. Всё что надо имелось, ничего покупать не пришлось.
СПАСИБО ЗА ПОМОЩЬ! По результатам отпишусь.
 
  • Лойс +1
Реакции: ТехнарьКто

johni5

✩✩✩✩✩✩✩
13 Май 2021
13
2
Проверьте еще ноги ардуины на работоспособность портов, они нередко выходят из строя. Тот что управляет Vdd (кстати, на схеме в начале темы это соединение не показано) я вообще подключил через транзистор, правда в этом случае нужно сигнал инвертировать в скетче или ставить внешний инвертор. Питать f628а нужно кстати именно от ардуины, так как для перехода в режим программирования важна последовательность подачи напряжений: сперва Vpp затем Vdd. Если питание МК подключить напрямую к +5 то с высокой долей вероятности он не перейдет в режим программирования. Хотя тут народ пишет у кого-то переходит, но не устойчиво.
 
Изменено:

apecks

✩✩✩✩✩✩✩
10 Июн 2022
5
2
Вчера перезалил скетч в Ардуино, заново скачал архив с ArdPicProgHost, 5В для МК взял на прямую с Ардуины (как и первый раз), 10-ю ногу МК подтянул на землю через резистор 1кОм вместо 2кОм. Хотя ТехнарьКто советовал через 300 Ом (не нашёл).
Подал 13В, подключил Ардуину, открыл программу, МК определся, конфигурация показала 3F0A, стёр МК, нажал кнопку "запись" и всё произошло!!! Прошивка прописалась, МК работает.
Пока не знаю, что в итоге помогло: уменьшение сопротивления на 10 ноге МК или переподключение схемы на макетке, буду пробовать ещё. Всё равно, всем не равнодушным спасибо!
 
  • Лойс +1
Реакции: ТехнарьКто

Night_Spirit

✩✩✩✩✩✩✩
6 Июл 2022
1
1
Всем привет,есть необходимость считать pic16f723 . Как добавить эту модель мк в скетч и хост?Редактировать progmem?Может есть какие-нибудь примеры?
Круг поиска сузился) Помогите найти flash type и разобраться с адресацией памяти.
Цифра после FLASH указывает на кол-во банков памяти?
При нажатии "read" хост ругается на Lenght должно быть больше или равно нулю.

Резюме: туфта эта ардуина в моем случае.Не тянет она по быстродействию даже тупо прочесть память,открываем
https://ww1.microchip.com/downloads/en/DeviceDoc/41332D.pdf Глава 8. Serial program/verify 80-100нс на импульсы,когда у ардуины минимальный порог 1000нс. Можно е#аться вечность с подключением и кодом, а оказывается все просто - слабое железо ардуины не вывозит))
Всем спасибо за "помощь", пошел за нормальным программатором.
 
Изменено:
  • Лойс +1
Реакции: Shtazik

johni5

✩✩✩✩✩✩✩
13 Май 2021
13
2
Кто пользуется этим программером, подскажите, область данных (EEPROM) у вас пишется? Прошиваю 12F675, код пишется без проблем, а вот EEPROM криво. Пробую через монитор порта IDE писать, скажем write 2100 10 , то через раз сохраняет, то вообще не работает. Может кто сталкивался?
 

Аллайя

✩✩✩✩✩✩✩
20 Июл 2021
11
1
@johni5, мне кажется тут ларчик по-другому открывается: есть такое приложение - Arduino Pic Programmer...
 

johni5

✩✩✩✩✩✩✩
13 Май 2021
13
2
Нашел проблему. Процедура записи в EEPROM очень чувствительна к задержке после команды записи (об этом и в документации сказано). Почему-то блок команды программирования EEPROM и FLASH был объединен. Немного его переделал и все стало работать. Вот исправленный вариант:
C++:
void beginProgramCycle(unsigned long addr, bool isData)
{
  switch (isData ? dataFlashType : progFlashType) {
    case FLASH:
      sendSimpleCommand(CMD_BEGIN_PROGRAM);
      delayMicroseconds(DELAY_TDPROG + DELAY_TERA);
      break;
    case EEPROM:
      sendSimpleCommand(CMD_BEGIN_PROGRAM);
      //delayMicroseconds(DELAY_TDPROG);
      delay(6);
      break;
    case FLASH4:
      sendSimpleCommand(CMD_BEGIN_PROGRAM);
      delayMicroseconds(DELAY_TPROG);
      break;
    case FLASH5:
      sendSimpleCommand(CMD_BEGIN_PROGRAM_ONLY);
      delayMicroseconds(DELAY_TPROG5);
      sendSimpleCommand(CMD_END_PROGRAM_ONLY);
      break;
  }
}
delayMicroseconds(DELAY_TDPROG); почему-то тоже не отрабатывала должным образом, поэтому заменил на рабочий delay(6);
 
  • Лойс +1
Реакции: Аллайя

Deoptim

✩✩✩✩✩✩✩
3 Сен 2022
10
1
Добрый день.
Еще в апреле добавил поддержку "configuration word 2" в скетч
что открывает поддержку еще большего кол-ва новых PIC'ов (если их добавить самостоятельно и соответственно тестировать)
Лично я тестировал только то что имею PIC12F1822.
Консольную ardpicprog изменять не нужно, все поддерживается без изменений.
А вот утилита где GUI уже глючит с адресом EEPROM(больше 16 бит) и configword2(как configword1+configword2 т.е. оно 16 бит прибавляет к 16 бит ) - ее нужно адаптировать.
 
Изменено:
  • Лойс +1
Реакции: johni5

Deoptim

✩✩✩✩✩✩✩
3 Сен 2022
10
1
Избыточное цитирование. Отредактируй или сообщение будет удалено
Изменено:

Аллайя

✩✩✩✩✩✩✩
20 Июл 2021
11
1
Избыточное цитирование. Отредактируй или сообщение будет удалено
Резюме: туфта эта ардуина в моем случае.Не тянет она по быстродействию даже тупо прочесть память,открываем
https://ww1.microchip.com/downloads/en/DeviceDoc/41332D.pdf Глава 8. Serial program/verify 80-100нс на импульсы,когда у ардуины минимальный порог 1000нс. Можно е#аться вечность с подключением и кодом, а оказывается все просто - слабое железо ардуины не вывозит))
Всем спасибо за "помощь", пошел за нормальным программатором.
 

topol72

✩✩✩✩✩✩✩
13 Дек 2020
2
0
добрый день!
Собрал данный программатор для программирования PIC16F628. Оболочки необходимые работают, но в итоге как не записывается EEPROM, так и непонятно: программа показывает что данные FLASH в чип записались, а тестовый светодиод не мигает. И на ноге PIC нет 12 вольт. После резистора на MCLR напряжения практически нет. Что не так делаю подскажите, спасибо.
 

johni5

✩✩✩✩✩✩✩
13 Май 2021
13
2
Как настроены конфигурационные биты?
Возможно в тестовой схеме блинка вывод MCLR надо на Vdd через резистор посадить чтобы в постоянный ресет не уходил.
Про EEPROM я чуть выше описал проблему и решение, нужно было немного скетч поправить.
 

Аллайя

✩✩✩✩✩✩✩
20 Июл 2021
11
1
@topol72, При входе в режим программирования программатор определяет как это сделать, в завис-ти от того или иного МК. Конкретно для этого камня, в режиме программирования напряжение на выводе MCLR обычно достигает примерно 12 В.
 

topol72

✩✩✩✩✩✩✩
13 Дек 2020
2
0
Все сделано согласно предлагаемой схемы. Вывод MCLR на ней подключен через резистор 10кОм. Такое впечатление что резистор полностью "убивает" входное напряжение.
 

Alex121

★✩✩✩✩✩✩
10 Окт 2019
27
16
Все сделано согласно предлагаемой схемы. Вывод MCLR на ней подключен через резистор 10кОм. Такое впечатление что резистор полностью "убивает" входное напряжение.
так и должно быть. транзистор открыт всё время, пока контроллер не даст разрешение на запись - т.е. закроет транзистор, тогда и появится 12В. Пока транзистор открыт всё напряжение будет "съёдаться" резистором - так надо.
to all транзистор можно заменить любым N-Ch мосфетом. Я поставил 2n7002 - он идеально становится ножками на плату ардуины. Хотя это и не особо важно. Так же (на свой страх и риск!) можно выкинуть все резисторы кроме 10к, они служат только для защиты портов от перегрузки, которой при исправных МК не должно быть. Я собрал и прошил без резисторов, но, повторюсь - под вашу ответственность.
Программатор прошивал hex-ом от камрада Eig (за что ему отдельное спасибо!) завелся с первой попытки, прошил мой PIC16F886 без вопросов. Я доволен.
 
Изменено:

viktor1703

★★★✩✩✩✩
9 Дек 2021
615
146
При прошивке PIC16F676 возникла проблема - не читается калибровочная константа. Даже если её прописал вручную и прошил, то после все равно не читается. У меня в проекте нет жестких требований к таймингам, но всё же...
 

Вложения

  • 144.1 KB Просмотры: 58

Djek.83

✩✩✩✩✩✩✩
28 Янв 2023
2
0
@Аллайя,
А это только с Arduino Uno работает?. А то у меня на nano ничего не получается.
 
Изменено: