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
 

Вложения

Изменено:

Комментарии

SteamDwarf

✩✩✩✩✩✩✩
5 Дек 2020
4
1
похоже.
1 скрин после подключения - большая часть полей пустые.
2 - процесс прошивки, меняются адреса, мигает красным.
3 -прошивка прервана сообщением
4 - содержание сообщения

видимо проблема в том, что пик не читается программатором. почему - непонятно.
 

Вложения

Stamp

★✩✩✩✩✩✩
12 Янв 2021
61
33
Если собираетесь работать с PIC купите PICkit-3 или 4й. Не мучайте себя. Вы получите не только программатор но и отладчик на кристалле.
PICkit-2 сейчас вообще копейки стоит. Если не собираетесь работать с крутыми, навороченными PIC, вам будет этого вполне достаточно.
В этом случае 2й предпочтительнее 3го. Если пользоваться им под MPLAB X или прошивать с помощью программатора, никаких лишних телодвижений не нужно. У третьего требуется смена прошивки. Что делается в полуавтоматическом режиме, но иногда напрягает.
 

nicfeer

✩✩✩✩✩✩✩
16 Мар 2021
3
0
Ребята, перезалейте файл hoct.rar Открыть не могу. Скорее всего файл повреждён
 

muzlo2021

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

задолбался, выручайте
В этом скетче нету pic 12f683!

// Device names, forced out into PROGMEM.
const char s_pic12f629[] PROGMEM = "pic12f629";
const char s_pic12f675[] PROGMEM = "pic12f675";
const char s_pic16f630[] PROGMEM = "pic16f630";
const char s_pic16f676[] PROGMEM = "pic16f676";
const char s_pic16f84[] PROGMEM = "pic16f84";
const char s_pic16f84a[] PROGMEM = "pic16f84a";
const char s_pic16f87[] PROGMEM = "pic16f87";
const char s_pic16f88[] PROGMEM = "pic16f88";
const char s_pic16f627[] PROGMEM = "pic16f627";
const char s_pic16f627a[] PROGMEM = "pic16f627a";
const char s_pic16f628[] PROGMEM = "pic16f628";
const char s_pic16f628a[] PROGMEM = "pic16f628a";
const char s_pic16f648a[] PROGMEM = "pic16f648a";
const char s_pic16f882[] PROGMEM = "pic16f882";
const char s_pic16f883[] PROGMEM = "pic16f883";
const char s_pic16f884[] PROGMEM = "pic16f884";
const char s_pic16f886[] PROGMEM = "pic16f886";
const char s_pic16f887[] PROGMEM = "pic16f887";
 

SteamDwarf

✩✩✩✩✩✩✩
5 Дек 2020
4
1
В этом скетче нету pic 12f683!

// Device names, forced out into PROGMEM.
погрызено
пытаюсь прошить pic683.

разобрался в проблеме. оказывается прошивка под pic683 автором была переделана по просьбе одного из форумчан, с учетом того, что под 683 еще и плата по-другому разводится, проще было дождаться прибытия 675. в итоге прошил 675 с первого раза, все отлично заработало. спустя пару дней получил от китайцев пиккит третий, еще не распаковывал. на будущее, где можно найти инфу о том, как на переходнике под контроллер джамперы выставлять под конкретный пик? я для своих не нашел. теперь не срочно, но все таки?
 
  • Лойс +1
Реакции: admiralu

ТехнарьКто

★★★★★✩✩
13 Янв 2020
270
438
--кусь-- с учетом того, что под 683 еще и плата по-другому разводится, проще было дождаться прибытия 675. в итоге прошил 675 с первого раза, все отлично заработало. спустя пару дней получил от китайцев пиккит третий, еще не распаковывал. на будущее, где можно найти инфу о том, как на переходнике под контроллер джамперы выставлять под конкретный пик? я для своих не нашел. теперь не срочно, но все таки?
разъем.jpg
Снизу есть таблица перемычек. Расположение перемычек на рисунке сверху выделено черным на рисунке снизу.
Для 683 и 675 пиков, корпус DIP8 строка два на рисунке ниже. Относительно верхнего рисунка в разъеме J1 перемычку надо переставить из 3 в 2.
JP.jpg
 

SteamDwarf

✩✩✩✩✩✩✩
5 Дек 2020
4
1
Снизу есть таблица перемычек. Расположение перемычек на рисунке сверху выделено черным на рисунке снизу.
Для 683 и 675 пиков, корпус DIP8 строка два на рисунке ниже. Относительно верхнего рисунка в разъеме J1 перемычку надо переставить из 3 в 2.
Спасибо! смутили последние три строки. Зря искал, значит
 

ТехнарьКто

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

Ну раз первая ссылка не помогла, пробуем еще раз.

Записываешь прошивку, считываешь дамп.

Прошивка - создается из исходного текста программы с помощью компилятора, при прошивке файлом прошивки "заливается" базовое программное обеспечение (сама рабочая программа), которая содержит минимум пользовательских настроек и обладает только параметрами по умолчанию.

Дамп - при прошивке дампом, "заливается" полная копия всего адресного пространства памяти микроконтроллера, которое содержит абсолютно все параметры.
 

Eig

✩✩✩✩✩✩✩
3 Май 2021
38
2
IMG_20210504_202553.jpgIMG_20210504_202618.jpg
Привет, народ. Увлекся я намедни созданием RFID-Writer-ов. Обнаружил легко повторяемый проект на пиках 16F648A и 16F628A. Ну, программатора у меня для них нет - решил реализовать этот. К посту прикрепил архив с разводкой платы для kicad 5.1.6. Столкнулся с теми же проблемами, что и остальные участники - микроконтроллер определяется один раз в 50 нажатий на кнопку Connect, при прошивке пишет Write error to device-Please erase device first. Кроме того, неверно определяется микроконтроллер: 16F882.
IMG_20210503_213556.jpg
Вот здесь нашел оригинал, с которого была цельнотянута схема автора треда. Выяснилось, что в схеме топикстартера отсутствует конденсатор между Vss и Vdd, который обычно ставят в пики для удаления помех. После установки конденсатора, во-первых, микроконтроллеры стали определяться один раз в 5 нажатий, а не в 50. Во-вторых начала почти нормально работать функция Erase. Теперь она записывает нули, а не абракадабру.
IMG_20210504_183623.jpg
Какие особенности в моей схеме? Питание ардуино отдельно, питание пика - отдельно (через 5V microUSB от блока питания большинства дешевых смартфонов). Потому что при попытке питания всего через ардуину - она задымилась.
Схема предназначения для программирования 18-пиновых пиков. В схему добавлен конденсатор. Красный SPST отключает заземление PGM, но, как выяснилось - это совершенно ни на что не влияет. В вытравленной плате у меня неправильно разведен BC847 и приколхоженный конденсатор, но потом я все это исправил.
Снимок экрана в 2021-05-04 20-33-50.pngСнимок экрана в 2021-05-04 20-31-46.png
В итоге: считывает и стирает, но не записывает. Поэтому заказал PicKit 2.
По поводу сопротивлений/импедансов макеток - это все неправда, и про длинные пути с кириллицей неправда. Сначала я собрал все на макетке - симптомы были один в один. Делаю вывод - или несовершенство схемы с неверными номиналами, или хитро залоченные микроконтроллеры. Один покупал на али, а второй в ЧиД. Ведут себя абсолютно одинаково.
И главное, ни один участник, у которого все заработало, не выложил свою реализацию. К сожалению это типично для русскоязычных форумов. Наши главные беды - гордыня и лень.
 

Вложения

Eig

✩✩✩✩✩✩✩
3 Май 2021
38
2
@ТехнарьКто, из вашего поста я очень много узнал о вашей высокой квалификации и зарплате. В этом и гордыня. А лень в том, что эти пояснения нужно было написать в начале темы, если вы не выкладываете ссылку на оригинальную работу.

Резисторов по два, потому что в вашей схеме 1.2k. Я повторял вашу схему, но такого номинала у меня не оказалось. На электронщика не учился, поэтому диапазонов не знаю.
От соединения двух земель станет только хуже. Если у меня настолько плохой блок питания, как вы описали, тогда наводки пойдут и на ардуину тоже. Никакого полового значения, в какую сеть сбрасывать остатки электричества - нет.
LowEsr конденсатор поставлю, впаяю spst для произвольного включения питаний.
Последовательность включения питаний была описанная вами за исключением того, что питания 13В и 5В подавались на PIC одновременно, затем включалась ардуина. Видимо, это неправильно. Запуск софта тоже был в самом конце.
Хорошо, если в итоге проблема только в качестве питания.
 

nobilia7

✩✩✩✩✩✩✩
25 Апр 2021
16
0
Eig
, я не очень понимаю, почему у большого количества повторивших проект. определяется не каждый раз. Я так же делал по приведенной ссылке. Не знаю, кто Курица, а кто Яйцо, но, первоисточник с хостом граф. интерфейса немного по другому адресу... Конденсатор - тоже рекомендован при использовании ZIF. Я делал просто ICSP. Все отлично работает без конденсаторов и доп. сопротивлений. Очень может быть, что у вас получилась очень большая емкость п.платы. Оособенно, если вы делали на дв.сторонней макетке. По моим проверкам: Определяет, читает- с первого раза, Пишет-всегда. Насколько я понял, предложение стереть мсх = не ошибка. 628, 648 - просит стирать. 629 - не просит. Я разговаривал на эту и некоторые другие темы с Автором . А вот сохранение имеет некий дефект. Хотя при чтении другим программатором ошибок не выявляется. О этом я написал непосредственно разработчику п.о. host. Ответ пока не получен, но в принципе понятно, что надо "причесать" функцию "Read".... Если надо - могу скинуть свои фотографии. Да, делал на ПроМини...
 

Eig

✩✩✩✩✩✩✩
3 Май 2021
38
2
@nobilia7, была бы очень полезна любая дополнительная информация. Я тут понимаю только, что скорее всего проблема именно в софте, так как не все поддерживаемые микроконтроллеры определяются и прошиваются у людей. Именно ГРУБЫХ ошибок в моей схеме нет, а автор откровенно дует на воду. И вы тоже немного дуете на воду, потому что очевидно, что я все делал на односторонней плате с медью 17мкм, и все очень аккуратно - компоненты SMD, дорожки довольно короткие.
Только что развел вторую версию платы, в которой учтены абсолютно все замечания автора, и соединения между пиком и ардуиной сделаны еще короче. Завтра буду травить и пробовать. Если снова не прошьется, то прошу прощения, но я не совсем верблюд.
 

Вложения

nobilia7

✩✩✩✩✩✩✩
25 Апр 2021
16
0
Eig

Я не критиковал вашу работу. Я только поделился своим опытом и высказал предположение.
Реальный автор Г.И. ://makerprojekte.de/en/arduino-pic-programmer/#comment-224 .В источнике, указанном вами есть сноска на мсх, которые определяются 100%, которые выбираются только вручную и мсх, протестированные другим пользователем, вроде из Японии...
Самое смешное, мне нет необходимости пару раз перезапускать Хост. У меня все работает с первого раза...
Для питания использован DC-DC. Общее питание от ЛБП 13В, питание +5В от компа не подается.
И еще, я думаю, вот это будет полезно для работы: ://radiohlam.ru/pic_param/
Еще один момент, который мне не ясен. Для чего дублировать кнопку Reset... Я сделал без нее.
Да, подача HV сделана отключаемая, через перемычку. ZIF, при особой необходимости, у меня сделан на отдельной плате. Я его использую с различными программаторами. При необходимости делаю временную разводку луженым проводом со стороны дорожек. Но пока на одной платке у меня свободно ужились и Меги и ПИКи. Одно другому не помешало абсолютно. Но мне так удобно, да и экономия ZIF и места для хранения в столе.
 

Вложения

Изменено:

Eig

✩✩✩✩✩✩✩
3 Май 2021
38
2
@ТехнарьКто, выражаю Вам свою огромную признательность и благодарность, и прошу прощения за некоторую дерзость. После ваших ценных замечаний все заработало. А всего-то соединил все земли и добавил LowImp электролит 1000 мФ / 25 В. Значит дело было действительно в качестве питания. Репозиторий kicad на всякий случай дублирую и выкладываю версию прошивки Arduino, отредактированную мной лично для совместимости с версией Arduino IDE arduino-PR-beta1.9-BUILD-105. Все остальные представленные здесь версии лично у меня не компилировались. Далее описание платы и порядок действий.
Снимок экрана в 2021-05-06 20-49-24.pngСнимок экрана в 2021-05-06 20-50-30.png
Здесь у меня не получилось все развести на одной стороне, поэтому на лицевой стороне ставятся три перемычки. Конденсатор диаметром 10мм, расстояние между выводами 5мм. Расстояние между выводами повышающего преобразователя (по длине) около 31мм. Преобразователь и ардуино ставятся в стандартные розетки-2.54, PIC ставится в панельку. Переходник для microUSB стандартный - на али стоит копейки. Ползунковый переключатель DS01 покупается там же, тоже стоит копейки. Использовал на 4 ползунка, так как был в наличии. Ползунок №4 не используется.
IMG_20210506_143113.jpgIMG_20210506_203634.jpgIMG_20210506_204234.jpg
Порядок включения такой. Подключается блок питания. Затем в положение ON передвигаются ползунки в следующей последовательности: 3 (13В), 1 (PIC 5В), 2 (Nano 5В). Затем подключается miniUSB к компьютеру. ArdPicProgHost.exe запускается, выключается (x) и снова запускается. И после этого всё работает. Ну, и скриншот процесса прошивки.
IMG_20210506_203240.jpg
В итоге я подтвердил, что основная причина неработоспособности собранных схем одна: плохое качество питания. Недочетов у автора было два: не дана ссылка на порядок программирования, и не описано ОЧЕНЬ СИЛЬНОЕ влияние качества питания. Из оригинальной схемы просто выдран фильтрующий конденсатор, а питание через линейный стабилизатор заменено импульсным повышающим преобразователем. Само собой, получается какая-то фигня. Для электронщика все это очевидно, но не для нубов типа меня, которые здесь пытаются что-то комстролить.
Плата очень легка для повторения: печать Cu-B слоя (зеленых дорожек) без всякого инвертирования. Все SMD-компоненты адаптированы под пайку паяльником, но лучше использовать фен. Все SMT-модули, конденсатор и перемычки (голубого цвета) крепятся с лицевой стороны платы.
Надеюсь, мои старания кому-то пригодятся.
 

Вложения

nobilia7

✩✩✩✩✩✩✩
25 Апр 2021
16
0
Eig, выложите пожалуйста Любой хекс, записанный, потом прочитанный и затем экспортированный.
Смысл просьбы - хочу прочитать Считанный и СОХРАНЕННЫЙ хекс различными программами... блажь, но актуальная.
п.с. и укажите пожалуйста версию Винды.
 

nobilia7

✩✩✩✩✩✩✩
25 Апр 2021
16
0
У меня есть различные версии происходящего. Интересно, что получается у Вас. У Настоящего Автора тоже есть свое мнение. Давайте начнем с Вас.
Вот моя версия функции Сохранения, сможете этот .хекс прошить в ПИКуху (628А) ??
Да, у меня ВЫНь-10. Если есть желание поиграться, попробуйте поработать через ШЕЛЛ (командная строка).
Да, порядок сохранения Именно следующий: 1) записали правильный хекс; 2)прочитали мсх; 3) нажали кнопку Экспорт; 4) выбрали (иногда не предлагает) расширение .hex; 5) сохранили в папке. 6) далее, пробуем загрузить СОХРАНЕННЫЙ хекс и прошить в мк.
И, у Вас что, отказывается работать программа, если Вы не перезапустите ее 2 раза?
 

Вложения

  • 1.8 KB Просмотры: 33
Изменено:

Eig

✩✩✩✩✩✩✩
3 Май 2021
38
2
@nobilia7, прошу прощения, но они абсолютно идентичны. Сравнивал ваш исходный файл с записанным в память, прочитанным и экспортнутым.
diff.png
6.hex прекрасно записался.
Да, программа запускается со второго раза, как и описал топикстартер.
 

Вложения

  • 55.5 KB Просмотры: 36
Изменено:

nobilia7

✩✩✩✩✩✩✩
25 Апр 2021
16
0
Eig
Вы меня не совсем поняли. Проделайте пожалуйста вышеописанные процедуры со СВОИМ файлом. Мой - заведомо битый, нигде он работать не будет. У него уже ошибка при сохранении. Можете попробовать. Например возьмите WinPic800 и откройте в нем хекс. Да и масса других программ...
 

Eig

✩✩✩✩✩✩✩
3 Май 2021
38
2
@nobilia7, повторил ту же процедуру со своим файлом rfid_pic16f628a_intrc.hex. Пересохраненная версия 628.hex весит в два раза больше и не открывается ни в формате intel, ни в формате motorola. Программа ArdPicProgHost читает записанную программу из памяти правильно, в формате intel, но отображает его почему-то с инвертированными битами. Можете убедиться сами (сравниваем левый-верхний и правый):
628-2.png
То есть программатор всё правильно пишет и читает, а ArdPicProgHost просто не умеет экспортировать правильно считанные файлы. Если были б исходники ArdPicProgHost, то я б поковырялся.
 

Вложения