USB-программатор (AVR): описание, назначение. Миниатюрный USB программатор для AVR микроконтроллеров Программное обеспечение и заметки

У радиотехников, которые любят заниматься конструированием электронных приборов, время от времени возникает необходимость использования в своих разработках микроконтроллеров. Применение этих полупроводниковых приборов

открывает огромные перспективы перед радиотехником. Микроконтроллеры выпускаются всего несколькими фирмами, лидерами из которых являются MicrochipTechnology, ATMEL, ARMLimited. Главной особенностью подобных приборов является необходимость их программной прошивки. Для этого и необходимы программаторы. На сегодняшний день существует огромный выбор различных типов программаторов, правда, цена таких изделий весьма высока, и не каждый радиолюбитель сможет позволить себе приобрести такое устройство.

В этой статье мы рассмотрим USB-программатор (AVR) на базе управляющего микроконтроллера Atmega 8. Это изделие достаточно простое, для того чтобы радиолюбитель смог собрать его самостоятельно и не тратил большие деньги на фирменное изделие. Выбранный нами USB-программатор (AVR) имеет минимальную обвязку микроконтроллера, что позволяет собрать весьма миниатюрный прибор. Такое изделие не займет много места, оно имеет обычной флэшки. USB-программатор (AVR) в своей схеме содержит микроконтроллер тип корпуса - TQFP 32 (не следует путать с типом корпуса DIP, так как у них различные распиновки). Схема такого устройства приведена на фото.

Приступим к описанию схемы прибора. Перемычка J1 используется в том случае, когда возникает необходимость прошивки микроконтроллера, имеющего тактовую частоту ниже 1,5 Мгц. При желании эта перемычка легко исключается из схемы, для этого 25-й вывод контроллера садится на «землю». В таком случае AVR-USB-программатор всегда будет функционировать на пониженной частоте. Следует учесть, что программирование на занимает больше времени, но решать, конечно же, вам. Стабилитроны D1, D2 применяются для согласования уровня между USB-шиной и программатором. Голубой светодиод сигнализирует о готовности устройства к программированию микроконтроллера, красный диод горит в процессе программирования. Схема имеет IDC-06 разъем, на который выведены контакты, распиновка которых соответствует типу ATMEL 6-пинового разъема ISP. На указанный разъем выводятся контакты питания микроконтроллеров, оно берется с USB-порта персонального компьютера, следовательно, необходимо быть внимательным, чтобы не допустить С помощью этого же разъема происходит программирование и управляющего контроллера, для этого необходимо соединить контакты Reset на контроллере и на разъеме (на схеме показано красным пунктиром).

Перемычка снижения скорости программатора и разъем подключения микроконтроллера расположены на торце устройства. Вот что представляет собой USB-программатор (AVR), как видите, все элементарно.

После сборки устройства необходимо прошить управляющий микроконтроллер, для этого рекомендую использовать программу PonyProg. При программировании заводим кристалл на функционирование от внешнего тактирующего источника на 12 Мгц.

Описанный в этой статье USB-программатор для AVR работает со всеми микроконтроллерами типа AVR, позволяет прошивать их, смотреть записанное содержимое устройства, стирать чипы, менять конфигурацию.

Как театр начинается с вешалки, так программирование микроконтроллеров начинается с выбора хорошего программатора. Так как начинаю осваивать микроконтроллеры фирмы ATMEL, то досконально пришлось ознакомится с тем что предлагают производители. Предлагают они много всего интересного и вкусного, только совсем по заоблачным ценам. К примеру, платка с одним двадцатиногим микроконтроллером с парой резисторов и диодов в качестве обвязки, стоит как «самолет». Поэтому остро встал вопрос о самостоятельной сборке программатора. После долгого изучения наработок радиолюбителей со стажем, было решено собрать хорошо зарекомендовавший себя программатор USBASP, мозгом которого служит микроконтроллер Atmega8 (так же есть варианты прошивки под atmega88 и atmega48). Минимальная обвязка микроконтроллера позволяет собрать достаточно миниатюрный программатор, который всегда можно взять с собой, как флэшку.

Автором данного программатора является немец Thomas Fichl, страничка его разработки со схемами, файлами печатных плат и драйверами.
Раз решено было собрать миниатюрный программатор, то перерисовал схему под микроконтроллер Atmega8 в корпусе TQFP32 (распиновка микроконтроллера отличается от распиновки в корпусе DIP):

Перемычка J1 применяется, в случае если необходимо прошить микроконтроллер с тактовой частотой ниже 1,5МГц. Кстати, эту перемычку вообще можно исключить, посадив 25 ногу МК на землю. Тогда программатор будет всегда работать на пониженной частоте. Лично для себя отметил, что программирование на пониженной скорости на доли секунды дольше, и поэтому теперь перемычку не дёргаю, а постоянно шью с ней.
Стабилитроны D1 и D2 служат для согласования уровней между программатором и USB шиной, без них работать будет, но далеко не на всех компьютерах.
Светодиод blue показывает наличие готовности к программированию схемы, red загорается во время программирования. Контакты для программирования выведены на разъем IDC-06, распиновка соответствует стандарту ATMEL для 6-ти пинового ISP разъема:

На этот разъем выведены контакты для питания программируемых устройств, здесь оно берется напрямую с USB порта компьютера, поэтому нужно быть внимательным и не допускать кз. Этот же разъем применяется и для программирования управляющего микроконтроллера, для этого достаточно соединить выводы Reset на разъеме и на мк (см. красный пунктир на схеме). В авторской схеме это делается джампером, но я не стал загромождать плату и убрал его. Для единичной прошивки хватит и простой проволочной перемычки. Плата получилась двухсторонняя, размерами 45х18 мм.

Разъем для программирования и перемычка для снижения скорости работы программатора вынесены на торец устройства, это очень удобно

Прошивка управляющего микроконтроллера
Итак, после сборки устройства осталось самое важное - прошить управляющий микроконтроллер. Для этих целей хорошо подходят друзья у которых остались компьютеры с LPT портом:) Простейший программатор на пяти проводках для AVR
Микроконтроллер можно прошивать с разъема программирования, соединив выводы Reset микроконтроллера (29 нога) и разъема. Прошивка существует для моделей Atmega48, Atmega8 и Atmega88. Желательно использовать один из двух последних камней, так как поддержка версии под Atmega48 прекращена и последняя версия прошивки датируется 2009 годом. А версии под 8-й и 88-й камни постоянно обновляются, и автор вроде как планирует добавить в функционал внутрисхемный отладчик. Прошивку берем на странице немца. Для заливки управляющей программы в микроконтроллер я использовал программу PonyProg. При программировании необходимо завести кристалл на работу от внешнего источника тактирования на 12 МГц. Скрин программы с настройками fuse перемычек в PonyProg:

После прошивки должен загореться светодиод подключенный к 23 ноге микроконтроллера. Это будет верный признак того, что программатор прошит удачно и готов к работе.

Установка драйвера
Установка велась на машину с системой Windows 7 и никаких проблем не возникло. При первом подключении к компьютеру выйдет сообщение об обнаружении нового устройства, с предложением установки драйвера. Выбираем установку из указанного места:

Мигом появится окно с предупреждением о том, что устанавливаемый драйвер не имеет цифровой подписи у мелкомягких:

Забиваем на предупреждение и продолжаем установку, после небольшой паузы появится окно, сообщающее об успешном окончании операции установки драйвера

Все, теперь программатор готов к работе.

Khazama AVR Programmer
Для работы c программатором я выбрал прошивальщик Khazama AVR Programmer . Замечательная программка, с минималистичным интерфейсом.

Она работает со всеми ходовыми микроконтроллерами AVR, позволяет прошивать flash и eeprom, смотреть содержимое памяти, стирать чип, а также менять конфигурацию фьюз-битов. В общем, вполне стандартный набор. Настройка фьюзов осуществляется выбором источника тактирования из выпадающего списка, таким образом, вероятность залочить кристалл по ошибке резко снижается. Фьюзы можно менять и расстановкой галок в нижнем поле, при этом нельзя расставить галки на несуществующую конфигурацию, и это тоже большой плюс в плане безопасности.

Запись фьюзов в память мк, как можно догадаться, осуществляется при нажатии кнопки Write All. Кнопка Save сохраняет текущую конфигурацию, а Load возвращает сохраненную. Правда я так и не смог придумать практического применения этих кнопок. Кнопка Default предназначена для записи стандартной конфигурации фьюзов, такой, с какой микроконтроллеры идут с завода (обычно это 1МГц от внутреннего RC).
В общем, за все время пользования этим программатором, он показал себя с наилучшей стороны в плане стабильности и скорости работы. Он без проблем заработал как на древнем стационарном пк так и на новом ноутбуке.

Скачать файл печатной платы в SprintLayout можно по

Конкурс начинающих радиолюбителей
“Моя радиолюбительская конструкция”

USB AVR программатор

Схема и программное обеспечение простого высокоскоростного USB AVR программатора, который может собрать своими руками и начинающий радиолюбитель

Конкурсная конструкция начинающего радиолюбителя –
“USB AVR программатор”

Здравствуйте уважаемые друзья и гости сайта!
Представляю на ваш суд вторую конкурсную работу.
Автор конструкции – Григорьев Илья Сергеевич .
Теперь на нашем сайте не только “Лед тронулся”, но и “Заседание продолжается”.

USB AVR программатор

Немного о данной конструкции.
На первый взгляд кажется, что эта схема сложна, не “по зубам” начинающим, а автор – уже довольно опытный радиолюбитель.
Смею всех заверить, Илья Сергеевич – начинающий радиолюбитель. А своей конструкцией он доказал, что при желании, настойчивости, целеустремленности, конструкцию такой сложности сможет собрать любой начинающий радиолюбитель.
Ну а теперь, слово автору.

Григорьев Илья Сергеевич, город Хабаровск

Всем привет!
Представляю на ваш суд вторую свою завершенную работу (первая- простая мигалка).
Решил, что в будущем буду собирать схемы, на основе каких-либо микросхем, которые нужно программировать, для чего нужен, собственно говоря, программатор!
В интернете огромное количество схем, на любой вкус, но основная проблема и замечание к схемам – это то, что у меня нет ни LTP, ни COM порта, остается вариант USB программатора. Но и тут есть своя загвоздка – для большинства программаторов, для начала работы, их микросхемы нужно запрограммировать на работу, а для этого нужен… – правильно, программатор! Можно было конечно собрать программатор Громова, пройтись по друзьям и найти LTP или COM порт, но мне этого не хотелось. Оставался последний вариант – это использовать программатор на основе микросхемы FT232RL, минус у этого программатора и у этой микросхемы только цена последней – она у нас в Хабаровске стоит в районе 230 рублей. Я решил на таком денег не экономить и взяться за сборку программатора на FT232RL.

Итак, список деталек:
Это сердце программатора – FT232RL . Цена- 230р
Вторая микросхема- 74HC244, она нужна, т.к у этого программатора есть еще один минус - он не отдает линию RESET по завершении программирования. Поэтому, чтобы схема стартанула, надо выдрать из платы разьем ISP, что очень неудобно. Это можно решить просто добавив к этой схеме буфферную микросхему 74HC244. Цена 20-30 р
И далее набор мелочевки:
– 4 резистора по 47 Ом
– 4 резистора по 100 Ом
– 1 резистор на 4.7 Ком
– 3 резистора на 300 Ом
– 3 кондера по 0.1u
– 3 светодиода(к,з,ж)
– 1 диод Шоттки (чтобы возможный обратный ток от прошиваемого устройства не сжег программатор и ПК)
– 1 USB type B, его еще называют принтерным
Вот и все, что надо! Мелочевка стоит в районе 50 рублей
Все компоненты я брал в обычном исполнении и smd, т.к. до конца не знал, как получится у меня работа с smd компонентами, вдруг пришлось бы собирать большой вариант.

Вот сама схема:

Принцип работы.
Программатор запитывается от USB порта. Уровни выходных сигналов программатора с помощью джампера JP1 могут быть заданы или 5-ти вольтовыми, или 3-ех вольтовыми.
Напряжение питания программатора может быть подано через разъем X2 на программируемую плату, для чего нужно замкнуть джампер JP2.
Следует иметь ввиду, что при 5-ти вольтовом питании напряжение подается с USB порта. И максимально ток, который можно получить с программатора, ограничен величиной 500 мА. Однако для такого тока микросхему FT232 нужно настроить с помощью утилиты FT Prog.
При 3-ех вольтовом питании напряжение берется с выхода внутреннего стабилизатора микросхемы FT232, максимальный ток которого равен порядка 50 мА.
Для предотвращения подачи питания на USB порт от внешнего устройства на программаторе установлен диод Шоттки (у них маленькое падение напряжения в прямом направлении). При желании диод VD1 можно заменить обычным диодом или перемычкой, но эту уже на ваш страх и риск.
Также программатор можно использовать как USB-UART преобразователь. Для этого на разъем Х2 выведены сигналы RXD, TXD и подключены светодиоды LED2, LED3. Они вспыхивают, когда происходит передача данных.
Программатор не нужно отключать от программируемой платы, потому что после программирования микросхема DD1 переводит выходные буферы в третье состояние.
Светодиод LED1 загорается, когда идет процесс программирования.
На контактную площадку JP можно вывести тактовый сигнал. Для этого требуется конфигурирование FT232 с помощью утилиты FT Prog.

Сам процесс сборки.
Сначала я распечатал схему на глянцевый листок от журнала (использовал и фотобумагу и клейкую бумагу для принтера, все не то… самый лучший эффект – это печать схемы на глянцевом журнале). Потом, после соединения глянцевого листочка с кусочком текстолита, начинаем гладить утюгом, выставив на нем максимальную температуру. Сначала я приложил утюг прям на листик, что бы он приклеился к текстолиту, подержал так секунд 10, затем сверху положил листок бумаги и начал гладить в течении 3-4 минут, затем, убрал листок бумаги и еще на несколько секунд приложил утюг и острым уголком утюга поводил по тем местам, где будут будущие дорожки для микросхем.

После этого убираем утюг, и даем плате полностью остыть. Потом окунаем на 5 минут наш текстолит с глянцевой бумажкой в теплую воду, что бы бумага намокла и отстала он текстолита, потом скатываем осторожно бумагу. Вот что получается:

Затем травим. Я травлю хлорным железом: наливаю почти горячую воду, растворяю в нем порошок, окунаю текстолит и потом наливаю в тазик горячую воду и туда окунаю плошку с хлорным железом. Чем больше концентрация раствора и температура- тем быстрее пройдет реакция.
Вот что получилось:

Затем я взял ватку с ацетоном и снял тонер, потом залудил.

И начал паять:

Собрал программатор, после чего ОБЯЗАТЕЛЬНО проверил все на наличие короткого замыкания. Вообще, т.к. я впервые работал с такой мелочью, то после каждого резистора, после каждого кондера я проверял программатор на просвет(очень хорошо видно попал ли припой на соседние дорожки) и проверял мультиметром на замыкание цепи. Итог такой- 2 раза были замыкания под резисторами…все удачно исправил.
Так же после сборки программатора не следует сразу включать его в USB порт. Убедитесь в отсутствии замыканий между землей и плюсом питания, установите джамперы в требуемое положение и только затем подключайте программатор к компьютеру.
Честно сказать- я волновался, хоть и был уверен в отсутствии КЗ.
После подключения я почувствовал нагревание платы, в районе FT232RL, а ПК выдал сообщение о подключении неизвестного устройства с неправильной работой. Я быстро отключил программатор и еще раз, внимательно просмотрел все дорожки на предмет прилипания припоя к соседним дорожкам и еще раз пропаял все выводы микросхем. После этого еще раз подключил программатор и, о чудо! , программатор определился и попросил установить дрова! Поставил дрова и в диспетчере приложения появились 2 новых устройства:

Ура! Теперь можно всерьез задуматься о работе с микросхемами!
Спасибо за внимание!

(666.9 KiB, 2,785 hits)

Уважаемые друзья и гости сайта!

Не забывайте высказывать свое мнение по конкурсным работам и принимайте участие в обсуждениях на форуме сайта. Спасибо.

В жизни каждого юзера наступает такой момент, когда надо апгрейдить компьютерное железо. Но не все так радосто, как казалось – производители компьютеров сейчас выкидывают такие ненужные по их мнению вещи, как COM- и LPT-порты (тоже относится и к владельцам ноутбуков). И что же делать несчастному юзеру, если необходимо прошить очередной МК AVR для девайса? Выход один – делать USB-программатор (или прикупить). Сегодня мы этим и займемся… (я имею ввиду сборку). И так, наша цель – создание программатора USBasp.

Однако при изготовлении данного программатора есть одна проблема – нужно прошить контроллер, используемый в данном программаторе. Так что ищем друга, у которого есть рабочий COM- или LPT-порт в компьютере и, прикупив пивка, идём к нему (уж за такой презент он не откажет). Когда делал свой USBasp, пользовался простейшим ISP программатором – программатором Громова (Громов – разработчик Algorithm Builder). Так что расскажу как сделать USBasp с помощью него. Вначале паяем программатор Громова по следующей схеме:

Вопросы типа: «А где рисунок платы?» будут оставлены без ответа, т.к. ответ в архиве. Замечу один момент: на прошиваемый контроллер необходимо подача питающего напряжения 5 вольт (+ и -), которое можно взять с компьютерного блока питания (использовал разъем от флоппика). Для этого в плате программатора AVR предусматриваем место для подключения 2-х питающих проводов. Выглядеть будет примерно так:

Основные подготовительные операции выполнены и теперь приступаем к действиям для достижения основной цели – сборка USBasp.

Про сборку и описывать особо нечего, так как тут всё ясно. Для себя исключил из схемы перемычки Jmp1 и Jmp3, Jmp2 заменил переключателем, а вместо разъема ISP типа BH-10 поставил DB-9M. Контроллер прошивал отдельно с использованием вот такой платы:


Собранный USB программатор AVR засунул в подходящий пластмассовый корпус:

А теперь расскажу, как же все таки заставить работать USBasp. Что у нас имеется в распоряжении (весь софт в архиве):

1. программатор Громова;
2. софт под названием Uniprof;
3. программатор USBasp;
4. прошивка для контроллера USBasp;
5. драйвера для установки USBasp в системе.

На собранном USBasp ставим перемычки Jmp1 (цепь RESET) и Jmp2 (+5V), подключаем к нему программатор Громова и все это дело подключаем к COM-порту компа, не забыв подать питание 5 вольт. Запускаем Uniprof, если все собрано и подключено правильно, то должнен определиться тип прошиваемого контроллера:

Нажимаем кнопку с рисунком папки и надписью HEX и указываем путь к файлу прошивки контроллера USBasp. В итоге получаем следующее:

Осталось нажать на кнопку Prog с красной стрелкой, чтобы запустить режим прошивания. Ждем окончания заливки hex-файла. А теперь самые большие грабли – прошивка fuse-битов. В чекбоксе «Тормоз» (тот что над пивной кружкой) ставим галку (особенно актуально для шустрых системников), нажимаем кнопку «Fuse» (ала серп и молот:-D) и выставляем фьюзы как указано на картинке:

После установки галок нажимаем кнопки «Write» в каждом из байтов.

Примечание (вдруг кто будет пользовать программатор Громова и дальше): в Uniprof галка напротив фьюза означает, что он установлен в 1 (в PoniProg галка означает установку в 0).

Прошили? Отлично! Снимаем перемычку J1 и втыкаем программатор в компьютер. Теперь скармливаем дрова и в системе появляется новое устройство под названием USBasp. Для прошивки контроллеров качаем avrdude, но у нее есть недостаток – она консольная. Однако добрые дяди не оставили нас в беде и сделали графическую оболочку для avrdude, называется она USBASP_AVRDUDE_PROG. При прошивке fuse-битов через avrdude галка в чекбоксе напротив бита означает 0.

Вот вроде и всё. Будут вопросы по запуску программатора - справшивайте, вместе как-нибудь разберемся.

Программатор выполнен на основе драйвера от Objective Development и полностью совместим по командам с оригинальным программатором AVR910 от ATMEL. Описание устройства. Предохранитель защищает линий питания порта USB от случайного замыкания по цепям питания программатора. Диоды VD1, VD2 впрямительные кремниевые, они предназначены для понижения питания микроконтроллера до 3,6 В. Согласно документации, контроллер может работать при таком напряжении питания до частоты чуть более 14 МГц. Светодиоды VL1 ("RD ”), VL2 ("WR ”) сигнализируют о текущих действиях программатора и обозначают режимы чтения и записи. Светодиод VL3 ("PWR ”) показывает подачу питания на .

Джампер J1 - (MODify ) служит для начального программирования управляющего МК программатора. При его замыкании, к разъему ISP подключается внешний программатор и производится загрузка в МК управляющей программы. После программирования управляющего МК программатора этот джампер необходимо разомкнуть и замкнуть джампер J2 - NORMal.

Джампер J3 LOW SCK понижает тактовую частоту порта SPI МК программатора до ~20 кГц. При разомкнутом джампере частота SPI нормальная, при замкнутом - пониженная. Переключать джампер можно на ходу, так как управляющая программа МК программатора проверяет состояние линии PB0 при каждом обращении к порту SPI. Не рекомендуется переключать джампер при запущенном процессе записи/чтения программируемого МК, т.к., скорее всего, это приведет к искажению записываемых/читаемых данных. Джампер J3 введен для возможности программирования МК AVR, тактируемых от внутреннего генератора 128 кГц.

Резисторы R10 - R14 предназначены для согласования уровней сигналов микроконтроллера программатора и внешних цепей (программируемый МК или другой программатор). Тактовая частота порта SPI МК программатора при разомкнутом джампере J3 равна 187,5 кГц. Это позволяет программировать контроллеры с тактовой частотой примерно от 570 кГц для ATtiny/ATmega, 750 кГц для 90S и 7,5 МГц для 89S. Контроллеры программируются от 10 до 30 секунд (при использовании утилиты AVRProg v.1.4 из пакета AVR Studio) вместе с верификацией в зависимости от объема FLASH памяти и тактовой частоты.

На вывод LED разъема ISP выведен меандр с частотой 1 МГц для "оживления" МК, у которых были ошибочно запрограммированы фьюз-биты, отвечающие за тактирование. Сигнал генерируется постоянно и не зависит от режима работы программатора. Программатор тестировался с программами AVRProg v.1.4 (входит в пакет AVRStudio), ChipBlasterAVR v.1.07 Evaluation, CodeVisionAVR, AVROSP (ATMEL AVR Open Source Programmer). Для нормального функционирования контроллера в схеме необходимо, чтобы были запрограммированы (установлены в "0") биты SPIEN , CKOPT , SUT0 и BODEN . Обычно микроконтроллеры, идущие с завода, т.е. новые, имеют уже запрограммированный бит SPIEN . Остальные биты должны быть незапрограммированные (установлены в "1").

Инструкция по установке и работе. Прошить контроллер. Подключить свежеиспеченный программатор к компьютеру через USB. Операционная система найдет новое устройство - AVR910 USB Programmer, при предложении автоматически найти драйвер, отказаться, и указать путь к inf-файлу, в зависимости от установленной на вашем компьютере операционной системы.

На форуме находятся все файлы, а также печатная плата для нашего программатора avr. Здесь покажу технологию сборки USB программатора AVR и упаковки в корпус. Для начала скачиваем архив и делаем печатную плату.

Потом впаиваем на неё все детали. Не смог найти маленький кварц, поэтому впаял большой, но на длинных ножках, чтобы потом загнуть, чтоб не мешал при установки платы в корпус. Далее подбираем подходящий корпус, у меня был готовый.

Подгоняем плату под корпус, делаем все замеры, сверлим отверстия и вот вам готовый прибор, с универсальной платой.

Если нет специальной измерительной аппаратуры, можно произвести проверку при помощи светодиода. Светодиод подключается анодом к контакту LED, катодом к любому контакту GND ISP-разъема. При подаче питания светодиод должен светится в «полнакала». При замыкании пинцетом ножек кварцевого генератора светодиод должен либо засветится в «полный накал», либо свечение должно отсутствовать.

Без ощибок собранный программатор с правильно запрограммированным микроконтроллером в настройке не нуждается. Но если у программируемого МК вход RESET подтянут к напряжению питания резистором, то номинал резистора не должен быть ниже 10 кОм - это связанно с пониженным напряжением питания управляющего контроллера в схеме программатора и введением ограничительных резисторов на шине ISP-разъема.

Обсудить статью ПРОГРАММАТОР AVR USB

 

Возможно, будет полезно почитать: