Введение
В интернете много схем USB программаторов для микроконтроллеров AVR. Все их можно разделить на три группы: программаторы на основе микроконтроллеров AVR, в которых USB интерфейс реализован программно, программаторы на основе микроконтроллеров AVR с аппаратной поддержкой USB, и программаторы на основе микросхем FT232, которые работают в режиме BitBang.
Один из наиболее простых для повторения AVR USB программаторов – это USBasp. Он собран на микроконтроллере Atmega8 (или Atmega48), требует минимум внешних компонентов, имеет несколько готовых вариантов разводки печатной платы и оболочек для программирования, а также может работать под Linux и MacOS.
Правда есть одно НО! Для оживления этого программатора в микроконтроллер нужно записать прошивку, а значит, у вас уже должен быть какой-то работающий AVR программатор или хотя бы возможность его где-то взять.
Схема USBasp
Схема программатора USBasp представлена на рисунке ниже. Я взял за основу схему с сайта автора http://www.fischl.de/usbasp и немного изменил ee. Были добавлены диоды VD1 - VD3, чтобы уменьшить напряжение питания и согласовать логические уровни микроконтроллера и USB порта без стабилитронов. Были выкинуты цепи подключенные к UART`у, так как они не использовались, и добавлен джампер JP1.
Расскажу о назначении светодиодов и джамперов.
- HL1 сигнализирует о том, что идет процесс программирования. Он зажигается на время записи прошивки.
- HL2 показывает, что программатор находится в рабочем состоянии. Он зажигается при подаче питания.
- JP1 закорачивает цепочку из диодов, что позволяет изменять напряжение на разъеме программирования с 3 на 5 В. Однако без стабилитронов это прокатит не со всеми компьютерами. Многие компы не опознают USBASP, если у него 5-и вольтовые логические уровни.
- JP2 изменяет частоту SCK сигнала. При разомкнутом джампере частота SCK будет 375 кГц, при замкнутом — 8 кГц. Это требуется для программирования микроконтроллеров с низкой тактовой частотой (меньше 1.5 МГц).
- JP3 подключает вывод RESET к разъему программирования. Это нужно для того, чтобы запрограммировать сам микроконтроллер программатора.
- JP4 подключает к разъему программирования +5В от USB порта. Эта функция может понадобиться, чтобы запитать программируемую плату от программатора.
Сборка USBASP
Для сборки программатора USBASP понадобятся следующие компоненты:
Изготовление платы методом ЛУТа не представляет особых сложностей — плата односторонняя, дорожки широкие. При печати не надо зеркалить рисунок платы.
После сборки платы ее нужно тщательно проверить на предмет замыканий. Особенно по цепям питания. Если все в порядке, то можно записать в микроконтроллер прошивку. Ее можно в конце статьи. На сегодняшний день это самая последняя версия, но на всякий случай загляните на сайт автора.
Запрограммировать микроконтроллер можно прямо в составе платы. Для этого нужно замкнуть джампер JP3 и JP4, подключить USBasp к компьютеру для подачи питания и подключить программатор к разъему BH-10. Остальные действия зависят от того, какой программатор вы используете.
После того как микроконтроллер запрограммирован, нужно настроить Fuse биты, чтобы он тактировался от внешнего кварцевого резонатора. Значения Fuse битов такие:
atmega8 HFUSE=0xc9 LFUSE=0xef
atmega88 HFUSE=0xdd LFUSE=0xff
Я прошивал USBASP родным атмеловским программатором. У меня в Atmel Studio окно с Fuse битами выглядело так.
Если прошивать USBasp программатором на FT232, то в SinaProg изображение Fuse битов будет таким.
Разницы никакой, так что не задавайте вопросы какие Fuse биты установить.
Установка драйверов для USBasp
Для работы с программатором под Windows требуется установить драйвера. Их можно скачать с сайта автора. Для операционных систем Linux и MacOS X USBasp`у драйвера не требуется.
Подключаем собранный и запрограммированный USBasp к компьютеру. Операционная система оповестит нас о нахождении нового оборудовании и предложит установить драйвера.

Выбираем опцию - установить из указанного места

Указываем папку в которой лежат драйвера для программатора.

Система немного потупит, а затем начнется процесс установки.

Если все прошло удачно, мастер оборудования завершит работу.

А Windows оповестит нас об установке нового оборудования

Теперь программатором можно пользоваться.
Описанная процедура может немного отличаться в зависимости от версии операционной системы, но суть одна - подсунуть драйвера из папки.
Оболочки для работы с USBasp
На мой взгляд наиболее удобная в использование программа для USBaspa - это Khazama. Она имеет простой и интуитивно понятный оконный интерфейс. Процесс программирования микроконтроллера выполняется в три шага.

Программирование EEPROM (память предварительно должна быть стерта) выполняется аналогичным образом.

В меню Command > Program Options можно задать настройки программы. В частности, набор операций, которые будут выполняться при нажатии на кнопку Auto Program. По умолчанию там задано стирание чипа и запись во флэш память. Можно также выбрать запись в EEPROM и верификацию (проверку данных после записи).

Все операции можно выполнять как с помощью меню, так и с помощью меню бара. Также есть удобная опция AutoProgram.

1 — загрузить в буфер прошивку для Flash памяти
2 — загрузить в буфер прошивку для EPROM памяти
3 — записать прошивку во Flash память
4 — записать прошивку в EPROM память
5 — прочитать Flash память
6 — прочитать EPROM память
7 — стереть кристал
8 — установка FUSE и LOCK биты
9 — установить Khazama поверх всех окон
Файлы
Схема и печатная плата USBasp в формате Eagle
Win драйвер и прошивка USBasp
KhazamaAVRProgrammer