Ну вот и пришло время нам соорудить USB программатор. Я долго не мог определиться какой бы программатор нам собрать. Выбирал по критериям простоты конструкции и удобства работы с ними, но ничего не нравилось. Выбрать программатор помог случай. Вернее я его не выбирал вообще – я его случайно собрал сам того не подозревая!
А дело было так. Некоторое количество постов назад мы собрали преобразователь USB to UART на ATtiny2313 (а в мы даже улучшили печатную плату). Еще при выборе схемы преобразователя я планировал на его базе (при помощи заливки различных прошивок) получать устройства различного назначения. Тогда я не подозревал, что данный преобразователь можно использовать шире, чем я планировал. Увидев схему USB программатора — USBtiny на ATtiny2313 я понял, что я уже имею готовый программатор!
Посмотрев на схему, сделанного ранее, преобразователя USB to UART (домашняя страничка)
и схему USB программатора USBTiny
(домашняя страница)
можно увидеть, что это одна и та-же схема . Различия незначительны – отсутствуют сигнальные светодиоды и несколько резисторов. Для того, чтобы преобразователь стал USB программатором нужно просто прошить микроконтроллер новой прошивкой и сделать кабель для подключения.
Теперь все по порядку.
1 Для начала нужно собрать преобразователь
(это если Вы его еще не собрали).
Вот рисунок печатной платы преобразователя:
Если интересно — вот .
В собранном виде преобразователь выглядит так:
2 Немного модифицируем плату
Для того, чтобы обеспечить все необходимые сигналы для программирования впаиваем защитные резисторы номиналом по 100 Ом в линии ножек 12, 16, 17, 18, 19 (номинал не критичен — можно варьировать).
3 Теперь нужно прошить микроконтроллер.
Линии для программатора выведены на общий разъем платы (кроме сброса — стоит отдельно).
Наверно не нужно говорить о том, что для прошивки микроконтроллера Вам понадобится программатор. На скорую руку можно собрать и прошить при помощи .
Схема шлейфа проста.
Из особенностей — я вынес индикаторный светодиод и балластный резистор для него за плату на разъем — это для того, чтобы плату без перепайки можно было использовать для других устройств (ну и так прикольней — светодиод мигает прямо в разъеме:)). Кроме того, линия 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 секунд (это вместе с проверкой). Микроконтроллер определяется и программируется надежно — не было ни одной ошибки во время моих тестов. Приятный в использовании программатор!
Файлы к статье:
- Рисунок печатной платы UART-USB на ATtiny2313
- Прошивка USBtiny программатора для ATtiny2313
- Фьюз-биты ATtiny2313 для USBtiny
- Схема кабеля для USBtiny программатора
Миниатюрный USB программатор AVR микроконтроллеров построен на микроконтроллере AtTiny 2313, содержит минимум элементов и позволяет работать в такими средами разработки как AVR Studio и AVRDUDE.
Есть две версии этого программатора, а именно USBTiny v1.0 и USBTiny v2.0. По порядку о каждой:
Схема USBTiny v1.0:
Схема отличается простотой и наличием малого количества компонентов. Печатных плат несколько.
Печатная плата от Дмитрия Шпака:
Скачать в формате layout: (cкачиваний: 1031)
Печатная плата от Андрея Баранова:
Скачать в формате layout: (cкачиваний: 967)
И версия от mebadboy : (cкачиваний: 963)
Скачать в формате eagle: (cкачиваний: 805)
Прошиваем контроллер любым другим программатором(например 5 проводков и LPT), собираем устройство воедино и...
Вставляем его в USB порт компьютера, система найдёт новое устройство USBtinyISP AVR Programmer
Устанавливаем драйвер для своей ОС и пользуемся.
Драйверы и прошивки:
Драйвер Win x86: (cкачиваний: 1542)
Драйвер Win x64: (cкачиваний: 1581)
Прошивка v1.0 с исходником: (cкачиваний: 1166)
Прошивка v1.4 с исходником: (cкачиваний: 1452)
последняя версия
(avr-gcc v3.4.6 + avr-libc v1.4.4 + Winavr-20060421)
hex файл в папке spi.
Установка фьюзов:
Для Algorithm Builder и UniProf галочки ставятся как на картинке.
Для PonyProg, AVR Studio, SinaProg галочки ставятся инверсно.
Схема USBTiny v2.0:
В отличие от первой схемы программатора, во второй версии добавлена буферная микросхема для согласования уровней.
Также изменена прошивка:
Прошивка v2.0 с исходником: (cкачиваний: 1020)
(avr-gcc v3.4.6 + avr-libc v1.4.4 + Winavr-20060421)
Драйверы подходят от первой версии.
Самодельный драйвер двигателей на транзисторах можно использовать не только для управления коллекторными моторчиками постоянного тока но и для управления шаговыми двигателями. Шаговые двигатели можно использовать для изготовления самодельных станков, роботов и прочих интересных вещей. Коллекторные двигатели тоже можно использовать для этих целей и асинхронные тоже но шаговые для таких применений обладают преимуществами: 1) точность, 2) отсутствие необходимости в обратной связи, 3) высокий момент и 4) низкие обороты. Начать освоение шаговых двигателей можно с каких нибудь дешёвых небольших например таких:
Рисунок 1 - Шаговый двигатель
У этого двигателя имеется 4 вывода 2 из них идут на одну обмотку остальные 2 на другую. Ротор двигателя будет вращаться если на определённые выводы в определённой последовательности подавать определённые напряжения. Есть несколько способов управления шаговым двигателем, один из них иллюстрируется на рисунке:
Рисунок 2 - Пример управления шаговым двигателем
Микроконтроллер может управлять драйвером так чтобы ротор подключённого к этому драйверу шагового двигателя вращался, для этого можно например хранить последовательности состояний выводов в массиве и перебирать их по очереди с необходимой периодичностью и в нужном направлении. А можно управляющую программу запускать на компьютере а микроконтроллер использовать для преобразования последовательного кода в набор состояний выводов микроконтроллера. LPT-порт параллельный и для управления шаговым двигателем в этом нет необходимости но так всё же можно поступить например для того чтобы не переделывать (сделанную ранее) схему для перепрограммирования микроконтроллера:
Рисунок 3 - ATtiny2313 и LPT-порт
Драйвер также не нужно переделывать:
Рисунок 4 - Драйвер двигателей
Прошивку для ATtiny2313 вместе с проектом для WinAVR можно скачать . Программу (вместе с inpout32.dll) для управления двигателем можно скачать , для этой программы как и для предыдущей необходим файл inpout32.dll который должен находится в той же папке что и программа. Эту программу можно использовать не только для управления шаговым двигателем. Вообще она подойдёт для управления как угодно драйвером на небольшой частоте. Посмотреть всё в действии можно на видео:
Программатор USBASP — устройство, распиновка, подключение, прошивка
Сегодня мы рассмотрим как, без особых затрат и быстро, запрограммировать любой микроконтроллер AVR поддерживающий режим последовательного программирования (интерфейс ISP) через USB-порт компьютера. В качестве программатора мы будем использовать очень простой и популярный программатор USBASP , а в качестве программы — AVRdude_Prog V3.3 , которая предназначена для программирования МК AVR.
Программатор USBASP
Для того, чтобы запрограммировать микроконтроллер необходимо иметь две вещи:
— программатор
— соответствующее программное обеспечение для записи данных в МК
Одним из наиболее простых, популярных и миниатюрных программаторов для AVR является USBASP программатор
, созданный немцем Томасом Фишлем.
Имеется много разных схемотехнических решений этого программатора, программатор можно собрать самому или купить (стоимость — 2-3 доллара). При самостоятельной сборке следует учитывать, что собранный программатор необходимо будет прошить сторонним программатором.
Мы рассмотрим наиболее «навороченную» версию программатора:
Характеристики программатора:
— работает с различными операционными системами — Linux, Mac OC, Windows (для операционной системы Windows, для работы программатора, необходимо установить драйвера — архив в конце статьи)
— скорость программирования до (скорость программирования можно устанавливать самому, к примеру в AVRDUDE_PROG) 375 (5) кб/сек
— имеет 10-контактный интерфейс ISP (соответствует стандарту ICSP с 10-контактной распиновкой)
— поддерживает два напряжения питания программатора — 5В и 3,3В (не все USB порты ПК работают при 5 Вольтах)
— питается от порта USB компьютера, имеет встроенную защиту по току (самовосстанавливающийся предохранитель на 500 мА)
Назначение джамперов:
— разъем JP1
— предназначен для перепрошивки микроконтроллера программатора (для перепрошивки — необходимо замкнуть контакты)
— разъем JP2
— напряжение питания программатора — 5 Вольт или 3,3 Вольта (по умолчанию — 5 Вольт, как на фотографии). Программируемый микроконтроллер, или конструкцию, в которой он установлен, при токе потребления 300-400 мА можно запитать с программатора, для этого на разъеме есть выход +5В (VCC).
— разъем JP3
— определяет частоту тактирования данных SCK: разомкнутый — высокая частота (375 кГц), замкнутый — низкая частота (8 кГц)
Подробнее о разъеме JP3
Джампер JP3 предназначен для уменьшения скорости записи данных в микроконтроллер. Если у микроконтроллера установлена частота тактирования более 1,5 мГц — джампер может быть разомкнут, при этом скорость программирования высокая. Если тактовая частота менее 1,5 мГц — необходимо закоротить выводы джампера — снизить скорость программирования, иначе запрограммировать микроконтроллер не получится. К примеру, если мы будем программировать микроконтроллер ATmega8 (в принципе, практически все МК AVR настроены на тактовую частоту 1 мГц по умолчанию), у которого частота тактирования по умолчанию 1 мГц, необходимо будет замкнуть выводы джампера (как на фотографии). Лучше, наверное, держать этот джампер постоянно замкнутым, чтобы, забыв о его существовании, не мучиться вопросом — почему микроконтроллер не прошивается.
Если вы будете пользоваться , выложенной на сайте, то о перемычке можно забыть
Программатор поддерживается следующим программным обеспечением:
— AVRdude
— AVRdude_Prog
— Bascom-AVR
— Khazama AVR Prog
— eXtreme Burner AVR
Работать с таким программатором очень просто — соединить соответствующие выводы программатора с микроконтроллером, подключить к USB-порту компьютера — программатор готов к работе.
Распиновка 10-контактного кабеля программатора USBASP
:
1 — MOSI — выход данных для последовательного программирования
2 — VCC — выход +5 (+3,3) Вольт для питания программируемого микроконтроллера или программируемой платы от порта USB компьютера (максимальный ток 200 мА — чтобы не сжечь порт USB)
3 — NC — не используется
4 — GND — общий провод (минус питания)
5 — RST — подключается к выводу RESET микроконтроллера
6 — GND
7 — SCK — выход тактирования данных
8 — GND
9 — MISO — вход данных для последовательного программирования
10 — GND
Установка драйверов для программатора USBASP
Установка драйвера для программатора USBASB очень проста:
— подсоедините программатор к USB порту компьютера, при этом в диспетчере устройств появится новое устройство «USBasp» с желтым треугольником и восклицательным знаком внутри, что означает — не установлены драйвера
— скачайте и разархивируйте файл «USBasp-win-driver-x86-x64-ia64-v3.0.7»
— запустите файл «InstallDriver» — будут автоматически установлены драйвера для программатора
— проверьте диспетчер устройств — желтый треугольник должен исчезнуть (если нет, щелкните правой кнопкой по устройству «USBasp» и выберите пункт «Обновить»
— программатор готов к работе
FUSE-биты при программировании USBASP AVR:
Архив «usbasp.2011-05-28» содержит папки:
= BIN:
— win-driver — драйвера для программатора
— firmware — прошивка для микроконтроллеров Mega8, Mega88, Mega48
= circuit — схема простого программатора в PDF и Cadsoft Eagle
При перепрошивке китайского программатора рекомендую установить FUSE-бит CKOPT. CKOPT взаимосвязан с предельной тактовой частотой. По умолчанию CKOPT сброшен и стабильная работа микроконтроллера программатора при применение кварцевого резонатора возможна только до частоты 8 МГц (а МК программатора работает на частоте 12 МГц). Установка FUSE-бита CKOPT увеличивает максимальную частоту до 16 МГц. Китайцы не трогают этот FUSE-бит, что довольно часто приводит к отказу программатора (обычно система не определяет программатор).
Архив «USBasp-win-driver-x86-x64-ia64-v3.0.7» предназначен для установки драйверов, как указано в статье
(518,9 KiB, 13 188 hits)
(10,9 MiB, 24 942 hits)
Описанный в статье USBASP программатор, прошитый последней версией программы, проверенный в работе, с установленными джамперами и перемычками, вы можете приобрести в интернет-магазине «МирМК-SHOP»