USB ПРОГРАММАТОР
Данный программатор не нуждается в первичном программировании — протравил печатную плату, спаял и пользуйся. Автор данного устройства указан в конце статьи, а здесь приведу небольшую выдержку из руководства, чтоб было понятнее, о чём речь: правильный USB-программатор – вещь, фактически, универсальная. Его можно воткнуть в любой современный компьютер и без проблем перешить нужный микроконтроллер с любым объемом FLASH-памяти на довольно высокой скорости. Но ключевое слово здесь – «правильный», который нормально работает без настройки и танцев с бубном над ним сразу же после установки и монтажа деталей. Который не глючит при переходе от одного ПК к другому или смене ОС. Правильный – это такой, драйвера на который есть для любой современной широко используемой версии ОС, и эти дрова неглючные. Каждый определит еще с десяток критериев правильности для себя лично, но вышеперечисленные – основные, без соблюдения которых нормально работать с микроконтроллером невозможно будет в принципе.
В настоящее время в Интернете полно различных схем USB-программаторов для AVR. Условно их можно разделить на две большие группы.
Первая группа включает в себя программаторы, построенные на основе микроконтроллеров (в частности, AVR). Собирал несколько штук программаторов от Prottoss’а (AVR910), себе и своим знакомым, а также несколько штук USBasp. Двое из знакомых, одаренных сиими дывайсами, в восторге. Удачно шьют камни в течение уже нескольких лет. У остальных (в частности – у меня лично) собранные программаторы особой радости не вызвали. Не говорю, что они плохие, просто вот так складывались обстоятельства: на одном компьютере работает, на другом нет. Или, проработав пару часов, оказывались невидимыми для софта, через который шьется камень. И много еще чего. Сразу оговорю – я не разбирался с прошивкой контроллеров, на которых данные программаторы собраны. Правда, перепробовал кучу программ-прошивальщиков, через которые данные программаторы, вроде как без проблем должны шить камни. Однако, результат в виде частых глюков меня не особо удовлетворил. Исключение составила только программа AVRDUDE в комплексе с графической оболочкой SinaProg, но о ней я узнал слишком поздно. Кстати, заметил такую тенденцию: чем древнее железо ПК, тем лучше работают данные программаторы. Ну и самый неприятный момент для тех, кто выбрал второй вариант знакомства с микроконтроллерами AVR – чтобы программатор заработал, нужно чем-то прошить входящий в его состав камень. То есть получается так: чтобы пользоваться программатором нужно сделать/найти программатор, чтобы прошить мозги этого программатора. Вот такой вот замкнутый круг.
И вторая группа USB-программаторов включает в себя решение на базе специализированной микросхемы FT232Rx. В свое время данная микросхема стала своего рода революцией. Мало того, что она без особых заморочек для разработчика преобразует USB в UART (и, наверное, 95% разработчиков используют ее именно в этих целях). Она еще умеет эмулировать полноценный COM-порт, причем состояние «второстепенных» линий (таких, как RTS, CTS, DTR и т.д.) можно задать/считать не из виртуального COM-порта, а напрямую через драйвер FTDI (разработчика FT232Rx). Таким образом, появилось новое, без необходимости первичной прошивки мозгов программатора, решение, для прошивки микроконтроллеров, причем, довольно быстрое.
Принципиальная схема программатора USB
Данная схема просто направляет сигналы MOSI, MISO, SCK и RESET, которые формируются на выводах DCD, DTR, RTS и DSR микросхемы DD1 (FT232RL) соответственно, на нужные выводы прошиваемого микроконтроллера (т.е., фактически является аналогом «древних» программаторов). Причем, делает это только в момент программирования камня, в остальные моменты времени программатор отключен от прошиваемой платы за счет 4-х буферных элементов микросхемы DD2 (74HC125D). Состояние линий MOSI, MISO, SCK и RESET устанавливается/считывается прошивающим софтом на компьютере. Передача данных между ПК и микросхемой FT232RL идет по шине USB (от которой еще и получает питание программатор).
Светодиод HL2 («PWR») сигнализирует о подаче на программатор напряжения питания с шины USB. Светодиод HL1 («PROG») индицирует процесс прошивки микроконтроллера (горит только во время прошивки). Вот, в принципе, и все описание собственно схемы электрической принципиальной. Единственное что хотелось бы отметить: во-первых, для подключения программатора к прошиваемой плате используется разъем IDC-10MR (XP2 «ISP»), распиновка которого совпадает с широко распространенной распиновкой разъема программатора
XP2 «ISP» разъем для подключения устройства к программируемому микроконтроллеру
XP3 «MISC» разъем для использования дополнительных функций программатора
В общем микросхема FT232RL имеет довольно серьёзный потенциал для разработчика (например, линии шины CBUS можно использовать как обычные линии ввода-вывода микроконтроллера), поэтому неплохо бы иметь доступ ко всем ее выводам. Ну и доступ к напряжениям +5,0 В и +3,3 В тоже лишним никогда не будет. В приклеплении печатная плата и полное подробное описание. Разработка и мануал —
Форум по программаторам
Обсудить статью USB ПРОГРАММАТОР
Делаем простой USB программатор USBTinyISP / Блог им. Ghost_D / RoboCraft. Роботы? Это просто!
Очень многие люди, начиная свое знакомство с микроконтроллерами, испытывают трудности с инструментом для их программирования. И это реально может охладить творческий пыл. Да что там говорить, я и сам после сборки своего первого Arduino долго пытался «вдохнуть» жизнь в «железяку». Здесь очень хорошо описаны мучения. Конечно, самый простой вариант «5 проводков» — это здорово! Но, в моем окружении (как я понимаю, и у многих) дома, на работе в компах и ноутбуках напрочь отсутствует LPT-порт! Да и COM-порт становиться достаточно редкой «экзотикой». Что же делать? Естественно, на сцене появляется вездесущий USB.Спешу обрадовать, что затраты на изготовление — мизерные. Самые дорогие компоненты — это Attiny2313 (примерно 2$) и разъем USB.
Итак, приступим. Нам нужен программатор который максимально прост и относительно дешев, подключается по USB, и при этом, поддерживается всеми современными ОС (LINUX, WINDOWS, MAC OSX) через программу avrdude. Изначально я рассматривал для повторения самый «примитивный» вариант. Дальнейшие поиски меня привели к — USBTinyISP!!! Стремясь к компактности, я выбрал для «клонирования» версию 1 (без буферной микросхемы). Ниже схема программатора.
Схема осталось оригинальной, за исключением перемычки для программирования (мне эта «фишка» абсолютно не нужна). А вот печатку я переделал под свои нужды.
(Номиналы деталей можно увидеть в SprintLayout при наведении курсора на нужный элемент)
Нам понадобится:
— кусок текстолита 63х33 мм
— МК Attiny2312 с колодкой под нее
— Разъем USB (тип B)
— Разъем 10х2 (как он правильно называется ???? Не знаю..)
— 4 резисторa 1.5 кОм (smd, маркировка 152)
— 1 резистор 1.5кОм (выводной 0.125Вт)
— 1 резистор 10к (smd, маркировка 103)
— 2 стабилитрона на 3.6В
— 2 конденсатора 22 pF (smd)
— 1 конденсатор 0.1 мF (smd)
— 2 светодиода (зеленый и красный)
— кварц на 12Mhz
— электролитический конденсатор 100x16V
— самовосстанавл. предохранитель (я выпаял из старой мат. платы). Если нету, можно поставить перемычку (на www.ladyada.net/ так и сделали).
— два штырька для перемычки
Естественно, ЛУТ.
После ЛУТа
После травления:
Мой любимый сплав Розе
Паяем SMD элементы
Теперь перемычки и оставшиеся элементы
Готово!
Небольшое лирическое отступление. Давным давно, в 2000-х годах у меня один приятель жаловался со сложностями в поиске НОРМАЛЬНОЙ работы (он работал водителем). Дело в том, что у него был на тот момент очень маленький стаж вождения :). Чувствуете подвох? На нормальную работу без стажа не берут. Стажа нет, потому что на работу не берут… И так замкнутый круг.
Так и в нашем случае, для изготовления программатора нужно запрограммировать контроллер… т.е. нужен программатор. Слава богу, это нужно проделать всего один раз. Выходов несколько:
— берем пиво и навещаем приятеля с программатором 🙂
— ищем компьютер с LPT-портом и паяем «5-проводков»
— есть люди, предлагающие свои услуги по прошивке МК за небольшую «денюжку»
— другие варианты
У меня ситуация более, чем шикарная — у меня уже был программатор AVR910. Так, что вся процедура заняла не более минуты. «Прошиваем» МК с помощью AVRDUDE. (Все необходимое для этого сложено в архив и находиться в каталоге Firmware).
avrdude.exe -p t2313 -c avr910 -P COM12 -U flash:w:usbtinyisp_(v.1).hex -U hfuse:w:0xdf:m -U lfuse:w:0xef:m
Кому менее повезло и пришлось прибегнуть к «5 проводкам» (кстати, официально он называется DAPA):
avrdude.exe -p t2313 -c dapa -U flash:w:usbtinyisp_(v.1).hex -U hfuse:w:0xdf:m -U lfuse:w:0xef:m
вот, вариант когда программатор USBTinyISP используется для прошивки себе подобного, а-ля «овечка Долли»:
avrdude.exe -p t2313 -c usbtiny -U flash:w:usbtinyisp_(v.1).hex -U hfuse:w:0xdf:m -U lfuse:w:0xef:m
Почему вариант с AVRDUDE более предпочтителен для начинающих? При выполнении вышеприведенных команд сразу же прошиваются и нужные фьюзы, т.е. ухера.. «убить» микроконтроллер достаточно сложно.
Итак, устанавливаем на плату свежепрошитый микроконтроллер. Еще раз советую проверить изготовленную плату на качество пайки, отсутствие «коротышей» и тому подобных неприятностей. И только если ВЫ на 100% уверены, подключаем наш программатор к разьему USB. После сообщения об обнаружении нового оборудования (речь идет о Windows), ставим как обычно драйвера. Они сложены в архиве в папке usbtinyisp w32 driver v1.12.
Проверяем, что все хорошо, заглянув в список оборудования:
Если Вам удалось увидеть такую же картинку, то поздравляю! Все готово. У Вас теперь есть USB программатор для AVR!!!
Не знаю как Вы, но мне ОЧЕНЬ захотелось сразу же опробовать изделие в действии. А давайте прошьем бутлодер в Ардуино.
Запускаем Arduino IDE, [Сервис]->[Программатор]->[USBTinyISP]
Жмем [Сервис]->[Записать загрузчик]
Буквально проходит 7 секунд, мерцание красного светодиода на программаторе… и ОПА!!! Все готово. Получите, распишитесь 🙂
А теперь небольшой БОНУС, расширяющий область применения нашего программатора. А именно, маленький адаптер для DIP корпусов наиболее распространеных AVR контроллеров. Мне приходилось иметь дело с ATTiny13/45 — 8 ножек, Attiny 2313 (тут смайлик)- 20 ножек, Atmega 8/48/168 — 28 ножек. За основу берем схему соединения колодок (схема откуда-то из инета):
Для простоты я не использовал сигналы тактирования XT1. (Для всяких неприятных случаев, у меня есть собранный FUSE Doctor :)) И еще, я не ставил на адаптер колодку под Atmega16 (DIP-40). Пока у меня не возникало необходимости в программировании таких контроллеров.
Ну, если осилили изготовление программатора, то сделать такой адаптер — вообще плевое дело!
Кстати, некоторые неиспользуемые контакты я просто-напросто удалил, во избежание ненужного контакта 🙂
Приклеиваем (для удобства) соответствующие надписи:
И вот, все в сборе, программатор и адаптер! Пользуйтесь на здоровье.
Весь материал (печатку, прошивку, драйвера и фото) для повторения можно забрать одним архивом тут.
Универсальный USB программатор AVR
Универсальный программатор AVR
Представляю схему универсального программатора, с помощью которого можно программировать все типы AVR микроконтроллеров. Универсальный usb программатор состоит из usbasp программатора и ZIF панели для программирования.
Схема usbasp
Ниже на скрине приведена схема программатора avr. Чтобы собрать zif программатор, понадобится zif панель на 40 выводов и микроконтроллер Atmega8.
Собрав по этой схеме usb программатор, можно будет программировать любые микроконтроллеры из серии AVR, достаточно только расположить нужный микроконтроллер в zif usbasp панели, установить перемычки в нужные места, подключить к USB и программировать c помощью специальной программы, например AVRDUDE_PROG.
Плата usbasp
Дальше на скрине показана плата программатора avr. Так выглядит печатная плата avr usbasp в проекте программы DipTrace.
Изготовление программатора avr usb
Несколько фото процесса изготовления печатной платы zif avr с металлизацией отверстий. Печатная плата usbasp программатора после металлизации отверстий и после нанесения паяльной маски.
Фото готовой печатной платы программатора avr.
Глянец паяльной маски FSR-8000.
Фото собранной печатной платы универсального программатора AVR.
Данная статья опубликована на сайте whoby.ru. Постоянная ссылка на эту статью находится по этому адресу http://whoby.ru/page/usb-programmator
Читайте статьи на сайте первоисточнике, не поддерживайте воров.
Как программировать
Собственно это самый главный раздел этой статьи, без которого эта схема потеряла бы всю свою актуальность, так как не зная расположения перемычек и места расположения микроконтроллера в zif панели, невозможно запрограммировать нужный контроллер. Это в лучшем случае, а в худшем, можно банально спалить микроконтролер.
Еще хотел сделать акцент на порядок смены положения перемычек и расположения микроконтроллера в zif панели. Сначала usbasp программатор нужно отключить от USB порта, затем выставить перемычки для нужного микроконтроллера AVR, затем установить его согласно схемы (фото ниже) и только после этого подключать к USB порту.
Если менять положение перемычек и МК на «горячую», то возможно спалить микросхему, если что то случайно перепутали.
Прошивка через usbasp
Далее на фото показаны варианты расположения перемычек и установка определенного типа микроконтроллера в zif панель. На фото представлены два варианта для каждого типа микроконтроллеров, внешнее тактирование (с кварцем) и без внешнего тактирования (без кварца). Выбирайте любой удобный и необходимый в конкретном случае вариант.
Программирование Tiny 13, 15, 45
Программирование Atmega 16, 32, 8535
Программирование Tiny 2313
Программирование Tiny 26
Программирование Atmega 8, 48, 88, 168, 328
Программирование Atmega 8515
Внутрисхемное программирование
На плате имеется специальный 6 pin разъем, подключившись к которому, можно программировать микроконтроллеры, установленные на печатной плате устройств, не выпаивая их с платы. В данном случае, расположение перемычек не влияет на внутрисхемное программирование.
Файлы для сборки
В приложенном ниже архиве, находятся файл печатной платы программатора avr usbasp. Также в архиве есть драйвер usbasp программатора и прошивка usbasp usb, с помощью которой можно прошить наш avr programmer.
Если вы решитесь собрать данный универсальный программатор AVR, то хочу вас предупредить. ZIF панели бывают двух типов, с широкой и узкой посадкой для ножек. Нам нужна такая ZIF панель для программатора, в которую можно вставить все типы микросхем.
Посмотрите на фото и увидите отличия между ZIF панелями, покупайте с широкими вырезами для ножек, иначе программатор получится не полноценным в связи с ограничением установки некоторых микроконтроллеров.
Напоследок хотел сказать, если вы случайно заблокируете свой микроконтроллер, то его можно всегда разблокировать с помощью доктора фьюзов, схему и печатную плату которого, можно посмотреть в этой статье.
Если возникнут вопросы по схеме, то всегда можно задать вопрос в комментариях.
Всем легкого программирования.
Статью написал: Admin Whoby.Ru
Еще записи по теме
РадиоКот :: Программаторы для микроконтроллеров Atmel
РадиоКот >Лаборатория >Цифровые устройства >Программаторы для микроконтроллеров Atmel
Эта статья — попытка обобщить некоторый разрозненный материал по программаторам для популярных сегодня микроконтроллеров фирмы Atmel. Материал не претендует на полноту, однако основан на личном опыте, в чем и состоит, на мой взгляд, его основная ценность.
Схема программатора Fun-Card
Программатор предназначен для работы под управлением программы ICProg, является функциональным аналогом «5 проводков»
(до предела упрощенная схема STK200+/300, о которой ниже) и представляет собой несколько резисторов.
Программатор подключается к LPT-порту. Разъем устанавливается непосредственно на плату программатора, кроме того, на плате
предусмотрена кроватка для программирования контроллера AT90S2313, а также выведены сигналы SCK, MOSI/MISO и Reset.
Программируемая микросхема может брать питание с порта LPT, в этом случае, на выводах 2, 3, 4 порта должны быть установлены единицы,
а вывод 2 разъёма ISP должет быть подключен к выводу Vcc микросхемы. Некоторые порты могут не потянуть такой нагрузки, в этом
случае придётся использовать внешний источник питания (5В).
Источником тактовых импульсов для микросхемы также может служить LPT порт. В этом случае вывод 3 разъёма ISP (LED) должен быть
подключен к выводу XTAL 1 программируемой микросхемы.
Естественно, программа программатора на PC должна понимать эти режимы работы (для работы с этой схемой нужно воспользоваться программой
IC-Prog, где при выборе типа программатора следует установить «Fun-Card Programmer»).
Печатная плата в формате SL5 – здесь, программа ICProg и драйвер под ХР – здесь.
Схема программатора STK200+/300
Большая часть нижеследующего описания и сама схема взята со странички https://ln.com.ua/~real/avreal/adapters.html, крайне рекомендую посетить ее.
Адаптер получил свое название от комплектующихся им отладочных плат фирмы Atmel для быстрого начала работы с микроконтроллерами
At90s8515 и Atmega103. На самом деле приведенная схема соответствует одновременно обоим адаптерам, в ней присутствуют перемычки для
определения наличия как адаптера STK200 (выводы 2-12 разъема X1), так и STK300 (выводы 3-11). При необходимости программной генерации
тактового сигнала XTAL1 используется линия LED адаптера, исходно предназначенная для включения светодиода (на печатной плате ver.1
установлен только светодиод, сигнал XTAL1 на разъем программирования не заведен, а вот в ver.2 на третьем контакте есть сигнал XTAL1).
Буферизованные адаптеры запитываются от платы с программируемым процессором, т.е. питание подаётся на программируемую плату, а с
неё на адаптеры поступает через шлейф.
Адаптер собран на основе шинного формирователя 74HC244 (аналог 1564АП5). Возможно также использование 555АП5 (74LS244) и 1533АП5 (74ALS244)
либо, при соответствующем изменении схемы, любые другие неинвертирующие формирователи с тремя состояниями выходов. Применение буфера
с третьим (высокоимпедансным) состоянием позволяет по окончании программирования снять сигнал разрешения выходов и, «отключив» адаптер
от схемы, не влиять на её работу (за исключением паразитных емкостей между проводами шлейфа от адаптера до платы устройства).
Поскольку разводка рассчитана на установку LPT-разъема непосредственно на плату, для этих адаптеров рекомендуется изготовить удлиннитель
порта LPT длиной 1.5-1.8м со всеми линиями (земель не жалеть 🙂 и вывести с программатора шлейф до платы с микроконтроллером длиной 20-25 см.
На плате предусмотрена установка светодиодов «питание» и «программирование» (на схеме не показаны).
Схема работает с программами AVR ISP, CodeVision AVR, WinAVR и другими.
В ряде случаев (например, для программирования нескольких контроллеров одной и той же прошивкой или в случае отсутствия на плате места
под ISP-разъем) могут оказаться полезными «платы расширения» для различных контроллеров, содержащие кроватку для установки контроллера и
минимально необходимую для работы обвязку. Я сделал такие платы под AT90S2313/ATTiny2313, ATTiny26, ATTiny13, ATMega8 и ATMega16.
Кроме того, в версии ver.1 кроватки для ATTiny26 и ATTiny13 есть непосредственно на плате.
Обе версии платы программатора и все «платы расширения» в формате SL5 – здесь.
Вот так выглядит один из моих STK в окружении плат расширения:
Схема программатора AVR910 с универсальным COM/USB интерфейсом
AVR910 – весьма известный аппнот Atmel, давший название целому классу устройств.
Сейчас под AVR910 понимают как правило протокол, по которому происходит обмен данными между компьютером и программатором.
В сети на данный момент можно найти несколько вариантов таких программаторов, различающихся способом реализации интерфейсной части.
Традиционно все эти программаторы собираются на основе микроконтроллера AT90S2313 или (в редких случаях, при наличии модифицированной
прошивки) ATTiny2313.
На схеме представлен программатор, способный работать как через CОМ, так и через USB.
Переключение типа интерфейса происходит при помощи джампера J1. При работе через USB питание программатора осуществляется непосредственно
от этого порта компьютера, причем в этом режиме имеется полная гальваническая развязка программатора (и, соответственно, программируемого
устройства) от компьютера, более того, при замыкании перемычки J2 программируемое устройство может питаться от программатора (до 100 мА).
При работе через СОМ-порт развязка отсутствует, а питание программатора осуществляется, как обычно, от программируемого устройства.
Интерфейс USB реализован на микросхеме FT232BM в стандартной схеме включения, в качестве согласователя уровней для СОМ-порта применена
MAX232.
Вариант разводки печатной платы, схема и прошивка лежат здесь. Разводка платы не оптимальна, поскольку
осуществлялась для конкретного
корпуса с заранее заданным расположение разъемов, органов управления и индикации. Кроме того, на плате разведена кнопка для принудительного сброса
программируемого МК, реально она не нужна, поскольку сброс корректно осуществляется программным образом. Также на плате присутствует разъем для
программирования МК самого программатора.
Для подключения программатора к СОМ-порту служит трехконтактный разъем PLS и потребуется изготовить специальный шнурок.
Замечу, что поскольку здесь используется стандартная разводка шнурка для ISP, с этим программатором можно использовать платы расширения от STK200+/300.
Этот комплект у меня выглядит вот так:
Этот программатор работает у меня под управлением CodeVision AVR 25-ой сборки. Такой выбор обусловлен возможностью регулирования скорости порта непосредственно из программы. Программатору свойственны некоторые особенности в силу применения микросхемы FT232BM, в частности, необходимо выставить минимальную задержку в свойствах соответствующего виртуального СОМ-порта (подробнее смотрите статью USB — RS-232 преобразователи). После этого программирование осуществляется довольно быстро (хотя и чуть медленнее STK200+/300, что, естественно, вызвано последовательным способом передачи данных в программатор).
Схема AVR910-совместимого USB программатора (схема Prottoss»a)
Автором этой конструкции является Рыжков Андрей, известный также под ником PROTTOSS. Описанию этого программатора посвящена одна из страничек его сайта, там же можно найти контакты для связи с автором. Здесь этот материал публикуется с разрешения автора,
так что все формальности соблюдены. :)
Программатор выполнен на основе драйвера от Objective Development
и полностью совместим по командам с оригинальным программатором AVR910 от ATMEL. Описание оригинальной схемы программатора можно взять в
Application Note AVR910: In-System Programming, а список поддерживаемых команд можно посмотреть в
Application Note AVR109: Self Programming
Исходно схема устройсва выглядит следующим образом:
Светодиоды VL1, VL2 сигнализируют о текущих действиях программатора, и, соответственно, обозначают режимы чтения и записи.
Светодиод VL3 служит для сигнализации подачи питания на программатор.
Резисторы R10 — R14 предназначены для согласования уровней сигналов контроллера программатора и программируемого контроллера.
С помощью J3 LOW SCK возможно понижать тактовую частоту порта SPI МК программатора до ~20 кГц. При разомкнутом джампере частота SPI
нормальная, при замкнутом — пониженная. Переключать джампер можно «на ходу», так как управляющая программа МК программматора проверяет состояние
линии PB0 при каждом обращении к порту SPI. Не рекомендуется переключать джампер при запущенном процессе записи/чтения программируемого МК, т.к.,
скорее всего, это приведет к искажению операции записи/чтения. Данный джампер введен для возможности программирования МК AVR, тактированных от
внутреннего генератора 128 кГц.
Схема была несколько переработана, в нее внесены следующие изменения.
Питание МК осуществляется от USB, но не через диоды, как в исходной схеме,
а через LDO стабилизатор LM1117 на 3.3В. Замечу, что при таких напряжениях питания (как 3.3 В здесь, так и 3.6 В в исходной схеме) и частоте кварца 12 МГц
Atmel не гарантирует устойчивую работу своих МК, однако к чести производителя ни один из тестировавшихся микроконтроллеров работать не отказался.
Тем не менее, стоит учитывать такую возможность. Еще раз: чем больше напряжение питания (в пределах до 5В, естественно), тем выше вероятность того, что контроллер запустится и будет
устойчиво работать, поэтому многие отказываются от LDO в пользу двух диодов. Да, предохранитель тоже отсутствует, но, если добавить, хуже точно не будет.
В обе цепи питания МК (VCC и AVCC) введены дополнительные LC-фильтры в виде SMD-индуктивностей на 10мкГн и конденсаторов 0.1 мкФ (в принципе, дроссель в AVCC можно заменить перемычкой,
его установка — совсем уж перестраховка), кроме того, на плате появился дополнительный джампер, позволяющий
запитывать целевую плату от программатора напряжением 5В или 3.3 В или, естественно, вообще не питать ее от программатора. В цепь питания целевой платы
также включена индуктивность и установлен диод 1N4148, препятствующий попаданию питающего напряжения с целевой платы (если оно там есть) на программатор. Замечу, что поскольку на диоде
имеет место падение напряжения, то напряжение питания целевой платы будет меньше заявленного на величину этого самого падения. В зависимости от диода и некоторых других условий
теоретически оно может снизиться настолько, что его не хватит для нормального функционирования целевой платы. Для уменьшения эффекта можно использовать в этой цепи диод Шоттки,
а вообще, может быть стоит вообще отказаться от такой возможности, решайте сами, насколько оно вам надо… :)
Исчез джампер NORM/MOD, предназначенный для ввода программатора в режим обновления прошивки, вместо этого на плате установлен полноценный разъем для программирования
МК программатора (разъем имеет несколько нестандартный вид и представляет собой контактную гребенку PLS-6, на которую выведены следующие сигналы в последовательности
MOSI-MISO-SCK-Reset-Vcc-GND. В такой же последовательности эти сигналы расположены на выводах МК ATMega16 в корпусе DIP-40, именно оттуда я ее и «срисовал». Такой
разъем занимает меньше места на плате и как правило проще разводится, чем стандартный 10-ти контактный ISP-коннектор, поэтому лично я часто им пользуюсь в своих конструкциях).
Кроме того, уменьшены до 220 Ом последовательные резисторы в линиях программирования (вообще, их номинал — отдельный открытый вопрос) и до 22 Ом в линиях USB.
Все эти изменения можно проследить на печатной плате (кроме изменения номиналов резисторов, в подписях элементов они оставлены прежними), разводку которой можно скачать в конце статьи.
Плата получилась односторонняя с парой перемычек и рассчитана на установку МК ATMega8 в кроватке, у которой удалены неиспользуемые выводы. Можно, конечно, и впаять туда Мегу,
откусив лишние выводы, но это на ваш страх и риск.
Собранный программатор выглядит так:
После сборки программатора следует прошить МК в нем (прошивка в конце статьи), при этом фьюзы для МК нужно выставить следующим образом:
Теперь, если все собрано правильно, при подключении программатора к ПК обнаружится новое устройство и потребуется установка драйверов. Драйвера, естественно, без цифровой подписи, так что просто игнорируем предупреждения ОС по этому поводу. В общем-то, на этом установка и заканчивается. Если у вас не ХР, а Win2000, то требуются некоторые дополнительные манипуляции, за подробным описанием которых (как, впрочем, и всей конструкции вцелом) я попрошу вас обратиться на сайт автора. В системе должен появиться новый виртуальный СОМ-порт, через который и работает этот программатор, стоит настроить номер этого порта и скорость. Естественно, используемый вами софт нужно будет настроить на работу именно с этим портом.
Вот еще вариант платы этого программатора на микроконтроллере в корпусе TQFP, делал под конкретный корпус, схема та же, работает не хуже:
При всем уважении к автору не могу не заметить, что среди повторивших эту схему встречаются люди, у которых она работать отказывается. Сложно объективно сказать, с чем
это может быть связано, однако лишний раз призову к соблюдению рекомендаций и внимательной сборке устройства. В остальном, из личного опыта, претензий к программатору нет,
работает достаточно устойчиво (несколько раз наблюдались сложности при длинных шлейфах к программируемому устройству, другие программаторы в этих же условиях сбоя не давали),
скорость приемлемая, но не очень высокая, естественно.
В качестве возможных доработок могу предложить не питать МК программатора пониженным напряжением, а поставить на линии USB стабилитроны, чтобы ограничить напряжение на них.
Идея не проверялась.
Лично я свой первый МК AT90S2313 программировал с помощью Fun Card, потом собрал и до сих пор плотно использую несколько вариантов STK200+/300, а с AVR910 работаю в основном в «полевых условиях», когда требуется подключение программатора к ноутбуку без LPT-порта.. Вот такая вот эволюция..
Вопросы, как обычно, складываем тут.
Файлы:
Плата Fun Card в формате SL5
Софт для Fun Card
Платы в формате SL5 для STK200+/300
Схема (RusPlan6), плата (SL5) и прошивка (hex) для AVR910
Плата (SL5), прошивка (hex) и драйвера для USB AVR910 от PROTTOSS»a
Плата (P-CAD 2006) для USB AVR910 от PROTTOSS»a на Atmega8 в корпусе TQFP (SMD вариант)
Как вам эта статья? | Заработало ли это устройство у вас? |
Программатор своими руками. Программатор для PIC своими руками :: SYL.ru
Вот есть микроконтроллер, есть написанная программа. Что ещё нужно? Программатор! Ведь без помощи аппаратуры, которая сможет записать последовательностью сигналов процесс, который хочет реализовать человек, сложно будет что-то сделать. А как здорово сделать программатор своими руками!
Также здесь вы найдете описание программаторов и из другого семейства – АВР, но исключительно в сравнительных целях. Приступим к статье, где рассказывается, как сделать программатор-flash своими руками.
Для чего необходим программатор
Так как статья пишется в том числе и для читателей, не слишком осведомленных в этом вопросе, то необходимо взять во внимание и такой пункт. Программатор – это специальное устройство, которое посредством получаемых от компьютера сигналов программирует микроконтроллер, который будет управлять схемой. Качественное устройство является очень важным, ведь в таком случае можно будет быть уверенным в том, что МК не выйдет из строя, или, что важнее, из строя не выйдет компьютер. Есть небольшое уточнение: программатор для PIC своими руками делают только те, у кого есть микроконтроллеры этого семейства. Другие из-за другой архитектуры могут не работать. Но можно попробовать своими силами усовершенствовать представленные схемы и собрать программатор AVR своими руками.Платные против самодельных
Отдельно нужно рассказать о приобретенных в магазинах и самодельных программаторах. Дело в том, что это устройства не очень-то и простые и требуют уже определённых навыков работы, практики пайки и умения обращаться с железом. При работе с купленным программатором от производителя или его дилера можно быть уверенным в том, что на прибор программа будет записана, и ничего не сгорит. А в случае обнаружения неисправностей в самом начале периода эксплуатации его можно вернуть и получить взамен работоспособное устройство.А вот с самодельными программаторами всегда немного сложнее. Дело в том, что даже если они и тестировались, то, как правило, в очень узком диапазоне используемой техники, поэтому вероятность того, что что-то пойдёт не так, высока. Но даже если сама схема является полностью работоспособной, нельзя сбрасывать со счётов возможность того, что человек, собиравший схему, ошибётся в чем-то, что-то припаяет не так, и в результате будут иметь место печальные последствия как минимум для программатора. Хотя учитывая то, как любят микроконтроллеры перегорать, повреждения будут не только у него. При пайке своей платы, для того чтобы избежать негативных последствий, перед сборкой механизма следует проверить работоспособность всех элементов, которые будут использованы в плате, с помощью специальных устройств.
Драйвера
Первоначально следует подобрать программное обеспечение. В зависимости от схемы программатор может быть заточен или под один микроконтроллер, или под большое их количество. Тот, что будет далее рассматриваться, рассчитан примерно на 98 программаторов от 12-го до 18-го семейств. Для тех, кому понравится вариант сборки, следует уточнить, что в качестве драйверного программного обеспечения использовалась программа IC-PROG. Можете попробовать работать и с другой, но уже на свой страх и риск. Это информация для тех, кто хочет создать программатор для AVR своими руками. Далее будет указано, для каких семейств микроконтроллеров РІС он рассчитан. Если есть желание сделать программатор AVR своими руками или какой-то другой тип МК, то вы всегда можете попытаться.Схема программатора
Вот тут уже можно попробовать сделать программатор для PIC своими руками. В качестве гнезда необходимо использовать разъем DB9. Можно сделать и USB-программатор своими руками, но для него понадобятся дополнительные элементы схемы, которые усложнят и без того довольно сложную плату. Также внимательно рассмотрите рисунок с различными прямоугольниками (чтобы знать, какие части за что отвечают). Выводы должны подключатся именно туда, куда нужно, иначе микроконтроллер превратится в небольшой кусочек пластика и железа, который можно поставить на стеночку как напоминание о былых ошибках. Процесс сборки и использования программатора таков:- Собрать сам программатор так, как написано на схемах. Просмотреть на наличие некачественной пайки, а также потенциальных мест замыкания. Программатор рассчитан на работу с напряжением 15-18В, больше категорически не рекомендуется.
- Подготовьте среду управления прошивкой (выше было упоминание одной программы, с которой программатор точно работает).
Процесс прошивки микроконтроллера
Процесс прошивки микроконтроллера данными можно считать продолжением предыдущего списка:- Произвести необходимые для работы программы настройки.
- Установить микроконтроллер в программатор так, как отмечено на схеме. Лучше лишний раз убедиться, что всё так, как должно быть, чем ехать за новым МК.
- Подключить питание.
- Запустить выбранное программное обеспечения (для этого программатора ещё раз посоветуем IC-Prog).
- В выпадающем меню вверху справа выбрать, какой именно микроконтроллер следует прошить.
- Подготовленный файл выбрать для программирования. Для этого перейдите по пути «Файл» – «Открыть файл». Смотрите, не перепутайте с «Открыть файл данных», это совсем другое, прошить микроконтроллер с помощью второй кнопки не получится.
- Нажать на кнопку «Начать программировать микросхему». Примерное время, через которое она будет запрограммирована – до 2 минут. Прерывать процесс программирования нельзя, это чревато выведением из строя микроконтроллера.
- И в качестве небольшого контроля нажмите на кнопку «Сравнить микросхему с буфером».
Не очень сложно, но эта последовательность действий позволяет получить качественный программатор, своими руками сделанный, для различных типов микроконтроллеров РІС.
Какие микроконтроллеры поддерживаются и могут быть прошиты программным обеспечением
Как уже выше упоминалось, этот программатор может работать как минимум с 98 моделями. Как можно заметить по схематическим рисункам и платам, он рассчитан на те МК, что имеют 8, 14, 18, 28 и 40 выводов. Этого должно хватить для самых различных экспериментов и построения самых разных механизмов, которые только можно сделать в пределах скромного бюджета среднестатистического гражданина. Можно выразить уверенность, что сделанный программатор своими руками сможет удовлетворить самых требовательных радиолюбителей — при условии, что он будет сделан качественно.
USB ПРОГРАММАТОР
Основой этого программатора является микроконтроллер ATTiny45. В качестве тактового генератора контроллера используется генератор системы ФАПЧ частотой 16,5 МГц, что позволило отказаться от применения уже привычного в данных схемах внешнего кварцевого резонатора. Резисторы R2, R3 токоограничительные, работают в паре со стабилитронами VD1, VD2 и служат для защиты компьютера от высокого напряжения (по стандарту не более 3,6 В).
Стабилитроны могут быть заменены отечественными КС136 либо аналогичными импортными. Резистор R1 указывает компьютеру, что подключенное устройство работает на скорости LS, его номинал может изменяться в диапазоне 1,5 – 2,2 кОм. Резисторы R4-R7 служат для защиты выходов контроллера от короткого замыкания и согласования логических уровней в случае раздельного питания контроллера и программатора, их величина может изменяться от 270 до 560 Ом. Для соединения программатора и компьютера используется пятипиновое гнездо mini-USB (XS1). Это сделано для уменьшения размеров печатной платы, а также исходя из того, что кабель mini-USB имеется практически у каждого. Подключение программатора к программируемому контроллеру осуществляется при помощи 10-контактного разъема XS2, распиновка которого соответствует стандарту STK200/300.
Программатор AVR собран на плате из фольгированного стеклотекстолита. Внешний вид дорожек платы и расположение деталей на ней показаны на фото. Скачать файл платы в LAY и прошивки МК можно тут. Для тех, кому сложно достать не слишком пока распространенный контроллер ATTiny45, автором была разработана схема на более широко используемом контроллере ATTiny2313.
Схема отличается от предыдущей только наличием кварцевого резонатора ZQ1, частота которого должна равняться 12 МГц и конденсаторами C1 и C2, емкость которых может изменяться в пределах 18 – 24 пФ. И кроме того, в схеме вместо сложного в распайке гнезда mini-USB применено так называемое «принтерное» гнездо типа USB-B. Печатная плата для данной схемы разработана на обычных деталях, что несколько увеличило ее размеры, но позволило отказаться от сложных для пайки многими радиолюбителями smd-компонентами.
После программирования flash-памяти контроллера для ATTiny45 необходимо установить следующие конфигурационные биты: CKSEL3, CKSEL2, CKSEL1 (тактирование от схемы ФАПЧ), BODLEVEL0 (детектор пониженного напряжения на 1,8 В), RSTDSBL (поскольку количество выводов микроконтроллера невелико, то вывод RESET используется в качестве обычного порта ввода-вывода). Для ATTiny2313 необходимо запрограммировать только бит BODLEVEL0, а остальные сбросить.
Чтоб запрограммировать контроллер в первый раз при отсутствии под рукой самого программатора, можно применить любую схему. Например простейший программатор, именуемый в народе «5 проводков», подключается к LPT-порту компьютера и состоит из всего 4 сопротивлений, но сейчас это порт является скорее архаизмом, чем нормой. Сам автор для первоначальной прошивки использовал программатор, представленный на рис. 7. Он подключается с СОМ-порту компьютера и имеет ряд панелек для установки различных микроконтроллеров, что позволяет с легкостью запрограммировать контроллер перед его монтажом в устройство. Управляется программатор от известной программы PonyProg. Небольшой нюанс. PonyProg не знает ни ATTiny2313, ни ATTiny45, поэтому выберите любой контроллер с объемом памяти не меньше, чем 4 кб, например, ATMega8. При прошивке программатор выдаст ошибку о неверном типе контроллера. Выберите «Ignore» и контроллер все равно будет прошит.
Кроме того, поскольку прошивка контроллера ведется через интерфейс внутрисхемного программирования SPI, то возможно (и даже желательно для ATTiny45) прошивать его непосредственно в устройстве уже после распайки. Программирование можно осуществлять либо подпайкой к соответствующим выводам контроллеров проводков и дальнейшим их сопряжением с программатором, либо используя разъем XS2.
При использовании для программирования разъема XS2 необходимо учесть следующий нюанс. При прошивке контроллера он выступает ведомым, и для него вывод MISO является выходом, а MOSI – входом. Когда же контроллер сам выступает в роли программатора, то он сам является ведущим, и входы MISO и MOSI меняются местами.
При программировании контроллера ATTiny45 все необходимые выводы подведены к разъему XS2, в этом случае схема подключения будет иметь следующий вид. Поскольку обе части разъемов XS2 и XS3 представляют собой гнезда, то можно либо спаять кабель со штекерами с обеих сторон, либо выполнить соединения проводками, втыкая их в соответствующие контакты гнезд. На разъеме внешнего программатора не проставлены номера выводов – они могу быть различными для разных типов программаторов, и их следует уточнить в документации для каждого конкретного программатора.
При программировании контроллера ATTiny2313 сигнал сброса, подводимый к выводу RESET, формируется линией РВ0. В этом случае сигнал сброса от внешнего программатора необходимо подключать непосредственно к выводу RESET контроллера ATTiny2313 (вывод 1), подпаяв к нему дополнительный проводок. Можно обойтись и вовсе без него, но тогда необходимо перед подачей питания на контроллер замкнуть вывод RESET на землю, однако в данном случае возможны сбои, и этот вариант не рекомендуется для повторения.
Программатор необходимо подсоединять к компьютеру до запуска программы. При перестыковке программатора необходимо перезапустить программу.
Разберемся с назначением основных элементов интерфейса программы. Для автоматического определения типа подключенного к программатору микроконтроллера служит кнопка «Автоопределение». При этом автоматически считываются идентификатор микроконтроллера, калибровочные и конфигурационные ячейки и биты защиты.
Если же по каким-то причинам автоопределение контроллера дает неверные результаты, то можно установить тип контроллера вручную при помощи выпадающего списка «Ручной выбор контроллера». При этом конфигурационные биты и биты защиты устанавливаются по умолчанию для данного типа контроллера, поэтому стоит быть внимательным, чтобы не ошибиться. Следует заметить, что номенклатура поддерживаемых контроллеров несколько отличается от таковой у программатора AVRDUDE [8]. Во-первых, MICROPROG не поддерживает контроллеры семейства Classic и контроллеры с объемом памяти больше 128 кБ. Во-вторых, им поддерживаются новые чипы, еще не включенные в список AVRDUDE. Кроме того, этот список будет постоянно обновляться автором по мере выхода новых контроллеров.
Следующая, и одна из наиболее полезных особенностей данного программатора – это программное изменение частоты тактовых импульсов SCK. При этом имеется на выбор 5 фиксированных частот (1 МГц, 250 кГц, 50 кГц, 10 кГц, 2 кГц). Выбор частоты осуществляется из выпадающего списка «Частота тактового сигнала». По умолчанию при подключении программатора у него всегда устанавливается частота 1 МГц, поэтому будьте внимательны: если подключенный контроллер не определяется устройством, возможно, что для него установлена слишком высокая частота импульсов SCK. Попробуйте снизить ее и повторить попытку.
Возможно, у кого-то возникнет вопрос, зачем нужна столь низкая частота, как 2 кГц. Автор однажды столкнулся со следующей проблемой. При тактировании контроллера ATtiny13 внутренним генератором частотой 128 кГц и запрограммированном фьюзе CKDIV8 реальная тактовая частота контроллера установилась на уровне 16 кГц. При этом как следует из инструкции к контроллерам AVR, частота импульсов SCK должна быть меньше тактовой как минимум в 2,5 раза, то есть на уровне 6 кГц. Минимальная же частота импульсов SCK для того же программатора USBasp составляет 8 кГц, чего как оказалось, недостаточно. Таким образом, абсолютно рабочий контроллер оказался негодным к употреблению, пока не был создан программатор MICROPROG, который таки смог вернуть его к жизни. Но вернемся к описанию.
В поле «Идентификатор» указывается трехбайтовый шестнадцатеричный код, уникальный для каждого типа контроллера. Это поле доступно только для чтения.
В поле «Калибровочные ячейки» указываются значения, занесенные заводом-изготовителем при калибровке внутреннего RC-генератора контроллера. Количество значений зависит от количества фиксированных тактовых частот микроконтроллера (для ATTiny13 таких значений два – для 4,8 МГц и для 9,6 МГц). Это поле также доступно только для чтения.
В блоке «Конфигурационные ячейки» задаются конфигурационные биты, или фьюзы. Всего в микроконтроллерах AVR имеется три конфигурационных байта – старший (High Fuse, HF), младший (Low Fuse, LF) и дополнительный (Extended Fuse, EF). В представленной программе имеется двойная возможность задавать значения этих байтов.
1. Побитно, устанавливая или снимая флажки с соответствующих битов (важно помнить, что установленный флажок сбрасывает соответствующий бит в 0)
2. Побайтно, задавая сразу значение всего конфигурационного байта в правой части окна программы. Значение байта задается в шестнадцатеричном коде.
Оба способа задания конфигурационных ячеек равноценны. Изменения, созданные одним способом тут же отображаются и другим способом.
Кнопка «Чтение» позволяет считать фьюзы из контроллера. Кнопка «Запись» – записать выбранные в программе фьюзы в контроллер. Кнопка «Верификация» сравнивает выбранные в программе фьюзы с теми, которые записаны в контроллер. Кнопка «По умолчанию» устанавливает фьюзы по умолчанию для данного типа контроллера согласно инструкции (при этом биты устанавливаются только в программе, для их записи в контроллер необходимо воспользоваться кнопкой «Запись»).
В блоке «Ячейка защиты» задаются биты защиты. Их установка позволяет защитить программный код от несанкционированного чтения или записи. Все компоненты этого поля аналогичны таковым для блока «Конфигурационные ячейки».
В блоке «Программирование» осуществляются операции с flash- и eeprom-памятью контроллера. Кнопка «Стирание кристалла» предназначена для стирания всех областей памяти, включая биты защиты, flash и eeprom (последняя не стирается при установленном бите EESAVE). При этом конфигурационные ячейки остаются без изменения.
Под кнопкой расположено два почти идентичных подблока «Программирование FLASH» и «Программирование EEPROM». По нажатию на кнопку «Файл НЕХ» открывается диалоговое окно выбора файла с расширением *.hex. Имя выбранного файла и путь к нему отображаются в поле справа от кнопки. При этом поле является редактируемым, то есть путь можно прописать и вручную.
Кнопка «Чтение» позволяет считать flash-память контроллера в выбранный HEX-файл. По окончанию считывания на экране появится соответствующее сообщение. При этом в поле выбора файла можно указать имя несуществующего файла – он будет автоматически создан.
Кнопка «Запись» позволяет записать выбранный HEX-файл в flash-память контроллера. По окончанию программирования на экране появится соответствующее сообщение. ВАЖНО!!! Перед выполнением команды «Запись Flash» автоматически осуществляется выполнение команды «Стирание кристалла».
Кнопка «Верификация» позволяет сверить выбранный HEX-файл с содержимым flash-памяти микроконтроллера. По окончании процесса на экране появится сообщение об успешной верификации или об ошибке. Ошибка может быть вызвана установленными битами защиты или неверно выбранным для верификации файлом.
Назначение кнопок с идентичными названиями в подблоке «Программирование EERPOM» аналогично таковым для подблока «Программирование FLASH» за исключением того, что все операции здесь относятся к области eeprom-памяти, а файлы имеют расширение *.eep. Автор: Сокол Сергей, Радио 2-2012.
Форум по программаторам
Схемы на микроконтроллерахПрограмматор для новичков | Каталог самоделок
Начинающий радиолюбитель вполне может освоить сборку USB-программатора. Некоторые могут подумать, что для этого используют сложную схему. Для того, чтобы максимально упростить задачу, лучше воспользоваться LPT.
Сама схема представлена на рисунке, и в ней довольно легко разобраться новичку:
Особенность этой схемы – отсутствие кварцевого резонатора. Работы выполняются по следующей разводке:
В начале программируются CKSEL1, CKSEL2 и CKSEL3 и схема подключается к компьютеру. Он может сразу не найти неизвестное устройство, поэтому нужно подождать установки драйверов. После этого можно приступать к программированию RSTDSBL.
Допускается использование ATtiny45 или ATtiny85. При этом стоит обратить внимание, чтобы в СМД было 20SU или в ДИП было 20PU. В примере, устройство изготавливается на базе ATtiny85 20su. В нем подлежат программированию BODLEVEL0 CKSEL1, CKSEL2, CKSEL3 и RSTDSBL.
Со штекера USB снимается шкурка, контакты необходимо подпилить и припаять. Края подрезаются канцелярским ножом.
Затем нужно осторожно вытащить пластмассовую деталь с контактами.
Для того чтобы обеспечить доступ к контактам жалу паяльника, нужно немного подпилить заготовку. На фотографии вверху видна плата. Предварительно ее протравили в растворе из перекиси водорода и лимонной кислоты.
Лудить плату можно несколькими способами. В примере использовано для этого жало паяльника. Камень растворяется в канифоли и с помощью шприца наносится на плату. Припаивать пластмассу нужно, соблюдая последовательность контактов. Тут нужно быть внимательным, чтобы не получилось как на следующей фотографии (придется переделывать):
После того, как все правильно сделано, можно припаивать резисторы и МК. Важно обратить внимание на то, чтобы разрез соединения и контроллер находились на одной стороне.
На другой стороне располагаются стабилитроны, каждый из них не должен превышать 500 мА.
На следующем этапе необходимо припаять шлейф-кабель. Лучше брать для этого экранированную деталь. Если такого шлейф-кабеля под рукой нет, то подойдет от обычного картридера. При этом подсоединяются два оранжевых экранированных провода, и экран-фольга идет на массу. Прошивка для ATtiny2313A проходит при частоте около 250 кГц, для фюзов достаточно будет 2 кГц.
В качестве корпуса для устройства можно использовать обычную зажигалку. Предварительно нужно выпустить, находящийся внутри газ.
Среднюю стенку необходимо удалить. В образовавшуюся полость вставляется программатор и закрепляется горячим клеем. Положение платы должно быть откорректировано.
Готовый программатор показан на следующей фотографии:
Дополнительные материалы можно найти в архиве: драйвера, варианты прошивки, несколько печатей плат.
Автор: Виталий Петрович. Украина, Лисичанск.