056-USB-программатор-легко! (USBTiny)

Автор: | 10.10.2010

ТитлНу вот и пришло время нам соорудить USB программатор. Я долго не мог определиться какой бы программатор нам собрать. Выбирал по критериям простоты конструкции и удобства работы с ними, но ничего не нравилось. Выбрать программатор помог случай. Вернее я его не выбирал вообще – я его случайно собрал сам того не подозревая!

А дело было так. Некоторое количество постов назад мы собрали преобразователь USB to UART на ATtiny2313 (а в прошлой статье мы даже улучшили печатную плату). Еще при выборе схемы преобразователя я планировал на его базе (при помощи заливки различных прошивок) получать устройства различного назначения. Тогда я не подозревал, что данный преобразователь можно использовать шире, чем я планировал. Увидев схему USB программатора — USBtiny на ATtiny2313 я понял, что я уже имею готовый программатор!

Посмотрев на схему, сделанного ранее, преобразователя USB to UART (домашняя страничка)

Модифицированная схема преобразователя

 

и схему USB программатора USBTiny (домашняя страница)usbtiny програматор

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

Теперь все по порядку.
1  Для начала нужно собрать преобразователь (это если Вы его еще не собрали).
Вот рисунок печатной платы преобразователя:
055-T2313-SMD-2.zip (24358 Загрузок)
Если интересно — вот статья о преобразователе USB to UART.
В собранном виде преобразователь выглядит так:

Внешний вид преобразователя

Обратная сторона платы
Есть вариант платы на обычных-ТН компонентах — смотрим в конце статьи о преобразователе.

2 Немного модифицируем плату
Для того, чтобы обеспечить все необходимые сигналы для программирования впаиваем защитные резисторы номиналом по 100 Ом в линии ножек 12, 16, 17, 18, 19 (номинал не критичен — можно варьировать).

Модифицируем преобразователь

3 Теперь нужно прошить микроконтроллер.
Линии для программатора выведены на общий разъем платы (кроме сброса — стоит отдельно).

Линии программирования
056-usbtinyisp-T2313.zip (15703 Загрузки)
056-fuse.png (8172 Загрузки)
Для Algorithm Builder и UniProf галочки ставятся как на картинке.
Для PonyProg, AVR Studio, SinaProg галочки ставяться инверсно.
Как правильно прошить AVR фьюзы

Наверно не нужно говорить о том, что для прошивки микроконтроллера Вам понадобится программатор. На скорую руку можно собрать LPT программатор и прошить при помощи UniProf.

 

4 Далее нам нужен шлейф для того, чтобы соединить программируемое устройство с нашим программатором. Все линии, необходимые для программирования находятся на одном разъеме.

Пинаут программатора
Схема шлейфа проста.

Схема кабеля

Из особенностей — я вынес индикаторный светодиод и балластный резистор для него за плату на разъем — это для того, чтобы плату без перепайки можно было использовать для других устройств (ну и так прикольней — светодиод мигает прямо в разъеме :)).  Кроме того, линия Vcc отделена от общего разъема — это на случай если программируемое устройство запитывается не от USB, а от своего источника (что, в принципе, желательно). Сигнальные линии (SCK, MISO, MOSI) желательно экранировать (например чередованием сигнальных и земляных линий в шлейфе). Длину шлейфа не стоит делать большой — до 50 см, не больше. Если нужно программировать удаленное устройство всегда можно применить USB удлинитель — так надежней. Вот мой готовый шнурок:

Внешний вид кабеля

 

5 Сам программатор готов, теперь нужно установить драйвер для того, чтобы Винда смогла с ним работать (для Mac OS X & Linux, вродь-как, драйвера вообще не нужно). Тут все просто:

5.1 Скачиваем драйвер, разархивируем его.
Страничка с драйверами

Вставляем преобразователь в USB порт
5.2 Вставляем наш программатор в USB порт.

 

Сообщение в трее
5.3 В трее появится сообщение о том, что найдено новое устройство.

 

Мастер нового оборудования
5.4 Запустится мастер нового оборудования.

 

Место поиска
5.5  Указываем в окошке «место поиска» папку с драйвером.

 

Драйвер установлен
5.6 Пройдет процесс установки драйвера. Появится окошко сообщающее о том, что драйвер установлен. Чтобы проверить, что мы там наустанавливали — заходим в «Мой компьютер/Свойства/Оборудование/Диспетчер устройств» и находим там наш программатор

Установленное устройство

Винда увидела новое устройство и готова с ним работать.

USBtiny программатор поддерживается AVRDude, а это значит, что многие среды программирования будут с ним работать без проблем. Еще одним достоинством работы с AVRDude является то, что для работы с AVRDude существует множество оболочек GUI из которых можно выбрать подходящую именно для Вас (но об этом в следующей статье).

Я с USBTiny до этого не работал, но отзывы о нем в сети положительные (отличается надежностью и быстротой программирования) — мои тестовый прошивки это подтвердили. ATtiny2313 прошивается за 10 секунд (это вместе с проверкой). Микроконтроллер определяется и программируется надежно — не было ни одной ошибки во время моих тестов. Приятный в использовании программатор!

 

Смотрим также:
Программируем AVR-микроконтроллеры USBtiny + AVRdude + SinaProg. (в процессе написания)
055-UART to USB – простой преобразователь на ATtiny2313 (Версия 2). — преобразователь USB to UART из которого мы сделали преобразователь.
053-Практичный шнур для применения в электронных проектах. — Как сделать шлейф для программатора.
041-UART to USB – простой преобразователь на ATtiny2313. — Первый вариант платы USB to UART. В статье есть рисунок платы для для TH-компонентов.
Домашняя страничка преобразователя USB to UART
Домашняя страничка программатора USBtiny

 

ДОПОЛНЕНИЯ.
1 Дмитрий Шпак (Zalognik) сделал довольно удачную разводку программатора. Программатор получился небольшого размера, имеет  стандартный разъем для программирования и, я считаю, будет удобен в работе. Плата двусторонняя.
Программатор USBTiny PCB USBTiny

 

USBtiny.zip (8149 Загрузок)

 

2 Еще один вариант разводки от Андрея Баранова (Andru_48)

usbtiny_a_baranov.zip (5783 Загрузки)

 

3 Вариант от mebadboy
Доброе время суток.

Новую печатку я не собирал. Я просто исправил старую — Zalognikа. Там минимум исправлений — одну дорожку перерезать, кинуть проводок, впаять резистор и диод впаять в другое место.
Вот лог dmesg при подключении под linux:
usb 4-2: new low speed USB device using uhci_hcd and address 2
usb 4-2: New USB device found, idVendor=1781, idProduct=0c9f
usb 4-2: New USB device strings: Mfr=0, Product=2, SerialNumber=0
usb 4-2: Product: USBtiny

4 Вариант от Time191  (Владимир, г. Саратов).
Получилось начертить и развести в Протеусе плату программатора.
Делал под себя, под свой ISP-разъем.
Программировал прямо в плате, джампером соединив Reset c ISP.
Все заработало сразу — большое Вам спасибо!
056-usbusbtinytime191.zip (4937 Загрузок)
В приложении есть фото готового устройства, файл в Протеусе и в печатка в ARES. Возможно, это пригодится для разводки «под себя» другим пользователям программатора, т.к. Протеус не даст перепутать компоненты, их полярность и дорожки на плате.

(Visited 66 884 times, 1 visits today)

056-USB-программатор-легко! (USBTiny): 807 комментариев

  1. GetChiper Автор записи

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

  2. awas5

    но фюзы то разные! или это не имеет значения?

  3. GetChiper Автор записи

    Это одни и те же файлы.

  4. awas5

    Откуда надо брать:- из пункта 3 -Теперь нужно прошить микроконтроллер
    или из — Файлы к статье ?

  5. awas5

    Ну с генерацией вродибы я уже разобрался. А вот запустить никак не получается. Ну разбирал програматор пару раз и снова собирал, проверял tiny ну вродибы все ок! а он не работает, начал смотреть и обнаружил не соответствие фюзов пункта — 3 Теперь нужно прошить микроконтроллер и — Файлы к статье: Где правильно? Я прошивал по пункту 3 и hex тоже.
    Чем это все отличается?

    .

  6. GetChiper Автор записи

    Генерация кварца очень нежная — ее сорвать даже грязь на плате может.

  7. awas5

    Слава Богу увидел программатор мою tiny. Что я только ей не делал. Сегодня пришла мысль, а если на 5 ногу подать 12 мгц с генератора на 555ЛА3 ну и она таки проявилась. Прошивка осталась на месте, фьюзы тоже те что я записал. Может добротность кварца плохая. Когда он припаян к 4 и 5 ножке то осцилографом я не увидил возбуждения хотя он возбуждался на PL2303 прямо перед выпайкой,включил проверил, все определилось. Хотя я заметил что там не были впаяны два конденсатора на массу. Завтра попробую без кондеров. Подумал может осцил срывает генерацию.
    Теперь думаю что с этим всем делать? Какие мысли?

  8. mebadboy

    @awas5
    Рано сдаётесь.

    Указаны только Low и High фьюзы, потому что только их и надо было прошить (у меня вот avrfuses — gui над avrdude под MacOS вообще не позволяет выставить lock и ext).
    Алгоритм работы должен был быть такой:
    1. считать заводские настройки с контроллера;
    2. выставить Low и High фьюзы из статьи и прошить.

    Давайте подумаем, что же у Вас произошло с МК.

    Lock-биты отвечают за запрет чтения прошивки из мк. Если вы их даже зашили в не заводскую конфигурацию (в чём я лично сомневаюсь), то от этого спасёт полная очистка мк. При очистке мк lock-биты ставятся в своё заводское состояние. Раз мк не видится вообще, то дело не в lock-битах.

    Ext-биты «предназначены для установки порога срабатывания схемы детектора напряжения питания: когда напряжения питания достигнет установленного уровня, произойдет сброс микроконтроллера». Тоже вряд ли после изменения их конфигурации контроллер перестанет видеться.

    Вангую, что Вы прошили контроллер вне схемы, подпаявшись к выводам. Прошивка залилась без проблем. Затем Вы зашили фьюзы. Фьюзы, которые Вы зашили (из статьи) соответствуют работе с внешним кварцем на 12МГц. Поскольку кварца на 12 МГц к мк не подключено, работать он отказывается, соответственно программатором больше не определяется. Работать снова он начнёт, когда вы подключите к нему кварц. Посему, советую попробовать припаять между 4-м и 5-м пином attiny2313 кварц на 12МГц и попробовать прочитать снова. Если с Low и High фьюзами не налажали, то должны прочитаться те же фьюзы.

    Вообще я бы посоветовал прошивать МК внутрисхемно (то есть после того, как плата полностью собрана). В этом случае подобных проблем возникать не должно.

    Удачи! Пишите, если есть вопросы.

  9. awas5

    Ну в общем то после считывания правки и записи фьюзов мой контролер перестал определятся.
    Задавать вечный вопрос — что делать? я думаю бесполезно.
    Перечитав все про прошивку я понял, что вопрос фьюзов действительно положил не одного радиолюбителя и отбил охоту этим заниматься. Сегодня поехал на радиорынок чтоб купить контролер новый, там встретил парочку знакомых радиолюбителей, поплакался. Говорю мол сделал прогер, залил прошивку сверил — сошлось, а на фьюзах «сгорел», мол почему как то непонятно выкладывается… — их ответ меня поверг в шок. Ну и ладно.
    У меня вопрос. Почему нельзя выложить полный скрин фьюзов как должно быть после правки, все четыре колонки сразу?

  10. GetChiper Автор записи

    да

  11. awas5

    -Кварц на программаторе еще не к чему не обязывает – если схема самого устройства кварц не содержит, то его и ставить не нужно — значит так я понял что прошить 5 проводками я могу и без кварца

  12. GetChiper Автор записи

    Кварц на программаторе еще не к чему не обязывает — если схема самого устройства кварц не содержит, то его и ставить не нужно.

    Фьюзы нужно сначала считать а потом править (те что даны). Те фьюзы что не правились или не записываюся вообще (если есть такая возможность) или записываются такими как были прочитаны.

  13. awas5

    День добрый. Купил tiny2313,кварц 12мгц, собрал -5 проводков-, uniprof зашил HEX файл, сверил — сошлось, а вот fuse шить побоялся:
    1.-если на схеме программатора стоит кварц то его тоже надо вешать на tiny при прошивке? (ответ можно — да, нет)
    2.- в таблице фьюзов есть 4 колонки: 1 — Lock fuse, 2 — Fuse low, 3 — Fuse higt, 4 — Fuse ext, на скачанной установке фьюзов похоже есть только 2 и 3,ну как поставить я то понял. А вот в 1 и 4 похоже оставить так как есть?
    3.- При нажатии Read в каждой колонке высветились cвои галочки.В 1и 4 колонках есть все галочки их и нодо снова записать write?

  14. GetChiper Автор записи

    по моему нет

  15. strannik

    Привет всем. Спасибо за сайт и за статьи, очень хорошие! Собрал USBTiny — пока не программировал, но системой ( Win7 ) определился как надо (спасибо за драйвер). я новичок из новичков поэтому есть вопрос: можно ли USBTiny переделать так, чтобы можно было программировать PIC контроллеры? Заранее спасибо.

  16. SIG74

    @popka-ru
    Вы смысл улавливаете? Я говорю берется камень новый. Считываются фьюзы с него. Фьюзы будут показаны в вашей программе с галочкой или без(не отмеченые). Вот по SPIEN и нужно смотреть. Он по умолчанию включон. Если у вас он будет без галочки, то значит у вас инверсный показ фьюз. Значит вы должны поставить галочки там, где на скрине галочки не стоят.

  17. mebadboy

    @popka-ru
    Бит spien запрещает isp-программирование. Это как раз такое, каким вы шьёте мк. Если изменить его состояние, придётся собирать высоковольтный программатора. Трогать его не надо. Да и не получится в современных контроллерах.

  18. popka-ru

    @SIG74
    SPIEN я отключил в скрипте самой программы дудка и при считывании любого камня, SPIEN не активен
    http://dl3.joxi.net/drive/0007/0071/503879/160131/bb388e3ab2.png
    а должен ли быть активен в данном случае, не понятно. так как по фузам прилагаемым в данной статье снимается галочка с SPIEN. как и в большинстве случаев при прошивке

  19. SIG74

    @popka-ru
    Фьюзы даны в статье. считываете заводские фьюзы и смотрите как отмечен SPIEN считаный с вашего камня и сравниваете со скрином. Есть программы где фьюзы даются чтоб их отметить галочкой. Есть программы, где на оборот.

  20. popka-ru

    я так понял фузы выставляются дефолтные а нужно на 8.0МГц, то есть не читается только из-за того что кварц не работает, не включен.
    Фьюзы ATtiny2313 внутренний RC генератор на 8.0МГц
    http://dl1.joxi.net/drive/0007/0071/503879/160131/02154d11e2.png
    работает и определяется, но не всегда. прошивал через дудку, работает через раз

  21. popka-ru

    @mebadboy
    я то выпаял но не тот. выпаял и второй результата ноль комп его видит но имя так и не распознает
    https://pp.vk.me/c633127/v633127720/10234/DuKIkprxTLQ.jpg
    при этом драйвера установил, устанавливал как при подключенном , так и при отключенном программаторе.

  22. mebadboy

    @popka-ru
    И выпаяйте всё-таки красный диод. У меня была такая же проблема из-за такого же диода.

  23. mebadboy

    @popka-ru
    Откапал свой UsbTinyISP и UsbAsp. Правильные фьюзы с помощью avrdude в UsbTinyISP, используя UsbAsp, можно залить командой:
    avrdude -P usb -c usbasp -p ATtiny2313 -qq -U lfuse:w:0xee:m -U efuse:w:0xff:m -U hfuse:w:0xdf:m

    То есть Low fuses: 0xee; High fuses: 0xdf; Extended fuses: 0xff.

  24. popka-ru

    @mebadboy
    так я и выложил фото, только тут нет возможности загружать полноценно. то на скрины ведут ссылки . по поводу фузов. как считать не знаю и не умею.пользуюсь только го товыми подробными проектами. нуб я в этом. программатором пользуюс UsbAsp V2. и дудкой

  25. mebadboy

    @mebadboy
    И ещё советую тестировать вс] же под XP. Под 7-кой и старше будут проблемы с тем: что драйвер не подписан — придётся загружаться без службы проверки драйверов.

  26. mebadboy

    @popka-ru
    Доброго времечка

    У меня нет сейчас возможности открыть плату Time191, потому как ARES у меня под рукой нет. Не могли бы вы выложить её в виде картинки? По фото платы есть предположение, что индикация питания сделана также, как на плате у Zalognik. Если это так, то попробуйте отпаять диод — индикатор питания (а по-моему так и есть).
    Касаемо фьюзов, советую юзать для UsbAsp GUI отсюда: http://extremeelectronics.co.in/avr-tutorials/gui-software-for-usbasp-based-usb-avr-programmers/
    Работает кроссплатформенно.
    Есть ещё калькуляторы фьюзов: http://homes-smart.ru/fusecalc/?prog=avrstudio&part=ATtiny2313

  27. popka-ru

    @popka-ru
    дополнение к предыдущему. прошиваю через дудку. под нее фузы нужны, так как не понимаю, не знаю как высчитывать и править, что в дудке и не возможно, то могу только выставить галочки на нужных. помогите пожалуйста.

  28. popka-ru

    @time191
    не моглибы вы дать точные фузы для прошивки вашей версии . собрал по вашей схеме и ни как не определяется.драйвера установил а все равно пишет что устройство не определено. все установленые элементы соответствуют вашему скрину. вот мой
    https://pp.vk.me/c633127/v633127720/1023d/evej_L62YBU.jpg
    https://pp.vk.me/c633127/v633127720/10246/8JDFYbJdVTg.jpg
    камень прошиваю на другом прогере USBASP. фузы выставляю все из предложеных и ни с одним вариантом не определяется.специально купил несколько 2313 и со всеми результат одинаковый. программатор подкулючал на виндовсах ХР,7,8,10. везде определяется как неизвестное. всю неоч просидел, а толку ноль.

  29. popka-ru

    Всем доброго времени. возникла проблема с программатором собранный по последней схеме. проблема заключается в том что система его не распознает но в диспетчере устройств он отображается как»Неизвестное USB-устройство (сбой запроса дескриптора устройства)»

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

  30. fady

    К предидущему посту. Форма ввода в тексте команды поставила не те кавычки, использовать простые двойные кавычки))

  31. fady

    Привет Всем!
    Благодарность автору за сайт, а сообществу за обмен опытом. Я тоже хочу поделиться, т.к. пришлось приложить усилия. чтобы запустить USBTiny под linux)).
    1)Linux видит USBTiny, но не как Serial/COM/port и соответственно не создает /dev/ttyXX устройств. По этому SinaProg под Wine — с ним отказывается работать )) Может у кого получилось их подружить под Wine-поделитесь?
    Для того чтобы указать avrdude нужно задать ключик -P usb[:bus][:device]
    bus, device — можно посмотреть командой lsusb

    2)USBTiny не определялся avrdude с ошибкой
    avrdude: Error: Could not find USBtiny device (0x1781/0xc9f)

    Для решения создал файлик /etc/udev/rules.d/usbtinyisp.rules под root c единственной строкой

    SUBSYSTEM==»usb», ATTR{product}==»USBtiny», ATTR{idProduct}==»0c9f», ATTRS{idVendor}==»1781″, MODE=»0666″, GROUP=»dialout»

    Затем рестарт udev
    systemctl restart systemd-udevd

    должно сработать

  32. GetChiper Автор записи

    Все что есть по этому программатору можно посмотреть на авторской страничке https://learn.adafruit.com/usbtinyisp
    Соответственно и драйвера там есть.

  33. mebadboy

    @fox40
    Судя по треду, разъём он специально собрал не стандартный, потому что он такой везде использует, джампер на питание ему не нужен, а индикацию он сделал самую простую, чтобы не париться. В общем-то индикация должна работать. Я подозреваю, что это сильно зависит от качеств диода.

  34. fox40

    @mebadboy
    Мне вот интересно, судя по фотке он его тоже собрал, у него работает без исправлений?

  35. fox40

    @mebadboy
    Да, сейчас обратил внимание! Молодец:)

  36. mebadboy

    @fox40
    Моя печатка — это как раз печатка Дмитрия Шпака с исправлениями.

  37. fox40

    Всем привет. Повторил программер по Разводка USBtiny от Дмитрия Шпака, светодиод PWR стоит неправильно, с ним не работает и ошибка в разводке платы на стороне где установлены конденсаторы кварца «+» приходит на 10 ногу ISP разъёма вместо 2, там поправить и будет всё работать.

  38. GetChiper Автор записи

    1 вывод — это сброс, его нужно подключить через резистор 10кОм к +питанию
    20 — питание МК — здесь никаких резисторов не нужно

  39. crezi-alex

    Здравствуйте! хотел повторить программатора по печатной плате «USBtiny.lay — Разводка USBtiny от Андрея Баранова» но запутался с номиналами резисторов так непонятно сколько к 1 выводу и 20 выводу где можно глянуть схему? в схеме первоисточника изменено питание там резисторы подключены к +5v Подскажите пожалуйста?

  40. GetChiper Автор записи

    Для программирования МК используется аппаратный интерфейс SPI, а он жестко привязан к своим ножкам. Поменять нельзя.

    Зачем знать размер прошивки? Если она сделана для определенного МК — она в любом случае в него влезет. Если прошивка для другого МК она работать не будет.

  41. Mushkin

    Да, извиняюсь, еще вопрос.
    Здесь в комментариях объяснялось, что объем текстового файла с прошивкой и объем самой прошивки — не одно и то же.
    А как узнать тогда объем самой прошивки, или она где то указывается автором?

  42. Mushkin

    Здравствуйте.
    У меня такой вопрос. Согласно даташита, сигналы для пограммирования у 2313 берутся с определенных ножек МК: 19-SCK, 18-MISO, 17-MOSI. А возможно ли переназначить выходы, к примеру, MISO станет 17, а MOSI 18 ? Ну, допустим мне так будет удобнее плату развести.

  43. GetChiper Автор записи

    Нет, так работать не будет.

  44. novi4ek vo vsem

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

  45. Dr_Braun

    @summit
    А ты его прошил, перед тем как в usb подключать?

  46. ufofly

    Добрый вечер) у меня в наличие мк тини2313а, можно будет использовать ее в данной схеме?

  47. summit

    уже все прозвонил — проблем нету
    такое впечатление что МК не заводится с прошивкой програматора

Добавить комментарий