Программатор для atmega8 через кабель от телефона. Программатор USB ISP для AVR: Ещё один шаг в сторону от ардуинонизации. Дополнение по фьюзам программатора


Прошивка микроконтроллера - это запись в его постоянную память заданной программы, которая представляет собой код в шеснадцатеричной системе счисления (файл с расширением hex). Прошивка происходит с помощью специального устройства - программатора. Они отличаются по способу подключения к персональному компьютеру, например через USB, LTP,COM интерфейсы.

Микроконтроллеров AVR для программирования имеют пять контактов: MOSI - предназначен для приема данных; MOSO - для вывода данных; SCK - вывод синхроимпульсов; RESET просто сброс и общий провод.


Подсоединим эти пять контактов через токоограничивающие резисторы к параллельному LPT порту компьютера и получим самый простой LPT программатор микроконтроллеров семейства AVR.

При сборке схемы нужно чтобы кабель был экранированный, особенно хорош для этих целей старый интерфейсный кабель от принтера. Если использовать обычный кабель, то его длина должна быть как можно короче, и то иногда возникают ошибки при программировании. Но главный недостаток этой схемы тот, что при не качественном монтаже или ошибки подключения можно вывести из строя LPT порт компьютера

Схема USB программатора для микроконтроллеров AVR, выполнена на микроконтроллере Atmega8. Схема очень надежная и имеет одну очень важную особенность, позволяющую восстанавливать микроконтроллеры с ошибочно установленными фьюзами.


Для прошивки микроконтроллера Atmega8 программатора необходимо использовать любую из рассмотренных схем выше для LPT.

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

В идеале у нас должен получится такой USB программатор


Остается лишь записать программу в память микроконтроллера, для этого лучше всего использовать утилиты Uniprof и Code Vision AVR.

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

Если вы решили использовать программу Uniprof необходимо задать следующие фьюзы.


По окончанию прошивки микроконтроллера Atmega8, переключаем тумблер SA2 в НОРМ, и подключаем программатор к USB . Компьютер должен найти устройство. После этого обязательно устанавливаем драйвер из архива. По завершению установки драйвера для программатора, он полностью готов к работе.

Программатор способен работать со следующими оболочками AVR Prog, AVR Studio, ChipBlasterAVR и, одна из самых удобных, Code Vision AVR.

В инете сказано, что USBasp - один из наиболее простых для повторения AVR USB программаторов . + требует минимум внешних компонентов, имеет несколько готовых вариантов разводки печатной платы и оболочек для программирования, а также может работать под Linux и MacOS.

То что нужно! Делаем)))

Процесс изготовления

1. Нашел схемку программатора на контроллере Mega8. Требуется минимум навестных элементов

2. Модифицировал печатную плату под свой корпус. Пришлось немного попотеть, чтоб впихнуть в корпус от сплиттера в одну линейку и МК, и USB-разъем и IDC-10. Результат превзошел мои ожидания)

3. Переносим рисунок с чудо-бумаги на плату. Дорожки немного расплылись - не беда. Исправим это с помощью иголки (булавки, или еще чего острого).

4. Процесс травления уже позади. Плата промыта и просушена.

5. Стираем растворителем тонер - получаем готовые дорожки для будущего устройства

7. Получилась компактная плата, пока еще без элементов.

8. Пичкаем плату нужными элементами. Пока без светодиодов и разъем IDC-10 слишком длинный (торчит из корпуса)

9. Выпаиваем Г-образный IDC-10 разъем. Вместо оплетки для лужения (и прочих премудростей) использовал обычный многожильный провод. Получилось аккуратно и быстро)))

10. Припаиваем SMD-компоненты. Вид со стороны дорожек. Все делалось паяльником на 60Вт с жалом 5мм в диаметре. Таким нужно еще наловчиться…

11. Не все резисторы получилось перевести на SMD. Вид со стороны компонентов.
Как видно, контроллер - USB - IDC-10 плотно расположены… Кварц взял обычный, благо высота корпуса позволяет.

12. А вот и корпус, куда будет помещен программатор. Очень полезная штука)

13. Устройство благополучно внедрено в «шкурку сплиттера». Компактно вышло.

14. Размер платы по сравнению с 5 рубленными «монетками»

Программирование микроконтроллера Mega8

1. Прошиваем микроконтроллер с помощью этого программатора:
Простой LPT программатор AVR микроконтроллеров (5-ть проводков)
Заливаем файл прошивки под названием «usbasp.atmega8.2007-10-23.hex» из архива в конце статьи…

Подключаем к программатору адаптер для программирования микроконтроллеров.

Данные для самостоятельного изготовления можно взять здесь…

При подключении USB будет постоянно светиться зеленый (красный) светодиод

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

1. Можно было запрограммировать и в самом USBasp программаторе, подключив к нему простой программатор согласно распиновке. Если все собрано и запрограммировано верно, то устройство при подключении к ПК определится и «попросит» установить двайвер.

2. На что ему вежливо ответим выбрав папку со скаченными и разархивированными двайверами.

3. Драйвера успешно установятся, если схема собранна верно и МК тоже прошит верно.

4. В диспетчере устройств определится программатор как: LibUSB-Win32 Device .
Радуемся, и тестируем)

Проверка работоспособности программатора

1. В качестве програмки использовал avrdude в оболочке Sinaprog1.5.5.10.
Можно использовать и приложенное к архиву оболочкуUSBASP_AVRDUDE_PROG
Для проверки доступа к Attiny13A привожу пошагово такую инструкцию. Контроллер опознан, можно заливать прошивку в Attiny13A .

Необходимые данные для повторения устройства находятся в этом архиве.

USBasp - простой внутрисхемный USB-программатор для микроконтроллеров Atmel AVR. Программатор построен на микроконтроллере ATMega88 (или ATMega8) и содержит минимум деталей. Программатор использует свой USB-драйвер, никакие специальные USB контроллеры не нужны.

Особенности программатора:
- работа под любой платформой: Windows, Linux и Mac OS X
- какие-либо специальные компоненты или smd не нужны
- скорость программирования до 5 кБ/сек
- SCK-джампер позволяет программировать низкоскоростные контроллеры (< 1.5МГц)
- в планах: последовательный интерфейс (например для отладки)

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

Схема предназначена для программирования только 5В кристаллов. В других случаях, уровни должны быть преобразованы!

Заливка прошивки

Т.к. в схеме программатора используется микроконтроллер, то его необходимо предварительно прошить. Для этого подключите другой рабочий программатор и установите джампер J2, для активации функции обновления прошивки.
Прошейте программатор при помощи прошивки: "bin/firmware/usbasp.atmega88.xxxx-xx-xx.hex " или "bin/firmware/usbasp.atmega8.xxxx-xx-xx.hex "
Необходимо будет установить фьюзы для подключения внешнего кварца
# TARGET=atmega8 HFUSE=0xc9 LFUSE=0xef
# TARGET=atmega48 HFUSE=0xdd LFUSE=0xff
# TARGET=atmega88 HFUSE=0xdd LFUSE=0xff

Установки джамперов

J1 - источник питания (от USB, либо внешний источник). Будьте аккуратнее, т.к. схема не содержит какой-либо защиты от КЗ.
J2 - обновление прошивки (сам себя обновлять не может!). Установленный джампер позволяет программировать контроллер программатора другим рабочим программатором.
J3 - если программируемый МК низкоскоростной <1.5 МГц, то необходимо установить данный джампер. Тогда SCK уменьшится с 375 кГц до примерно 8 кГц.

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

Подключите программатор USBasp к USB. Windows найдет устройство и попросит указать драйвер, укажите ему папку "bin/win-driver ". Windows установит драйвер.
Теперь можно запустить avrdude, к примеру:
1. Войти в терминальный режим, МК: AT90S2313: avrdude -c usbasp -p at90s2313 -t
2. Записать main.hex в flash-память МК ATmega8: avrdude -c usbasp -p atmega8 -U flash:w:main.hex

Сборка их исходников (под Linux)

Компиляция прошивки:
1. Установите GNU toolchain для микроконтроллеров AVR (пакеты avr-gcc, avr-libc)
2. Войдите в директорию firmware/
3. Выполните команду "make main.hex "
4. Прошейте "main.hex" ATMega(4)8. Например при помощи uisp или avrdude (используйте
Makefile с опцией "make flash "). Для прошивки установите джампер J2 и подключите USBasp к рабочему программатору.
Также нужно установить фьюзы для работы от внешнего кварца (используйте Makefile
с опцией "make fuses ").

Компиляция avrdude:
ПО AVRDUDE поддерживается программатором USBasp начиная с версии 5.2.
1. Установите пакет libusb: http://libusb.sourceforge.net/
2. Скачайте последнюю версию avrdude: http://download.savannah.gnu.org/releases/avrdude/
3. cd avrdude-X.X.X
4. Сконфигурируйте:
./bootstrap
./configure
5. Компиляция:
make
make install

Программы для работы с программатором

  • - поддерживается USBasp начиная с версии 5.2
  • - поддерживается USBasp начиная с версии 1.11.9.6
  • Khazama AVR Programmer - Windows XP/Vista GUI приложение для USBasp и avrdude
  • eXtreme Burner - AVR - программа Windows GUI для USBasp

Скачать прошивку, исходники, драйверы вы можете ниже

Последнюю версию всегда можно взять на официальном сайте USBasp

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

Под данный программатор разработано более 10 различных вариантов разводки печатной платы, которые можно скачать ниже, либо на страничке официального сайта.

Список радиоэлементов

Обозначение Тип Номинал Количество Примечание Магазин Мой блокнот
IC1 МК AVR 8-бит

ATmega88

1 ATmega8 В блокнот
D1, D2 Стабилитрон

1N4729A

2 В блокнот
C1 Электролитический конденсатор 4.7 мкФ 1 В блокнот
C3 Конденсатор 0.1 мкФ 1 В блокнот
C4, C5 Конденсатор 22 пФ 2 В блокнот
R1, R2 Резистор

68 Ом

2 В блокнот
R3 Резистор

2.2 кОм

1 В блокнот
R4, R5 Резистор

1 кОм

2 В блокнот
R6 Резистор

10 кОм

1 В блокнот
Q1 Кварцевый резонатор 12 МГц 1 В блокнот
LED1 Светодиод Зеленый 1 В блокнот
LED2 Светодиод Красный 1

Недавно решил сделать себе программатор STK500v2. Пользую в основном CodevisionAVR. Старый не совсем подходил, да и нужен был внутрисхемный программатор. Долгие поиски в сети и чтение форумов привели меня к “AvrUsb500 by Petka”. Программатор был собран и я получил массу положительных эмоций - эффект примерно такой, как будто пересел с советского автопрома на иномарку! Конечно AVR910 надежен как танк - программная реализация USB в нем таких глюков не имеет. Но на тот момент это все были мелочи, по сравнению с преимуществами работы прямо из CodeVision и высокой скорости. Довольно долгое время эти два программатора служили мне верой и правдой, пока с AVR910 не пришлось расстаться. Вот и решил собирать очередной программатор.

К этому времени убедился, что столь любимая нашими радиолюбителями FT232 не так безгрешна как о ней думают. Было собрано несколько разношерстных устройств на этой микросхеме, все пожелания производителя в даташите были учтены, тонна драйверов перепробована на разном железе. Скажу больше - мой промышленный Chipstar XL имеет в качестве USB конвертера тоже FT232, и хоть и не использует VCP-драйвер но глючит тоже не слабо.

Эти все “выбрыки” за пару лет эксплуатации порядком надоели, потому решил модифицировать оригинальную схему. На глаза попалась CP2102 - USB-UART преобразователь. Простая схема, хорошие отзывы о самом производителе (SiLabs) и главное - доступная цена.

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

Обвязка CP2102 выполнена исключительно по даташиту без каких-либо своевольных “художеств”, от себя добавлен лишь второй светодиод, индицирующий наличие питания.

Программирование контроллера производится внутрисхемно. Пятачки предусмотрены на плате. Установка фузов ATMega8:

  1. Субъективно все стало работать на 20-25% быстрее.
  2. Полностью пропали глюки присущие FT232. Определяется без проблем каждый раз, даже после быстрого “перетыкивания” USB, без проблем заработала со всеми моими шнурками.
  3. Драйвера моя Windows 7 вытянула с сервера обновления и поставила сама.

В дальнейшем коснусь лишь узла CP2102, так как работа самого программатора в сети расписана подробно.

Сразу хочу оговориться - проблемой “курицы и яйца” особо не заморачивался, все цепи самопрограммирования через USB вырезаны в угоду размеру. Эта компиляция программатора рассчитана больше на людей с более-менее приличной подготовкой. Причин тому несколько - корпус CP2102 MLP28 (5×5 мм) с контактными площадками на “пузе” вместо ножек - без определенных навыков не поставить, дорожки 0.25 мм - делал обычным утюгом.

Программатор выполнен на основе драйвера от Objective Development и полностью совместим по командам с оригинальным программатором AVR910 от ATMEL. Описание устройства. Предохранитель защищает линий питания порта USB от случайного замыкания по цепям питания программатора. Диоды VD1, VD2 впрямительные кремниевые, они предназначены для понижения питания микроконтроллера до 3,6 В. Согласно документации, контроллер может работать при таком напряжении питания до частоты чуть более 14 МГц. Светодиоды VL1 ("RD ”), VL2 ("WR ”) сигнализируют о текущих действиях программатора и обозначают режимы чтения и записи. Светодиод VL3 ("PWR ”) показывает подачу питания на .

Джампер J1 - (MODify ) служит для начального программирования управляющего МК программатора. При его замыкании, к разъему ISP подключается внешний программатор и производится загрузка в МК управляющей программы. После программирования управляющего МК программатора этот джампер необходимо разомкнуть и замкнуть джампер J2 - NORMal.

Джампер J3 LOW SCK понижает тактовую частоту порта SPI МК программатора до ~20 кГц. При разомкнутом джампере частота SPI нормальная, при замкнутом - пониженная. Переключать джампер можно на ходу, так как управляющая программа МК программатора проверяет состояние линии PB0 при каждом обращении к порту SPI. Не рекомендуется переключать джампер при запущенном процессе записи/чтения программируемого МК, т.к., скорее всего, это приведет к искажению записываемых/читаемых данных. Джампер J3 введен для возможности программирования МК AVR, тактируемых от внутреннего генератора 128 кГц.

Резисторы R10 - R14 предназначены для согласования уровней сигналов микроконтроллера программатора и внешних цепей (программируемый МК или другой программатор). Тактовая частота порта SPI МК программатора при разомкнутом джампере J3 равна 187,5 кГц. Это позволяет программировать контроллеры с тактовой частотой примерно от 570 кГц для ATtiny/ATmega, 750 кГц для 90S и 7,5 МГц для 89S. Контроллеры программируются от 10 до 30 секунд (при использовании утилиты AVRProg v.1.4 из пакета AVR Studio) вместе с верификацией в зависимости от объема FLASH памяти и тактовой частоты.

На вывод LED разъема ISP выведен меандр с частотой 1 МГц для "оживления" МК, у которых были ошибочно запрограммированы фьюз-биты, отвечающие за тактирование. Сигнал генерируется постоянно и не зависит от режима работы программатора. Программатор тестировался с программами AVRProg v.1.4 (входит в пакет AVRStudio), ChipBlasterAVR v.1.07 Evaluation, CodeVisionAVR, AVROSP (ATMEL AVR Open Source Programmer). Для нормального функционирования контроллера в схеме необходимо, чтобы были запрограммированы (установлены в "0") биты SPIEN , CKOPT , SUT0 и BODEN . Обычно микроконтроллеры, идущие с завода, т.е. новые, имеют уже запрограммированный бит SPIEN . Остальные биты должны быть незапрограммированные (установлены в "1").

Инструкция по установке и работе. Прошить контроллер. Подключить свежеиспеченный программатор к компьютеру через USB. Операционная система найдет новое устройство - AVR910 USB Programmer, при предложении автоматически найти драйвер, отказаться, и указать путь к inf-файлу, в зависимости от установленной на вашем компьютере операционной системы.

На форуме находятся все файлы, а также печатная плата для нашего программатора avr. Здесь покажу технологию сборки USB программатора AVR и упаковки в корпус. Для начала скачиваем архив и делаем печатную плату.

Потом впаиваем на неё все детали. Не смог найти маленький кварц, поэтому впаял большой, но на длинных ножках, чтобы потом загнуть, чтоб не мешал при установки платы в корпус. Далее подбираем подходящий корпус, у меня был готовый.

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

Если нет специальной измерительной аппаратуры, можно произвести проверку при помощи светодиода. Светодиод подключается анодом к контакту LED, катодом к любому контакту GND ISP-разъема. При подаче питания светодиод должен светится в «полнакала». При замыкании пинцетом ножек кварцевого генератора светодиод должен либо засветится в «полный накал», либо свечение должно отсутствовать.

Без ощибок собранный программатор с правильно запрограммированным микроконтроллером в настройке не нуждается. Но если у программируемого МК вход RESET подтянут к напряжению питания резистором, то номинал резистора не должен быть ниже 10 кОм - это связанно с пониженным напряжением питания управляющего контроллера в схеме программатора и введением ограничительных резисторов на шине ISP-разъема.

Обсудить статью ПРОГРАММАТОР AVR USB

  • Сергей Савенков

    какой то “куцый” обзор… как будто спешили куда то