Программатор usbasp своими руками

Добавил пользователь Евгений Кузнецов
Обновлено: 04.10.2024


Купил я тут себе на днях ноут, и встал вопрос программирования мк. Так как в ноутбуках уже и в помине нет ни com, ни lpt портов, пришлось заюзать какой-нибудь программатор с usb. Выбор пал на USBasp, потому что он простой в сборке и использованию программатор для avr микроконтроллеров, которые поддерживают внутрисхемное программирования (ISP), также поддерживается многими программами, такими как: avrdude,CodeVisionAVR итд.

Итак, за дело! Для сборки нам потребуется вот такие детали

Принципиальная схема: Печатная плата была изготовлена методом ЛУТ, процесс изготовления usbasp выглядит следующим образом

Установка Драйверов

  • Прошивка для ATMega 8, и альтернативная прошивка для превращения в STK500 (avrdoper)
  • Драйвер для Windows
  • Схема
  • Печатная плата в формате Sprint Layout
  • Фотки готового программатора
  • AVRDUDE и GUI к нему

Хочу собрать прогаматор, но почему есть места где принципиальная схема, печатная плата и список элементов не совпадают именно по элементной базе


Перемычка J1 применяется, в случае если необходимо прошить микроконтроллер с тактовой частотой ниже 1,5МГц. Кстати, эту перемычку вообще можно исключить, посадив 25 ногу МК на землю. Тогда программатор будет всегда работать на пониженной частоте. Лично для себя отметил, что программирование на пониженной скорости на доли секунды дольше, и поэтому теперь перемычку не дёргаю, а постоянно шью с ней.
Стабилитроны D1 и D2 служат для согласования уровней между программатором и USB шиной, без них работать будет, но далеко не на всех компьютерах.
Светодиод blue показывает наличие готовности к программированию схемы, red загорается во время программирования. Контакты для программирования выведены на разъем IDC-06, распиновка соответствует стандарту ATMEL для 6-ти пинового ISP разъема:


На этот разъем выведены контакты для питания программируемых устройств, здесь оно берется напрямую с USB порта компьютера, поэтому нужно быть внимательным и не допускать кз. Этот же разъем применяется и для программирования управляющего микроконтроллера, для этого достаточно соединить выводы Reset на разъеме и на мк (см. красный пунктир на схеме). В авторской схеме это делается джампером, но я не стал загромождать плату и убрал его. Для единичной прошивки хватит и простой проволочной перемычки. Плата получилась двухсторонняя, размерами 45х18 мм.


Разъем для программирования и перемычка для снижения скорости работы программатора вынесены на торец устройства, это очень удобно


Прошивка управляющего микроконтроллера


После прошивки должен загореться светодиод подключенный к 23 ноге микроконтроллера. Это будет верный признак того, что программатор прошит удачно и готов к работе.

Установка драйвера


Выбираем папку где лежат дрова и жмем Далее


Мигом появится окно с предупреждением о том, что устанавливаемый драйвер не имеет цифровой подписи у мелкомягких:


Забиваем на предупреждение и продолжаем установку, после небольшой паузы появится окно, сообщающее об успешном окончании операции установки драйвера


Все, теперь программатор готов к работе.

Khazama AVR Programmer


Для работы c программатором я выбрал прошивальщик Khazama AVR Programmer. Замечательная программка, с минималистичным интерфейсом.

Она работает со всеми ходовыми микроконтроллерами AVR, позволяет прошивать flash и eeprom, смотреть содержимое памяти, стирать чип, а также менять конфигурацию фьюз-битов. В общем, вполне стандартный набор. Настройка фьюзов осуществляется выбором источника тактирования из выпадающего списка, таким образом, вероятность залочить кристалл по ошибке резко снижается. Фьюзы можно менять и расстановкой галок в нижнем поле, при этом нельзя расставить галки на несуществующую конфигурацию, и это тоже большой плюс в плане безопасности.


Запись фьюзов в память мк, как можно догадаться, осуществляется при нажатии кнопки Write All. Кнопка Save сохраняет текущую конфигурацию, а Load возвращает сохраненную. Правда я так и не смог придумать практического применения этих кнопок. Кнопка Default предназначена для записи стандартной конфигурации фьюзов, такой, с какой микроконтроллеры идут с завода (обычно это 1МГц от внутреннего RC).
В общем, за все время пользования этим программатором, он показал себя с наилучшей стороны в плане стабильности и скорости работы. Он без проблем заработал как на древнем стационарном пк так и на новом ноутбуке.

Программатор 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 для AVR контроллеров Arduino

Возможности программатора USBasp

  1. Совместим с Windows, Linux и Mac OS X.
  2. Поддержка контроллеров S51 и AVR.
  3. Питание от USB порта +5В, дополнительное не требуется.
  4. Прошивка контроллеров работающих от 5 или 3.3 В.
  5. Скорость передачи до 5 Кбайт/сек.
  6. Переключение SCK-джампером для прошивки низкоскоростных чипов Драйвер к программатору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 кГц для прошивки низкоскоростных чипов Установка драйвера для USBasp

Для работы программатора потребуется на Windows установить драйвер. Последнюю версию которого можно найти на сайте USBasp.

На операционные системы Linux и MacOS драйвер не требуется.

Схема программатора

Прошивка самодельного USBasp

Чтобы собранное устройство заработало, его микроконтроллер ATmega, необходимо предварительно прошить.

Запускайте программное обеспечение, например, AVRDUDE и не забудьте проверить правильность установки джампера J2.

Для работы от внешнего кварца необходимо будет выставить фьюзы:

Печатная плата

Печатных плат для самодельного USBasp разработано более 10 видов. Рекомендуем использовать оригинальную, с установкой стабилитронов.

трассировку печатной платы

Или сделайте свою трассировку печатной платы под установленный лично DIP переключатель вместо отдельных джамперов.

Программирование в Khazama

Стоит упомянуть об удобной графической программе 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 памяти

Программирование Flash памяти

Программирование EEPROM памяти

В любом случае, до записи прошивки, память микрочипа должна быть предварительно стерта.

Так как у многих уже давным давно нет ни COM ни LPT порта, то я решил выложить схему USB программатора для AVR. Это будет широко известный в узких кругах USBASP. Схема простая как три копейки, но COM или LPT порт все же потребуется — для того, чтобы прошить управляющий контроллер. Так что можешь сходить к другану. Программатор строится на контроллере ATMega48 или ATMega8. Нужна именно 8 или 48, без всяких индексов L. Так как у нас требуется частота выше чем 8 Мгц.

СБОРКА
Так как я стараюсь не выкладывать непроверенные решения, то я повторил этот программатор. Чисто для себя, поприколу. Подобрал наиболее компактную схему и перевел ее в формат Sprint Layout. Изготовил печатную плату, стравил. Засверловал и напаял компоненты. Микросхему рекомендую ставить на панельку.


Прошивка программатора
Далее замыкаем перемычку J1 и J2 и подключаем к разъему стандартный последовательный программатор, да хоть тот же программатор Громова. Программатор должен иметь свое питание, иначе нужно подать его на схему.

И заливаем в проц прошивку. Для ATMega8 одна прошивка, для ATmega48 другая. Дальше нужно выставить биты конфигурации.

Для ATMega48:
Старший байт FUSE выставляется как 0хDD, младший 0xFF. На картинке я привел скриншот из UniProf с правильно расставленными битами конфигурации для контроллера ATMega48.

Если применяется контроллер ATmega8, то байты FUSE таковы:
Старший 0xC9, младший 0xEF

Настройка в работу
После прошивки нужно снять перемычку J1 и все, можно втыкать в комп. Сразу же должно обнаружиться USB устройство. Скармливаем ему дрова и у нас в системе появляется новый девайс — USBAsp. Если система ругается на драйвера, говорит, что это не драйвер, а фуфел какой то. Значит контроллер либо криво прошился, либо ты забыл снять перемычку J1.

Перемычка J3 используется для прошивки контроллеров у которых частота не превышает 1.5 МГц. Я ее поставил, без нее у меня мега 8 не хотела определяться. Потом подправил меге Fuse биты, чтобы она заработала на 8 Мгц, перемычку не снял, но работает. Слышал, что подправили и теперь перемычку можно не дергать туда сюда.

Красный светодиод показывает, что программатор подключен к USB и запитан. Зеленый, что идет обращение к прошиваемому контроллеру.

Прошивающий софт
Все, теперь можно подключать к программатору провод и тыкать им в прошиваемые контроллеры.
Единственная софтина которая поддерживает этот программатор это AVR-чувак, она же дудка, она же AVRDUDE. Мощнейший консольный программатор. Не стоит пугаться его консольности, во первых батники никто не отменял, а во вторых не него существует несколько оболочек.

ВНИМАНИЕ! В той GUI оболочке что находится в архиве ИНВЕРСНЫЕ FUSE. То есть если в даташите написано, что дефолтные SCKEL3..0 = 0100 то тут будет показан 1011. Короче, как в PoniProg. Чего эти утырки так вертят эти несчастные FUSE я понять не могу, хоть бы предупреждали, а то бы залочил кр исталл нахрен.

Конфигурирование Fuse для Mega48


Fuses для Mega8


0

Fuses для Mega8 (в программе AVRDUDE)

Программатор должен появится в диспетчере устрйств


GUI Оболочка на AVRDUDE

0

Вот, пример командной строки для прошивки через USBAsp — Записываем main.hex во флеш ATmega8:

В архив usbasp.rar я сложил все файлы необходимые для этого программатора:

  • Прошивка для ATMega 48 и ATMega 8
  • Драйвер для винды
  • Схема
  • Печатная плата в формате Sprint Layout
  • Фотки
  • AVRDUDE
  • GUI к AVRDUDE

UPD:
Для тех у кого вдруг пишет, что архив битый, я выложил то же самое в ZIP —USBASP.ZIP

Проверено — работает! Пользуйтесь 🙂

Страничка автора USBASP — там обновления прошивок, драйверов и варианты разводок плат.

IMG_4772_Слой 1

Комплект для радиолюбителя — Доктор AVR и программатор AVR — USBAsp:

Читайте также: