Arduino Как Программатор Pic

20.06.2019

Mar 26, 2014 - А ведь программатор (ну, может не в столь явном виде) у меня всегда был под рукой. Чтобы Arduino стала ISP программатором на нее необходимо залить специальную. AVR и PIC- почти на каждом углу:). Программатор протестирован на разных компах и при программировании МК типа 12F,16F и 18F, прошивает довольно качественно. Представленная здесь схема даёт возможность программировать микроконтроллеры PIC12F509, PIC16F84A, PIC16F628. К примеру при помощи представленного программатора успешно прошили микроконтроллер для импульсного металлоискателя. Для программирования применяется WinPic800 — это программа является одной из лучших для программирования PIC контроллеров. Программа даёт возможность производить операции для микроконтроллеров серии PIC: чтения, записи, стирания, проверки FLASH и EEPRO.

  1. Arduino Программатор Pic
  2. Arduino Uno Программатор Pic

Любая версия Freeduino / Arduino может выступать в роли ISP программатора, с помощью которого можно, например, изменить bootloader в другой аналогичной плате, или прошить bootloader в новую микросхему ATmega. В описании указывается Arduino, но фактически может быть использован любой клон, включая все варианты Freeduino. Здесь рассматривается два варианта ISP программатора на основе Arduino: Mega-ISP, который может быть собран из любой версии Arduino и его клонов, и Bit-Bang программатор, для которого подойдут только те варианты Arduino, которые имеют дополнительно выведенные на специальный разъем контакты микросхемы FT232RL.

Особенности ISP/ICSP Аббревиатуры ISP и ICSP означают In System Programming и In Circuit Serial Programming соответственно. Это означает программирование чипа уже подключенного в некоторую схему, программирование в готовом устройстве по последовательному протоколу. Принципиально важным является то, что программируемый микроконтроллер должен успешно 'завестись', и только после этого он будет в состоянии принимать данные от программатора. Для нас это означает, что он должен быть подключен к питанию, и иметь соответствующий источник тактовых сигналов.

Arduino Программатор Pic

Питание проще всего подавать через сам разъем ICSP, а вот с источником тактовых сигналов есть некоторые особенности. Источник тактовых сигналов выбирается в микроконтроллерах серии ATmega с помощью так называемых fuse-битов, которые, также как и память программ, и EEPROM доступны для изменения с помощью программатора. Производитель перед продажей выставляет fuse-биты так, что в качестве источника тактовых сигналов выбран внутренний осцилятор, и такой микроконтроллер можно просто подключить к ISP программатору с учетом расположения его выводов, и начать работу. Однако, если с помощью ISP программатора изменить значения fuse-битов так, что изменится источник тактовых сигналов, то чтобы ISP программатор опять начал работать с микроконтроллером, придется соответствующий источник к нему подключить.

Таким образом, нужно быть внимательным при изменении значений fuse-битов. Mega-ISP Из известных проектов по созданию ISP программатора на основе Arduino наиболее интересным нам кажется. Именно этот проект включен в состав ПО Arduino в раздел с примерами под именем ArduinoISP. После загрузки скетча в вашу плату Arduino, скорее всего потребуется тем или иным образом отключить программный сброс. Владельцы плат Freeduino 2009/2013/Nano/Mega2560 могут просто снять перемычку JRS, владельцы Arduino могут перерезать ножом ту же перемычку. Для некоторых других плат можно выпаять конденсатор CRS, но мы советуем менее радикальный способ - соединить выводы Reset и +5V резистором номиналом порядка 120 Ом.

Если все сделано правильно, при открытии COM-порта не будет происходить сброс микроконтроллера (это видно по светодиоду 13), и как побочный эффект станет невозможно обновить его собственную прошивку из среды Arduino. Во-вторых, данный ISP программатор при общении с ПК использует протокол AVRISP/STK500v1 только со скорость 19200 бит/сек, и нормально работает не со всеми вариантами ПО для ПК. Поэтому не удивляйтесь, что не удается что-либо прошить из среды Arduino. Авторы рекомендуют использовать программу avrdude из состава Win-AVR. Сборка программатора Mega-ISP Если Вы с помощью одной платы Arduino собираетесь прошить другую, то Вам потребуется разъем 2x3 и 6 проводков. Схема сборки: Если нужно прошить отдельный микроконтроллер (не забываем, что его fuse-биты должны быть выставлены так, что он тактируется от внутреннего осцилятора), то нужно узнать согласно расположение вывовдов Gnd, Vcc, MOSI, MISO, SCK.

Соединение с Arduino такое: 10 - Reset, 11 - MOSI, 12 - MISO, 13 - SCK. Не забываем подключить 'землю' и питание. Для примера приводим разводку для разъема ICSP и микроконтроллеров ATmega328 и ATtiny85. На фото представлен один из вариантов реализации: Работа с программатором Mega-ISP Рассмотрим например, как прошить новый boot-loader. Распакуйте архив в какую-нибудь папку. Откройте проект в среде Arduino и загрузите его в вашу плату.

Arduino Uno Программатор Pic

Либо загрузите в плату пример ArduinoISP из состава ПО Arduino. После этого можно отключать программный сброс согласно описания выше. Подсоедините вторую плату (которую будем 'прошивать') к первой. В режиме командной строки перейдите в папку с avrdude. Теперь можно запускать avrdude с соответствующими ключами: Разберем ключи: -q - уменьшает объем выводимой на экран отладочной информации -C avrdude.conf - указывает расположение.conf файла (в нашем случае он в той же папке) -p m328 - выбор типа микроконтроллера ATmega328 -c avrisp - выбор протокола -P COM3 - выбор COM порта. Здесь нужно поставить свой -b 19200 - выбор скорости порта -e - Команда на предварительную очистку памяти программ -U flash:w:ATmegaBOOT328diecimila.hex - указывает на.hex файл с прошивкой Прочие замечания В процессе работы с программатором было замечено, что иногда процесс прошивки не начинается, и avrdude завершается с ошибкой. В таких случаях нам помогал сброс программатора кнопкой Reset и повторная прошивка.

Архив с ПО также содержит файл sample.bat, в котором кроме bootloader’а программируются fuse и lock биты. В Сети есть страничка с разведенной платой такого программатора, включающей дополнительные отладочные светодиоды. Bit-Bang программатор 'Сердцем' Bit-Bang программатора является микросхема FD232RL (та самая, которая реализует COM-порт на шине USB), а собственно микроконтроллер ATmega никакого участия в процессе программирования не принимает. Это позволяет программировать микроконтроллер, установленный в 'панельке' Вашей Arduino – вторая плата Arduino не потребуется. Соответственно, для данного программатора подойдут только USB версии Arduino, да и то не все, т.к. Не на всех вариантах разведен разъем X3 с дополнительными выводами FT232RL. Сборка программатора Arduino Bit-Bang Для сборки Вам потребуются разъемы 1x4, 2x6, штекер 1x2 (для питания) и несколько проводов.

Можно использовать, например пару Audio-кабелей от CD-ROM – у них удобные разборные разъемы, и в таком случае можно обойтись даже без паяльника. Схема соединений следующая: Провода питания и 'земли' потребуются, если Вы собираетесь программировать внешнее устройство.

Для программирования микроконтроллера, находящегося в панели той же самой Arduino они не нужны. На фотографиях представлены оба варианта соединения – программирование микроконтроллера ATmega168, находящегося в панельке Arduino (провода питания и 'земли' не нужны), и программирование микроконтроллера во второй плате. Работа с программатором Arduino Bit-Bang Аналогично рассмотрим прошивку нового boot-loader’а. Распакуйте архив в какую-нибудь папку. Подсоедините программатор к USB порту. В режиме командной строки перейдите в папку с avrdude.

Supreme commander forged alliance патч 1.6.6

Теперь можно запускать avrdude с соответствующими ключами: Разберем ключи: -q - уменьшает объем выводимой на экран отладочной информации -C avrdude.conf - указывает расположение.conf файла (в нашем случае он в той же папке) -p m168 - выбор типа микроконтроллера ATmega168 -c diecimila - выбор программатора (он описан под таким именем в.conf файле) -P ft0 - выбор порта. Выбрано первое устройство с чипом FTDI -e - Команда на предварительную очистку памяти программ -U flash:w:ATmegaBOOT168diecimila.hex - указывает на.hex файл с прошивкой Прочие замечания Архив с ПО также содержит файл sample.bat, в котором кроме bootloader’а программируются fuse и lock биты. Более полную информацию можно найти по ссылке.

Предлагаемая мной схема не является чем-то оригинальным, и я не претендую на изобретение велосипеда, а всего лишь хочу поделиться своим опытом. Так что не судите строго. Однажды я решил собрать несложный LC-метр на pic16f628a и естественно его надо было чем-то прошить. Раньше у меня был компьютер с физическим com-портом, но сейчас в моём распоряжении только usb и плата pci-lpt-2com.

Для начала я собрал простой JDM программатор, но как оказалось ни с платой pci-lpt-com, ни с usb-com переходником он работать не захотел (низкое напряжение сигналов RS-232). Тогда я бросился искать usb программаторы pic, но там, как оказалось всё ограничено использованием дорогих pic18f2550/4550, которых у меня естественно не было, да и жалко такие дорогие МК использовать, если на пиках я очень редко что-то делаю (предпочитаю авр-ы, их прошить проблем не составляет, они намного дешевле, да и программы писать мне кажется, на них проще). Долго копавшись на просторах интернета в одной из множества статей про программатор EXTRA-PIC и его всевозможные варианты один из авторов написал, что extrapic работает с любыми com-портами и даже переходником usb-com. В схеме данного программатора используется преобразователь логических уровней max232. Я подумал, если использовать usb адаптер, то будет очень глупо делать два раза преобразование уровней usb в usart TTL, TTL в RS232, RS232 обратно в TTL, если можно просто взять TTL сигналы порта RS232 из микросхемы usb-usart преобразователя. Так и сделал. Взял микросхему CH340G (в которой есть все 8 сигналов com-порта) и подключил её вместо max232. И вот что получилось.

В моей схеме есть перемычка jp1, которой нет в экстрапике, её я поставил потому что, не знал, как себя поведёт вывод TX на ТТЛ уровне, поэтому сделал возможность его инвертировать на оставшемся свободном элементе И-НЕ и не прогадал, как оказалось, напрямую на выводе TX логическая единица, и поэтому на выводе VPP при включении присутствует 12 вольт, а при программировании ничего не будет (хотя можно инвертировать TX программно). После сборки платы пришло время испытаний.

И тут настало главное разочарование. Программатор определился сразу (программой ic-prog) и заработал, но очень медленно! В принципе - ожидаемо. Тогда в настройках com порта я выставил максимальную скорость (128 килобод) начал испытания всех найденных программ для JDM. В итоге, самой быстрой оказалась PicPgm. Мой pic16f628a прошивался полностью (hex, eeprom и config) плюс верификация где-то 4-6 минут (причём чтение идёт медленнее записи).

IcProg тоже работает, но медленнее. Ошибок про программировании не возникло. Также я попробовал прошить eeprom 24с08, результат тот же - всё шьёт, но очень медленно.

Выводы: программатор достаточно простой, в нём нет дорогостоящих деталей (CH340 -, к1533ла3 можно вообще найти среди радиохлама), работает на любом компьютере, ноутбуке (и даже можно использовать планшеты на windows 8/10). Минусы: он очень медленный. Также он требует внешнее питание для сигнала VPP. В итоге, как мне показалось, для нечастой прошивки пиков - это несложный для повторения и недорогой вариант для тех, у кого нет под рукой древнего компьютера с нужными портами.

Вот фото готового девайса: Как поётся в песне 'я его слепила из того, что было'. Набор деталей самый разнообразный: и smd, и DIP. Для тех, кто рискнёт повторить схему, в качестве usb-uart конвертера подойдёт почти любой (ft232, pl2303, cp2101 и др), вместо к1533ла3 подойдёт к555, думаю даже к155 серия или зарубежный аналог 74als00, возможно даже будет работать с логическими НЕ элементами типа к1533лн1. Прилагаю свою печатную плату, но разводка там под те элементы, что были в наличии, каждый может перерисовать под себя.

Список радиоэлементов Обозначение Тип Номинал Количество Примечание Магазин Мой блокнот IC1 Микросхема CH340G 1 В блокнот IC2 Микросхема К1533ЛА3 1 В блокнот VR1 Линейный регулятор. Да, вспомнил, я всё-таки один раз сталкивался с 12 пиком, и по неопытности, естественно, сразу затёр ячейку калибровки генератора, пришлось восстанавливать с помощью подручных средств (в виде сетевого трансформатора в качестве генератора 50 герц), а сам пик я прошивал через ком порт на паре резисторах и диодах, на сколько я помню. Ещё на просторах интернета пишут, что эти пики при повторной записи не успевают зайти в режим программирования и начинают выполнять старую программу, поэтому необходимо покрутить настройки программы-программатора. По поводу s9018 должен подойти, но лучше s9014, у меня вообще. Что касается b1238 я не знаю, надо пробовать, если не будет сильно греться (и совпадает структура), то подойдёт, кт502 держит 12 вольт без нагрева.

74als00 это и есть к1533ла3 с полным совпадением выводов. Плата нарисована со стороны дорожек (смотрите по ch340 там точкой обозначен первый вывод) значит распечатывать для лут надо зеркально. На моей плате есть нулевые резисторы, а между микросхемами две дырки - это диод. Смотрите по фото. Вот фото платы в высоком разрешении. Забыл про конденсаторы.

22 пф рекомендует даташит. С 30 пф может и запустится, я бы лучше 18-20 пф поставил или можно запараллелить по два кондёра (сложив ёмкость). Слепил программатор, сделано компактно конечно, но зато не пришлось покупать текстолит т.к. Был один маленький кусочек которого как раз хватило. Конденсаторы 22пф не нашел поставил по 30. Драйвер установился но программировать буду позже. Вопросы по теме: По поводу перемычки которая идет на vpp, в схеме от другого программатора который рекомендуют для моего чипа 16f648a на vpp идет +12вольт, значит мне надо поставить перемычку для этого чипа?

Как

На 10 ногу у вас тоже перемычка есть, для 16f648a эта нога в воздухе. Транзистор VT1 на схеме правильно нарисован или нет, кажется коллектор с эмиттером надо поменять местами? Светодиоды HL2 HL3 неправильно.

Comments are closed.