Ну вот и пришло время нам соорудить USB программатор. Я долго не мог определиться какой бы программатор нам собрать. Выбирал по критериям простоты конструкции и удобства работы с ними, но ничего не нравилось. Выбрать программатор помог случай. Вернее я его не выбирал вообще – я его случайно собрал сам того не подозревая!
А дело было так. Некоторое количество постов назад мы собрали преобразователь USB to UART на ATtiny2313 (а в прошлой статье мы даже улучшили печатную плату). Еще при выборе схемы преобразователя я планировал на его базе (при помощи заливки различных прошивок) получать устройства различного назначения. Тогда я не подозревал, что данный преобразователь можно использовать шире, чем я планировал. Увидев схему USB программатора — USBtiny на ATtiny2313 я понял, что я уже имею готовый программатор!
Посмотрев на схему, сделанного ранее, преобразователя USB to UART (домашняя страничка)
и схему USB программатора USBTiny (домашняя страница)
можно увидеть, что это одна и та-же схема. Различия незначительны – отсутствуют сигнальные светодиоды и несколько резисторов. Для того, чтобы преобразователь стал USB программатором нужно просто прошить микроконтроллер новой прошивкой и сделать кабель для подключения.
Теперь все по порядку.
1 Для начала нужно собрать преобразователь (это если Вы его еще не собрали).
Вот рисунок печатной платы преобразователя:
055-T2313-SMD-2.zip (24497 Загрузок)
Если интересно — вот статья о преобразователе USB to UART.
В собранном виде преобразователь выглядит так:
Есть вариант платы на обычных-ТН компонентах — смотрим в конце статьи о преобразователе.
2 Немного модифицируем плату
Для того, чтобы обеспечить все необходимые сигналы для программирования впаиваем защитные резисторы номиналом по 100 Ом в линии ножек 12, 16, 17, 18, 19 (номинал не критичен — можно варьировать).
3 Теперь нужно прошить микроконтроллер.
Линии для программатора выведены на общий разъем платы (кроме сброса — стоит отдельно).
056-usbtinyisp-T2313.zip (15810 Загрузок)
056-fuse.png (8292 Загрузки)
Для 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 Скачиваем драйвер, разархивируем его.
Страничка с драйверами
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.zip (8229 Загрузок)
2 Еще один вариант разводки от Андрея Баранова (Andru_48)
usbtiny_a_baranov.zip (5876 Загрузок)
3 Вариант от mebadboy
Доброе время суток.
4 Вариант от Time191 (Владимир, г. Саратов).
Получилось начертить и развести в Протеусе плату программатора.
Делал под себя, под свой ISP-разъем.
Программировал прямо в плате, джампером соединив Reset c ISP.
Все заработало сразу — большое Вам спасибо!
056-usbusbtinytime191.zip (5014 Загрузок)
В приложении есть фото готового устройства, файл в Протеусе и в печатка в ARES. Возможно, это пригодится для разводки «под себя» другим пользователям программатора, т.к. Протеус не даст перепутать компоненты, их полярность и дорожки на плате.