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
 

Вложения

Изменено:

Комментарии

SieOK

✩✩✩✩✩✩✩
7 Янв 2021
5
1
Наконец-то нашёл то что нужно. Спасибо за поднятую ветку, с удовольствием зарегистрировался на форуме.
Оказывается у AlexGyver-a не только вменяемые уроки по ардуино на сайте, интересные авторские разработки, скоростное ядро для ардуины, но ещё и толковый форум.
Делал когда-то своим рыбакам кораблик на подарок, самую грамотную подачу материала нашёл здесь
AlexGyver nRF24L01
Когда залез на сайт автора, немножко прозрел, занёс в закладки, и вот наконец-то то что надо... Зарегистрировался.
---------------------
Предыстория такова - понадобилось разово запрограммировать парочку PIC16F676, есть уже интересный проект паяльной станции, готовы печатные платы, всё собрано, даже собран программатор https://drive.google.com/file/d/1R0hs2tJRL9UQa5GvN7LYhbGIbJkaDu7T/view?usp=sharing
Работая с проектами на ардуино всё просто, так же казалось и с PIC, но не тут то было

Оказывается в PIC-контроллер можно заливать прошивку четырьмя способами: https://radiohlam.ru/progr_asm_6/

Более того для полного понимания прошивки разных МК нужно знать отличие между ними. Очень хорошая ссылка на сводную таблицу для того чтобы быстро разобраться почему программатор заливает прошивку в один контроллер, и не заливает в другой (плюс там ещё и распиновки из даташитов даны) https://radiohlam.ru/pic_param/

Результатом анализа разных схем программаторов ( а хотелось попроще и поуниверсальней ) стала сводная таблица в картинке:

!_ВСЕ-ПИНЫ.jpg

и несколько схемных решений:

1 - Программатор ART2003 от LPT-порта:
_схема_LPT.jpg

2 - Multi PIC Programmer 5 ver.2 с какого-то японского сайта:

1_схема.png

3 - Упрощенная схема Multi PIC Programmer (Источник: Радиоаматор №9, 2014 ) :

1_схема=.jpg

4 - Классический JDM-программатор без поддержки VPP:


___JDM_схема.jpg

5 - Классический JDM-программатор c поддержкой VPP:

_Малыш FM_JDM_схема=ориг.jpg

Но контроллер PIC16F676 так запрограммирован и не был!!!

Пробовал заливать прошивку программами IC-Prog_v-1.05, IC-Prog_v-1.06, WinPic800, PicPGM, WinPICpgm, затёр даже калибровочную константу, пришлось купить ещё один контроллер в этом же магазине из этой же партии.

Не помог даже принесенный из закромов раритетный ноут Хитачи https://drive.google.com/file/d/15OUT8v0mT9Dh2xMy5PrC9GTmJE5urNAA/view?usp=sharing

Результат всех моих усилий в виде архива (дистрибутивы программ, собранные и отредактированные материалы, сводная таблица для локального просмотра) можно взять на гуглодиске, может кому пригодится:

Думаю с помощью материалов данной ветки этого форума я наконец-то доделаю свою паяльную станцию, результаты выложу по готовности
 
Изменено:

DAK

★★★✩✩✩✩
8 Окт 2020
517
137
Если на такой макетке, то причина найдена. Я вполне серьезно. Причина не работоспособности именно эта макетная плата. Если впаяна ардуина нано, то надо убирать (выпаивать или выкусывать) все неиспользуемые штыри от ардуины к макетной плате. И тогда заработает. И это не шутка.
А если в скетче неиспользуемые пины сделать входами подтянутые к массе через встроенный резистор, input pullup, может помочь?
 

SieOK

✩✩✩✩✩✩✩
7 Янв 2021
5
1
Я использовал повышающий преобразователь для получения 13V нужных для высоковольтного программирования. Удобство заключается в том, что просто вставляете программатор в USB и работаете не заморачиваясь на необходимости подачи внешнего питания. Иначе просто можно подать это напряжение от внешнего блока питания и схема станет еще проще.
У кого нет повышающего DC-DC использованного в статье, его легко сделать самому из копеечных деталей:

- Микросхема MC34063 (два рубля) https://3v3.com.ua/product_1550.html

- Схема преобразователя

power_supply_mc34063.png

- Схема регулировки VPP:

power_supply_mc34063_adjustable.png

- Вид макетной сборки :

power_supply_mc34063_breadboard.jpg

- Статья в помощь http://rweather.github.io/ardpicprog/alternative_vpp_circuits.html
 
  • Лойс +1
Реакции: ТехнарьКто

AlexIz

✩✩✩✩✩✩✩
4 Янв 2021
6
1
У меня тоже не заработал программатор. С макетки убрал, спаял навесным монтажем. Два раза даже удалось подключиться к чипу, но стирать - не стирает и, соответственно, не записывает. А в большинстве случаев при загрузке программы чип не определяется, код конфигурации появляется, но каждый раз разный. Убил три вечера...
 

ТехнарьКто

★★★★★✩✩
13 Янв 2020
270
438
У меня тоже не заработал программатор.
Что значит тоже? У меня все замечательно работает, даже на такой макетке. Но для макетной платы пришлось на плате ардуино нано убрать все неиспользуемые в схеме штыри. Менять скетч как предлагает DAK я просто не пробовал. Ардуина должна быть 5-ти вольтовая 16Mhz.

С макетки убрал, спаял навесным монтажем. Два раза даже удалось подключиться к чипу, но стирать - не стирает и, соответственно, не записывает. А в большинстве случаев при загрузке программы чип не определяется, код конфигурации появляется, но каждый раз разный. Убил три вечера...
PIC какой прошивать пытаетесь? Я не экстрасенс. Есть PIC контроллеры с однократной возможностью записи. Есть PIC контроллеры не поддерживаемые этим программатором. Вариантов сделать из рабочей конструкции кирпич, очень много. Питание подавать только со вставленным в схему PIC-ом. Питание подавать сразу два, 5 вольт и 13 вольт одновременно. Питание 13 вольт на PIC подавать только через токоограничительный резистор, на схеме 10 КОм. Питание 5 вольт на PIC контроллер подавать одновременно с питанием на ардуино программатор. Если с азов то сначала надо установить драйвер для платы ардуино. Из Arduino IDE в ардуину используемую как программатор должны прошиваться скетчи. Если не прошивается - разбирайтесь, это азы. Ардуина программатор с неправильно подключенным или совсем не подключенным PIC-ом работать не будет. Нет PIC нечего прошивать, стираться и прошиватся естественно не будет. Прошитый как программатор ардуино с предварительно подключенным PIC-ом для прошивки. Подать питающие напряжения, если 5V от USB, а 13 вольт со стороны то сначала подать 13 вольт поскольку это важно для перевода PIC в режим программирования. Включить программатор в USB. Запустить программу ArdPicProgHost. Выбрать в программе Номер com порта программатора ардуино. Если порт выбран, просто навести на это окошко указатель мышки и нажать левую кнопку мыши. Подождать когда окно выбора порта сменит цвет на зеленый. Выгрузить ArdPicProgHost нажав мышкой на крест в углу окна программы. Снова запустить ArdPicProgHost. При всем этом программатор из USB не вытаскивать, как вначале включили, так и не трогать. В ArdPicProgHost запущенный второй раз навести на окошко выбора порта указатель мышки и нажать левую кнопку мыши. Подождать когда окно выбора порта сменит цвет на зеленый. И только теперь в программе правильно определиться тип подключенного PIC контроллера если подключение выполнено правильно и подключен поддерживаемый PIC - контроллер. Это "pic12f629, pic12f675, pic16f630, pic16f676, pic16f84, pic16f84a, pic16f87, pic16f88, pic16f627, pic16f627a, pic16f628, pic16f628a, pic16f648a, pic16f882, pic16f883, pic16f884, pic16f886, pic16f887".
Поскольку скетч и программа разработаны другими людьми, скетч и ArdPicProgHost приведены здесь в том виде, котором их выложили авторы. Аппаратную часть программатора немного изменил, схема в первом сообщении.
Чем смог, надеюсь помог.
 
Изменено:

Konstantin900

✩✩✩✩✩✩✩
8 Дек 2020
1
0
Что значит тоже? У меня все замечательно работает, даже на такой макетке. Но для макетной платы пришлось на плате ардуино нано убрать все неиспользуемые в схеме штыри. Менять скетч как предлагает DAK я просто не пробовал. Ардуина должна быть 5-ти вольтовая 16Mhz.



PIC какой прошивать пытаетесь? Я не экстрасенс. Есть PIC контроллеры с однократной возможностью записи. Есть PIC контроллеры не поддерживаемые этим программатором. Вариантов сделать из рабочей конструкции кирпич, очень много. Питание подавать только со вставленным в схему PIC-ом. Питание подавать сразу два, 5 вольт и 13 вольт одновременно. Питание 13 вольт на PIC подавать только через токоограничительный резистор, на схеме 10 КОм. Питание 5 вольт на PIC контроллер подавать одновременно с питанием на ардуино программатор. Если с азов то сначала надо установить драйвер для платы ардуино. Из Arduino IDE в ардуину используемую как программатор должны прошиваться скетчи. Если не прошивается - разбирайтесь, это азы. Ардуина программатор с неправильно подключенным или совсем не подключенным PIC-ом работать не будет. Нет PIC нечего прошивать, стираться и прошиватся естественно не будет. Прошитый как программатор ардуино с предварительно подключенным PIC-ом для прошивки. Подать питающие напряжения, если 5V от USB, а 13 вольт со стороны то сначала подать 13 вольт поскольку это важно для перевода PIC в режим программирования. Включить программатор в USB. Запустить программу ArdPicProgHost. Выбрать в программе Номер com порта программатора ардуино. Если порт выбран, просто навести на это окошко указатель мышки и нажать левую кнопку мыши. Подождать когда окно выбора порта сменит цвет на зеленый. Выгрузить ArdPicProgHost нажав мышкой на крест в углу окна программы. Снова запустить ArdPicProgHost. При всем этом программатор из USB не вытаскивать, как вначале включили, так и не трогать. В ArdPicProgHost запущенный второй раз навести на окошко выбора порта указатель мышки и нажать левую кнопку мыши. Подождать когда окно выбора порта сменит цвет на зеленый. И только теперь в программе правильно определиться тип подключенного PIC контроллера если подключение выполнено правильно и подключен поддерживаемый скетчем PIC. Это "pic12f629, pic12f675, pic16f630, pic16f676, pic16f84, pic16f84a, pic16f87, pic16f88, pic16f627, pic16f627a, pic16f628, pic16f628a, pic16f648a, pic16f882, pic16f883, pic16f884, pic16f886, pic16f887".
Другие PIC тоже можно подключить если внести изменения в скетч. Поскольку скетч и программа разработаны другими людьми, а предоставленный функционал меня устраивает, скетч и ArdPicProgHost приведены здесь в том виде, котором их выложили авторы.
Чем смог, надеюсь помог.
дело не в программаторе. он рабочий, проверено на nano и mega2560. сами PICи китайческие 50 на 50 работают
 

ТехнарьКто

★★★★★✩✩
13 Янв 2020
270
438
Для тех у кого не компилируется скетч. Скетч написан давно и в новые ардуино IDE внесены изменения которые и приводят к ошибке. В Arduino IDE v 1.6.5 компилируется без ошибки. На более новых, проверял от 1.6.9 и до 1.8.0, компилируется с ошибкой.
 
Изменено:

Dmiitry

✩✩✩✩✩✩✩
21 Янв 2021
1
1
@ТехнарьКто, М.б. есть смысл выложить скомпилированный HEX?
какой HEX, мы про компиляцию скетча в Arduino IDE, в версиях выше 1.6.5 компиляция скетча не возможна, и как следствие загрузка в ардинку тоже. Причина вроде в функции PROGMEM там что-то менялось в новых версиях, я не шарю особо, дальше говорить не буду)
Я качал другой, более старый скетч, схема такая как и тут, все работает. Шил без проблем PIC12F629 и PIC16F628 , кстати константу на 629ом пике не трет, прога ее сама перезаписывает, короче это идеальный простой программатор популярных ПИК контроллеров, собирается за 5 минут, изучается минут 25 еще, если с косяками идет дело, а если сразу все подходит так ну 15 минут) и ваш МК готов к работе. Спасибо автору!! Себестоимость 150 рублей и 30 минут времени)
 
  • Лойс +1
Реакции: domnin.al

DAK

★★★✩✩✩✩
8 Окт 2020
517
137
@Dmiitry, в Ардуино тоже можно скомпилированный файл залить. Так что, хороший вариант, скомпилировать в старой IDE и выложить сюда уже готовую прошивку.
 

ТехнарьКто

★★★★★✩✩
13 Янв 2020
270
438

Вложения

Евгений07

✩✩✩✩✩✩✩
29 Янв 2021
2
1
Здравствуйте, помогите пожалуйста когда заливаю скетч в ардуино выдает вот эту ошибку!
exit status 1
'prog_char' does not name a type; did you mean 'putchar'?
 
  • Лойс +1
Реакции: Molodec

ТехнарьКто

★★★★★✩✩
13 Янв 2020
270
438
Здравствуйте, помогите пожалуйста когда заливаю скетч в ардуино выдает вот эту ошибку!
---кусь--
Решил, что проще исправить, чем объяснять почему не работает. Поэтому загружайте исправленный для новых версий Arduino IDE скетч.
Или можно просто прошить готовый hex в ардуину. Hex тут. Подключаете ардуино через USB к компьютеру и прошиваете с помощью GC Uploader . Как это сделать, нажать тут.
 

Вложения

Изменено:

Евгений07

✩✩✩✩✩✩✩
29 Янв 2021
2
1
Решил, что проще исправить, чем объяснять почему не работает. Поэтому загружайте исправленный для новых версий Arduino IDE скетч.
Или можно просто прошить готовый hex в ардуину. Hex тут. Подключаете ардуино через USB к компьютеру и прошиваете с помощью GC Uploader . Как это сделать, нажать тут.
Спасибо большое за ответ, ардуину уже прошил, но определяется только конфигурация, прочитал выше ваши сообщения где вы перечислили pic контролеры и моего в нем не оказалось (16f876a). А так програматор заработал, делал все на 10ке.
 

andr8914

✩✩✩✩✩✩✩
3 Фев 2021
5
0
пытаюсь прочитать чип pic16f917. собрал все по инструкции. возможно чип залочен(снят с ламинатора) получаю вот так

1.jpg
2.jpg



после прочтения некоторых статей удалось добавить в скетч свой чип и пошло считывание.
добавил вот эти строки
const char s_pic16f917[] PROGMEM = "pic16f917";
{s_pic16f917, 0x1380, 8192, 0x2000, 0x2100, 9, 256, 0, 0, FLASH4, EEPROM},

теперь у меня вроде как читает но все же что то не то
1612432611711.png
Что значит вот эта конфигурация 3FFF
 
Изменено:

ТехнарьКто

★★★★★✩✩
13 Янв 2020
270
438
Что значит вот эта конфигурация 3FFF
3FFF - конфигурация чистая, бывает либо у нового PIC-a либо у стертого.

PS "Pogram memory" заполнена 3FFF - PIC чистый, для чистого или нового или стертого или заблокированого на чтение, память программ будет заполнена 3FFF
EEPROM заполнен нулями - смотрите в самом низу (конце), если там есть число то запишите его, обычно там хранят записанные производителем калибровочные константы. Предполагаю потому, что не работал с pic16f917. Например для pic16f628a константа не нужна и поэтому нету, а в EEPROM у нового чипа pic16f628a тоже будут 3FFF.
 

andr8914

✩✩✩✩✩✩✩
3 Фев 2021
5
0
3FFF - конфигурация чистая, бывает либо у нового PIC-a либо у стертого.

PS "Pogram memory" заполнена 3FFF - PIC чистый, для чистого или нового или стертого или заблокированого на чтение, память программ будет заполнена 3FFF
EEPROM заполнен нулями - смотрите в самом низу (конце), если там есть число то запишите его, обычно там хранят записанные производителем калибровочные константы. Предполагаю потому, что не работал с pic16f917. Например для pic16f628a константа не нужна и поэтому нету, а в EEPROM у нового чипа pic16f628a тоже будут 3FFF.
а могло быть так что из-за скачков напряжения в устройстве где стоял контроллер он стерся.
 

andr8914

✩✩✩✩✩✩✩
3 Фев 2021
5
0
убрал соеденение PGM на землю и считалось вот так 1612551320754.png
в самом начале строк 3FFF все таки он залочен я так понимаю и сним ничего нельзя зделать - верно?
 

ТехнарьКто

★★★★★✩✩
13 Янв 2020
270
438
убрал соеденение PGM на землю и считалось вот так Посмотреть вложение 21927
в самом начале строк 3FFF все таки он залочен я так понимаю и сним ничего нельзя зделать - верно?
Скажу честно. Понятия не имею. Все таки я больше электронщик, чем программист.
 

Борисыч

★✩✩✩✩✩✩
17 Дек 2020
19
11
lookatmusic.com
Вот, новая картинка. Из всех предостережений вижу только ОС Десятка 64. Попробую на Семёрке. Ошибка вылетает при нажатии в программе кнопок Прочитать , стереть и т.п.

Нет, и с Семёркой не прокатило. Та же ошибка. Какой- то отладчик JIT требует.
JIT - это just in time, типа запускается когда нужен.
В окошке про ошибку пишет что некая строка нулевой длинны и это не хорошо.
Попробуйте ввести имя прошивки (source file) ;)
 

SteamDwarf

✩✩✩✩✩✩✩
5 Дек 2020
4
1
пытаюсь прошить pic683.
скетч в Ардуино залил (01.02.2021 правка скетча от ТехнарьКто), спасибо, сперва не компилировался.
собрано навесом, корпус пика DIP8, PGM не подключал.
при назначении правильного порта коннектится, но пик не опознает.
при прошивке пика показывает запись значений по адресам, мигает красным, потом останавливается с сообщением: Необрабатываемое исключение в приложении.... Аргумент Lenght должен быть больше или равен нулю.
все дальнейшие попытки прочитать, стереть, записать заново приводят к тому же сообщению.

задолбался, выручайте
 

Борисыч

★✩✩✩✩✩✩
17 Дек 2020
19
11
lookatmusic.com
.... Аргумент Lenght должен быть больше или равен нулю.
все дальнейшие попытки прочитать, стереть, записать заново приводят к тому же сообщению.
задолбался, выручайте
Снимок.JPG
В этом окошке наругано, (то что вместилось) что у из некой строки идёт попытка вырезать кусок нулевой длинны, а программа пытается взять этот кусок и куда-то утащить. Если память не изменяет этот огрызок прога пытается вставить в заголовок окна. Но это не точно ;)
Я к чему, в интерфейсе есть строки которые вы должны ( можете ) ввести? Даже если они и не нужны для выполнения текущей задачи - введите. Попробуйте.
Если не получится, сделайте несколько скринов окна с ошибкой чтоб можно было всю тарабарщину служебную прочесть. Может на какие мысли наведёт.
Снимок1.JPG
Снимок2.JPG