USBasp — USB программатор для программирования микроконтроллеров AVR
Пользователи, знакомые с микроконтроллерами Atmel или хотя бы с Arduino скорее всего знают о дешевом программаторе USBasp, цена которого на Ebay около $ 3. Распространены две версии программатора:
- USBasp 2.0 — с стабилизатором на 3.3 вольта.
- USBasp 3.0 — плата поменьше, без стабилизатора. Так же у него не выведены на разъем порты PD0 и PD1(Аппаратный UART).
Подключение UsbAsp. Распиновка устройства
Микросхемы Atmel с режимом последовательного программирования (ISP), применяемые в программаторе, могут иметь один из двух стандартных разъёмов: 10-типиновый или 6-типиновый. Ниже приводим обозначение контактов с расшифровкой.
- – MOSI. Предназначен для вывода данных в режиме последовательного программирования.
- — VCC +5V. Подаёт напряжение +5В на внешнее устройство через USB-порт. При этом наибольшее значение тока не должно превышать 200мА во избежание выхода из строя USB-контроллера.
- – NC. Контакт не используется.
- – GND. Общий провод.
- – RESET. Подключён к выводу RESET МК.
- — GND. Общий провод.
- – SCK. Используется для синхронизации данных.
- — GND. Общий провод.
- – MISO. Предназначен для ввода данных в режиме последовательного программирования.
- — GND. Общий провод.
Отличие 6-типинового варианта заключается в отсутствии одного не задействованного контакта и, объединённых в один вывод, контактов GND. Оба варианты показаны на рисунке.
Установка драйвера USBAsp на Windows 8/10
Подключаем программатор к USB порту на компьютере, если все нормально, на плате загорится красный светодиод. Далее операционная система начнет поиск драйвера
Так как, в операционной системе нету необходимого драйвера, в «Диспетчере устройств» появится устройство «USBAsp» с восклицательным знаком.
Скачиваем архив с цифровой подписью, разархивируем и запускаем «InstallDriver.exe»
Драйвер установлен, в «Диспетчере устройств» пропадет восклицательный знак с «USBAsp».
Установка драйвера на Windows XP и Windows 7 аналогичная, программатор готов к работе.
↑ Полтора минуса
При любом компромиссе приходиться чем-то жертвовать.
1. Программатор с прошивкой USBasp не работает в AVR Studio. Поэтому, кому это критично, придётся искать другое решение или работать с предыдущими версиями Windows.
2. Возможно, это не такой уж и минус. Программатор работает узким кругом ПО. Это AVRDUDE, e-Xtrem burner и Sina Prog. Мне из перечисленных понравился Sina Prog.
Эту программу я сейчас описывать не буду, в Сети очень много её описаний. Скажу только, что это очень простая и удобная программа со встроенным калькулятором фьюзов.
Программатор USBasp для AVR контроллеров Arduino
USBasp S51&AVR — простой внутрисхемный USB-программатор для контроллеров серии S51 фирмы Atmel: AT89S51, AT89S52, AT89S53, AT89S8252.
У любителей Arduino приборчик USBasp тоже пользуется спросом, так как может загружать скетчи и прошивать ядро микроконтроллеров AVR серии: ATtiny, ATmega, AT90S, AT90CAN, AT90PWM, а также без проблем работает с программным обеспечением Arduino IDE.
Мозгом загрузчика USBasp служит микроконтроллер ATmega8. Так же есть варианты с ATmega88 или ATmega48. Собран он из минимума деталей, USB контроллер не нужен, поскольку имеется программный USB-драйвер.
Возможности программатора USBasp
- Совместим с Windows, Linux и Mac OS X.
- Поддержка контроллеров S51 и AVR.
- Питание от USB порта +5В, дополнительное не требуется.
- Прошивка контроллеров работающих от 5 или 3.3 В.
- Скорость передачи до 5 Кбайт/сек.
- Переключение SCK-джампером для прошивки низкоскоростных чипов < 1.5МГц.
- Сбрасываемый предохранитель от короткого замыкания.
- Стандартный IDC 10PIN интерфейс.
Драйвер к программатору USBasp
Программное обеспечение для USBasp
- BASCOM-AVR — среда разработки, начиная с версии 1.11.9.6.поддерживает USBasp.
- AVRDUDE 6.1 — консольная программа, начиная с версии 5.2 поддерживает USBasp.
- Khazama AVR Programmer v1.7 — имеет графическую оболочку, совместима с Windows XP и Vista.
- eXtreme Burner AVR 1.3 Beta — графическая оболочка.
- Arduino IDE 1.0.6
Самодельный USBasp
Обвязка микроконтроллера в USBasp S51&AVR настолько проста, что достаточно легко собрать самому миниатюрный программатор, который можно будет везде носить с собой как флешку.
Для самоделки можно выбрать управляющий микроконтроллер ATmega8, ATmega48 или ATvega88, но только без всяких индексов L, PU. Так как нам потребуется рабочая частота свыше 8 Мгц.
Схема программатора
Устройство, собранное по этой схеме предназначено только для программирования 5-вольтовых контроллеров!
Красный светодиод показывает, что устройство подключено к USB-питанию.
Зеленый светодиод мигает, когда идет обращение к прошиваемому микроконтроллеру.
Элементы для сборки USBasp:
- R1, R2 — 68 Ом;
- R3 — 2.2 кОм;
- R4, R5, R7 — 1 кОм;
- R6 — 10 кОм;
- C1 — электролит на 4.7 мкФ;
- С3 — керамический конденсатор 100 нФ;
- C4, C5 — керамические, неполярные конденсаторы 22пФ;
- LED1 — красный светодиод на 20мА;
- LED2 — зеленый светодиод на 20мА;
- D1, D2 — стабилитроны на 3,6В;
- IC1 — микроконтроллер ATmega8, ATmega48, ATmega88, без индексов L, PU;
- Q1 — кварц 12 МГц, корпус HC49-S;
- X1 — разъем USB, тип B;
- X2 — разъем IDC-10;
Уставки джамперов
J1 — питание от USB-гнезда, либо внешнего источника.
J2 — установленная перемычка позволяет перепрошивать программатор.
J3 — установленная перемычка снижает частоту SCK синхросигнала с 375 кГц до 8 кГц для прошивки низкоскоростных чипов < 1.5 МГц.
Джампер J1 следует снимать при первом подключении к ПК собранного и прошитого программатора, поскольку компьютер должен определить новое устройство и установить драйвер для него.
Использование перемычек, как в оригинальной схеме, не совсем удобно, поэтому рекомендуется замена всех их на один DIP переключатель.
Установка драйвера для USBasp
Для работы программатора потребуется на Windows установить драйвер. Последнюю версию которого можно найти на сайте USBasp.
На операционные системы Linux и MacOS драйвер не требуется.
Вставьте собранный программатор в гнездо USB. Операционная система найдет новое оборудование и предложит установить драйвер для него. Выберите пункт: «Установка из указанного места», найдите папку со скачанным драйвером. Начните установку драйвера на Windows.
Прошивка самодельного USBasp
Чтобы собранное устройство заработало, его микроконтроллер ATmega, необходимо предварительно прошить.
Запускайте программное обеспечение, например, AVRDUDE и не забудьте проверить правильность установки джампера J2.
Загружайте прошивку:
«bin/firmware/usbasp.atmega8.xxxx-xx-xx.hex»
«bin/firmware/usbasp.atmega88.xxxx-xx-xx.hex».
Для работы от внешнего кварца необходимо будет выставить фьюзы:
# TARGET=atmega8 HFUSE=0xc9 LFUSE=0xef
# TARGET=atmega48 HFUSE=0xdd LFUSE=0xff
# TARGET=atmega88 HFUSE=0xdd LFUSE=0xff
Воспользуйтесь для вставки фьюзов прогой Makefile с функцией «make fuses».
Печатная плата
Печатных плат для самодельного USBasp разработано более 10 видов. Рекомендуем использовать оригинальную, с установкой стабилитронов.
Или сделайте свою трассировку печатной платы под установленный лично DIP переключатель вместо отдельных джамперов.
Программирование в Khazama
Стоит упомянуть об удобной графической программе Khazama. Все операции можно быстро выполнить как в меню, так и с помощью строки бара.
1 — загрузить в буфер прошивку для Flash памяти.
2 — загрузить в буфер прошивку для EPROM памяти.
3 — записать прошивку во Flash память.
4 — записать прошивку в EPROM память.
5 — прочитать Flash память.
6 — прочитать EPROM память.
7 — стереть микрочип.
8 — установить FUSE и LOCK биты.
9 — установить поверх всех окон.
В меню есть удобная кнопка Auto Program.
В Command > Program Options можно изменять настройки программки. В частности, можно задать набор операций, которые будут выполняться при нажатии на Auto Program. По умолчанию установлено стирание чипа и запись во флэш-память. Также можно выбрать запись в EEPROM, добавить верификацию (проверку записанных данных).
Программирование Flash памяти
Программирование EEPROM памяти
В любом случае, до записи прошивки, память микрочипа должна быть предварительно стерта.
Запись загрузчика в Ардуино
- Соединяем USBasp с платой, в которую будем записывать загрузчик и подключаем программатор к компьютеру.
- Запускаем IDE Arduino.
- В меню Инструменты > Программатор выбираем USBasp.
- В меню Инструменты > Плата выбираем значение, соответствующее нашей плате.
- В меню Инструменты выбираем команду Записать загрузчик.
Если все сделано правильно, то в нижней части IDE появится сообщение об успешной записи загрузчика:
Популярное
- Устройство и программирование микроконтроллеров AVR для начинающих — 143
- Трехканальный термостат, терморегулятор, таймер на ATmega8 — 70
- Двухканальный термостат, терморегулятор на ATmega8 — 67
Программатор 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_PROG, выложенной на сайте, то о перемычке можно забыть
Программатор поддерживается следующим программным обеспечением:
— 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» предназначен для установки драйверов, как указано в статье
usbasp.2011-05-28 (518,9 KiB, 22 361 hits)
Описанный в статье USBASP программатор, прошитый последней версией программы, проверенный в работе, с установленными джамперами и перемычками, вы можете приобрести в интернет-магазине «МирМК-SHOP»
Перейти на страницу магазина
Также данный программатор можно купить на AliExpress (постарался подобрать для вас одно из самых выгодных предложений на AliExpress, с большим количеством положительных отзывов).
Подключение USBasp к Ардуино
Микроконтроллеры семейства AVR, а значит и базирующиеся на них платы (как Ардуино, так и USBasp) поддерживают программирование по ISP-технологии с использованием линий связи SPI. Поэтому сейчас нам нужно:
- соединить выводы Ардуино MOSI, MISO, SCK GND и VCC (5В или 3.3В) с одноименными выводами USBasp;
- цифровой вывод 10 Ардуино подключить к выводу RESET USBasp;
- установить электролитический конденсатор на 10мкФ между RESET и GND Ардуино, чтобы предотвратить автоматическую перезагрузку. Хотя возможно будет работать и без конденсатора, зависит от используемой платы Ардуино.
На всякий случай приведу таблицу соответствия сигналов MOSI, MISO и SCK цифровым выводам различных плат Ардуино:
Плата Ардуино | MOSI | MISO | SCK |
---|---|---|---|
Uno, Duemilanove | 11 или ICSP-4 | 12 или ICSP-1 | 13 или ICSP-3 |
Nano | 11 или ICSP-4 | 12 или ICSP-1 | 13 или ICSP-3 |
Pro Mini | 11 | 12 | 13 |
Mega1280, Mega2560 | 51 или ICSP-4 | 50 или ICSP-1 | 52 или ICSP-3 |
Leonardo | ICSP-4 | ICSP-1 | ICSP-3 |
Due | ICSP-4 | ICSP-1 | ICSP-3 |
Zero | ICSP-4 | ICSP-1 | ICSP-3 |
101 | 11 или ICSP-4 | 12 или ICSP-1 | 13 или ICSP-3 |
Дополнение по фьюзам программатора
Из документа READMI, идущего в комплекте с драйверами и прошивкой для USBASP, позже выяснилось, что разработчик рекомендует выставить определённую конфигурацию фьюз-битов, определяющих работу внешнего резонатора.
Минусом khazam’ы является то, что в окне со фьюзами не отображаются HEX-значения выставленных битов. Это уже можно посмотреть в AVRDUDE PROG. Заводские фьюзы, выставленные китайцами, выглядят так (обязательно поставить точку «инверсные» — выделил синим прямоугольником):
Как рекомендует выставить разработчик:
Это нужно снять две галки с «BODEN» и «SUT1» (выделено красным овалом),
поставить две галки на «CKOPT» и «SUT0» (выделено зелёным прямоугольником),
справа в колонке при этом будут отображаться HEX-значения изменённых битов (выделено жирным красным прямоугольником): Lock Byte: 3F, Fuse High Byte: C9, Fuse Low Byte: EF.
Если всё сходится, можно нажимать «программирование»
ВНИМАНИЕ. Злой фьюз-бит RSTDISBL — не трогать ни в коем случае, иначе его установка заблокирует контроллер и прошить потом через USBASP его уже будет нельзя.