Делаем простой USB программатор USBTinyISP
Очень многие люди, начиная свое знакомство с микроконтроллерами, испытывают трудности с инструментом для их программирования. И это реально может охладить творческий пыл. Да что там говорить, я и сам после сборки своего первого Arduino долго пытался «вдохнуть» жизнь в «железяку». Здесь очень хорошо описаны мучения. Конечно, самый простой вариант «5 проводков» — это здорово! Но, в моем окружении (как я понимаю, и у многих) дома, на работе в компах и ноутбуках напрочь отсутствует LPT-порт! Да и COM-порт становиться достаточно редкой «экзотикой». Что же делать? Естественно, на сцене появляется вездесущий USB.
Да, готовый программатор для AVR легко можно купить. Но цена на них неадекватно завышена (у нас в г. Минске, на радиорынке что-то около 30..50 у.е.). Как говорил Киса Воробьянинов — «ОДНАКО. ». Хорошо, что есть братья-китайцы, с нормальными ценами. Только придется прилично подождать. Да и судя по последним тенденциям, ОГРОМНЫЙ поток посылок из Китая ОЧЕНЬ заинтересовал государственные органы… И боюсь, что в скором времени превратится в жалкий ручеек 🙁 Да и к тому же, как говорит мой хороший друг: «Это не наш метод. Мы сделаем сами, пусть по выходу окажется и в два раза дороже!».
Спешу обрадовать, что затраты на изготовление — мизерные. Самые дорогие компоненты — это 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Вт) — 2 резисторa 33 Ом (smd, маркировка 330) — 1 резистор 10к (smd, маркировка 103) — 2 стабилитрона на 3.6В — 2 конденсатора 22 pF (smd) — 1 конденсатор 0.1 мF (smd) — 2 светодиода (зеленый и красный) — кварц на 12Mhz — электролитический конденсатор 100x16V — самовосстанавл. предохранитель (я выпаял из старой мат. платы). Если нету, можно поставить перемычку (на http://www.ladyada.net/ так и сделали). — два штырька для перемычки
Мой любимый сплав Розе
Паяем SMD элементы
Теперь перемычки и оставшиеся элементы
Небольшое лирическое отступление. Давным давно,в 2000-х годах у меня один приятель жаловался со сложностями в поиске НОРМАЛЬНОЙ работы (он работал водителем). Дело в том, что у него был на тот момент очень маленький стаж вождения :). Чувствуете подвох? На нормальную работу без стажа не берут. Стажа нет, потому что на работу не берут…. И так замкнутый круг.
Так и в нашем случае, для изготовления программатора нужно запрограммировать контроллер….т.е. нужен программатор. Слава богу, это нужно проделать всего один раз. Выходов несколько: — берем пиво и навещаем приятеля с программатором 🙂 — ищем компьютер с LPT-портом и паяем «5-проводков» — нету LPT, но есть COM? Прекрасно, делаем программатор Громова! — есть люди, предлагающие свои услуги по прошивке МК за небольшую «денюжку» — другие варианты
У меня ситуация более, чем шикарная — у меня уже был программатор AVR910. Так, что вся процедура заняла не более минуты. «Прошиваем» МК с помощью AVRDUDE. (Все необходимое для этого сложено в архив и находиться в каталоге Firmware).
Кому менее повезло и пришлось прибегнуть к «5 проводкам» (кстати, официально он называется DAPA):
вот, вариант когда программатор USBTinyISP используется для прошивки себе подобного, а-ля «овечка Долли»:
Почему вариант с 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). Пока у меня не возникало необходимости в программировании таких контроллеров.
Ну, если осилили изготовление программатора, то сделать такой адаптер — вообще плевое дело!
Кстати, некоторые неиспользуемые контакты я просто-напросто удалил, во избежание ненужного контакта 🙂
Приклеиваем (для удобства) соответствующие надписи:
И вот, все в сборе, программатор и адаптер! Пользуйтесь на здоровье. Весь материал (печатку, прошивку,драйвера и фото) для повторения можно забрать одним архивом тут.
58 комментариев на «“Делаем простой USB программатор USBTinyISP”»Хорошее описание и повторение конструкции! Подскажите, а как поправить прошивку под другой кварц? Полно кварцев с материнок на 14.31818 MHz, а вот 12 MHz редкость. Скачал с сайта исходники (Firmware Files for v1.0), а вот ума дать не могу, где поправить и в чем скомпилировать их.
архив что ты вложил не открываеться.
не совсем правильно был мной поставлен вопрос)… гиперссылка на слово «тут» неоткрывалась, но я уже решил эту проблему)спасибо за отзывчивость, только вот новая проблема на этот раз с фьюзом, можно в двух словах какой именно фьюз надо, ну или таблицу под какой микроконтроллер нужен определенный фьюз, спасибо)
собрал программатор по вашей схеме и программатор громова чтобы прошить МК, подскажите как выставить фьюзы если прошивать МК через программу uniprof, спасибо
Уважаемый Ghost_D, разработайте, пожалуйста, схему на процессоре Tiny26L с использованием собственного генератора тактовой частоты процессора и прошивку для него. Заранее благодарна за ратный труд.
Вообще это реально сделать программатор на 26L?
Даже любопытно… Это у Вас курсовой проект такой горит?
Здравствуйте! Очень интересной оказалась статья и захотелось попробовать собрать самостоятельно. Начал выбирать, какой же МК приобретать… rlocman.ru/comp/shop.html?q=ATTiny2313 стоимость от 27 до 200 рублей… какой выбрать? В чем отличие?
Добрый день. Подскажите, я уже пол дня голову ломаю над шлейфом от прагроматора к адаптеру. У вас на програматоре не обозначены выходы. А Я не могу разобраться где какой выход… Не могли бы вы их подписать как на плате-адаптере?
Хм, ну посмотри эту статью… в ней есть распиновка
robocraft.ru/uploads/images/7/3/6/3/1760/96e63c6a0b.jpg Если вам не трудно, пометьте, пожалуйста, на этой картинке выводы.
Извиняюсь за невнимательность. Не туда смотрел. Уже нашел, разобрался.
Подскажите еще, пожалуйста, я сделал програматор по вашей схеме и програматор громова. как мне прошить ваш? у меня win7. avrdude не запускается… драйверы для портов не устанавливаются… может нужна какая то другая программа?
Я вас изведу вопросами, наверное, но все же. У меня таки получилось запрограмировать atiny, но теперь при подключении к usb пишет что подключено неизвестное устройство(это на вин7) на другом пк(вин8.1) пишет- сбой запроса дискриптора устройства. а когда пытаюсь установить драйвер говорит что драйвер уже установлен и не нуждается в обновлении. Помогите пожалуйста.
Собрал программатор по этой схеме, вместе с адаптером… И столкнулся с таким вопросом: все работает прекрасно, прошивает, НО только когда МК новый. Если в уже зашитом МК пытаться обновить программу — он ее просто не видит (МК). Прошу не судить строго, только начинаю разбираться с AVR и это первый программатор… Испробовал следующее: 1. Несколько разных кабелей USB 2. Обновление драйверов 3. AVRDUDEPROG и SinaProg 4. Разные WINDOWS 5. Отдельное питание на МК (без перемычки) 6. ISP в уже готовой плате (плата работает с первой прошивкой, но хотелось-бы обновить) с внешним питанием и без. Подскажите, пожалуйста, куда еще копать?
Была точно такая же проблема, не устанавливались драйверы, оказалось в магазине подсунули стабилитроны с Uст=2.6В, вместо 3.6В, естественно они «резали» сигнал, заменил и всё заработало. Удачи!
После программирования atiny, при подключении к usb пишет что подключено неизвестно устройство. Подскажите куда копать? Стабилитроны и кварц в норме. И еще вопрос, должен ли загораться светодиод даже если комп не определил программатор?
Подойдет для программатора Attiny2313A-PU?
а какие выставить FUSE? Если я собираюсь прошивать другим программатором, не через командную строку?
Добрый день. Собрал данное устройство, запрограммировал программатором Громова контроллер. Программатор в Windows определяется как неизвестное устройство. Светодиоды не горят. Зеленый светодиод зажигается (не всегда) если подключить программатор через USB разветвитель. И последнее, вычитал, что на контакте D+, D- напряжение должно быть 3.3 В, у меня же 2.2 вольта (измерял на USB разъеме программатора). Пробовал два заведомо исправных шнура от принтера. Куда копать. Спасибо
Была точно такая же проблема, не устанавливались драйверы, оказалось в магазине подсунули стабилитроны с Uст=2.6В, вместо 3.6В, естественно они «резали» сигнал, заменил и всё заработало. Удачи!
добрый день! собрал программатор, при подключении usb, греются стабилитроны. Все проверил, кз ни где нет. распиновка тоже правильная.
А можно параметры фьюзов для программы UniProf.
Есть такие люди, у которых этот программатор вообще заработал? Проверил всё ну просто тысячу раз,usb его видит как неизвестное устройство, через программатор Громова UniProf его не видит.Светодиоды не загорались вообще никогда.Они вообще должны загораться, если микроконтроллер ещё девственно чистый?
Есть такие люди… Как минимум, это я. С опытом изготовления 3-х таких программаторов. (Плюс, знаю еще одного РЕАЛЬНОГО человека, который его сделал по моей печатке и пользуется). Один (самый первый «корявенький» экземпляр) был успешно продан, один подарен приятелю и один трудиться у меня. Причем прекрасно и без нареканий. Даже после перехода с windows XP на Windows 8.1 — все еще в строю. В диспетчере устройств определяется как libUSB-win32 device -> USBTiny. При подключении к USB горит только зеленый светодиод. Прямо сейчас достал его, подключил-пощупал, стабилитроны не греются. При изготовлении всех трех экземпляров, ни одной из указанных в комментариях проблем у меня не возникло. Как обычно пишут, Что я делаю не так? 🙂 Есть маленькие секреты. 1) Плата должна быть сделана и запаяна без «косяков», «коротышей» и непропаев. 2) Все элементы должны быть исправными 3) Должен быть вставлен ПРАВИЛЬНО «прошитый» микроконтроллер. 4) нужно установить правильные и корректные драйвера.
Далее. Честно говоря, у меня нет желания экспериментировать с разного рода оболочками типа PonyProg, UniProf и т.п. Реально, мне это не нужно. Не хотите командную строчку — я пользуюсь графической оболочкой AVRDUDESS (на всякий случай, версии 2.4). В ней выбираю тип программатора USBtiny simple USB programmer, http://www.ladyada.net/make/usbtinyisp/ С ней у меня все работает.
Не нужно обижаться, что я редко отвечаю или вообще не отвечаю на вопросы. Я этот программатор делал в 2013 году… Но честно признаться, более активно я использую вот это вариант: robocraft.ru/blog/3063.html По функционалу он ни чуть не хуже, не нужен адаптер, гораздо проще в изготовлении, нет заморочек с драйверами (ну, если ардуино IDE у вас нормально работает), НО требует наличия Ардуины…
Такс.Во-первых огромное спасибо автору за детальное описание и программатор.Он всё же реально работает:) Я пока полный чайник в программаторах, поэтому опишу проблемы, с которыми я столкнулся.Возможно у других «чайников» заработает:) Разводка на плате мне очень понравилсь-легко паять начинающему-нет дорожек между лапками микроконтроллера.Исключается ювелирная пайка:)Но у меня всё-равно не заработало.Спаял программатор Громова вот отсюда, уж очень понравилось описание: http://www.ruselectronic.com/news/chto-takoe-programmator/ Не заработало… проверил схемы и прозвонил просто миллион раз.Проблему нашёл на третий день, и она до смешного глупая. hostingkartinok.com/show-image.php?id=d736f6e13747f6a1c9ad605a9a298695 На рисунке показаны была распайка ком-порта, и мне на 100% казалось, что показано, что проводки подпаяны к ножкам.Я и подпаял аналогично картинке.Потом уже залез в распиновку com-порта, и выяснил, что я спаял абсолютно зеркально.Соориентировался по земле-она у меня была на «зеркальной» ножке.А за ней и всё остальное. Перепаял.Не заработало.Uniprof мне талдычил, что мк не обнаружен.На работе десятки старых компьютеров с com-портами, попробовал на многих.Окей, проблема явно не в компьютере. Шутки ради припаял к Громову контроллер напрямую, за лапки.И о чудо, обнаружился.Залил прошивку автора на мк и поставил фьюзы как советовали… забыл где:( в поиске искал аналогичные сайты с пайкой usbtinyisp, нашёл на одном из них. Почему же не работало программирование Attiny2313 напрямую в программаторе? А вот почему:
Схема осталось оригинальной, за исключением перемычки для программирования (мне эта «фишка» абсолютно не нужна).