В интернете много схем USB программаторов для микроконтроллеров AVR. Все их можно разделить на три группы: программаторы на основе микроконтроллеров AVR, в которых USB интерфейс реализован программно, программаторы на основе микроконтроллеров AVR с аппаратной поддержкой USB, и программаторы на основе микросхем FT232, которые работают в режиме BitBang.
Один из наиболее простых для повторения AVR USB программаторов – это USBasp. Он собран на микроконтроллере Atmega8 (или Atmega48), требует минимум внешних компонентов, имеет несколько готовых вариантов разводки печатной платы и оболочек для программирования, а также может работать под Linux и MacOS.
Правда есть одно НО! Для оживления этого программатора в микроконтроллер нужно записать прошивку, а значит, у вас уже должен быть какой-то работающий AVR программатор или хотя бы возможность его взять.
Сборка USBasp
Схема программатора USBasp представлена на рисунке ниже. Красный светодиод — сигнализирует о том, что программатор находится в рабочем состоянии. Зеленый загорается, когда идет процесс программирования. Джампер JP1-1 в замкнутом состоянии позволяет программировать микроконтроллер программатора, JP1-2 коммутирует на плату питание от USB порта. С помощью JP3 - изменятся частота SCK сигнала. При разомкнутом джампере — частота SCK будет 375 кГц, при замкнутом — 8 кГц. Если я правильно понял, это сделано для программирования микроконтроллеров с низкой частотой тактирования (меньше 1.5 МГц) 
Можно заморочиться и развести свою печатную плату, но я не стал изобретать велосипед и просто выбрал один из готовых вариантов представленных на странице http://www.fischl.de/usbasp/

Если вы решитесь пойти по этому же пути, то для сборки программатора вам понадобятся следующие компоненты:
AVR микроконтроллер ATmega8-16PI
Узкая 28 контактная панель SCS-28 DIP
Розетка на плату USBB-1J
Вилка на плату IDC-10MS(BH-10)
Кварцевый резонатор на 12 МГц
Два стабилитрона на 3.6V
Выводные резисторы мощностью 0,125 Ватт:
68 Ом 2 шт
270 Ом 1 шт
390 Ом 2 шт
1.5 кОм 1 шт
10 кОм 1 шт
Керамические конденсаторы K10-17Б:
20 пФ 2 шт
0,1 мкФ 1 шт
Электролитический конденсатор 10 мкФ на 16 В
Красный и зеленый светодиоды
Штыревая вилка типа PLD или PLS
Изготовление платы методом ЛУТа не представляет особых сложностей — плата односторонняя, дорожки широкие.

После сборки платы, в микроконтроллер нужно записать прошивку и установить FUSE биты, чтобы он тактировался от внешнего кварцевого резонатора. Сделать это можно прямо в составе платы. Для этого нужно замкнуть джамперы JP1-1 и JP1-2, подключить USB кабель к USBasp`у и компьютеру (с него будет подаваться питание), а к разъему BH-10 подключить программатор. Дальше - в зависимости от того, чем будете шить.
FUSE биты устанавливаются так:
SCOPT – 0
CKSEL3 - 1
CKSEL2 - 1
CKSEL1 - 1
CKSEL0 – 0
А если в байтах то:
HIGH 0xС9
LOW 0xEF
Установка драйверов для USBasp
Для работы с программатором под Windows требуется уставновить драйвера. Это просто.

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

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

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

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

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

Теперь программатором можно пользоваться.
Оболочки для работы с USBasp

Пользоваться ей очень легко. Устанавливаем модель микроконтроллера.Загружаем в буфер файл прошивки Flash памяти

Стираем кристалл и записываем в него прошивку.

С помощью Khazama также можно устанавливать FUSE биты

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


[code] [/code]