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

Электроника для всех

Блог о электронике

AVR. Учебный курс. Трактат о программаторах

Программа для микроконтроллера пишется на любом удобном языке программирования, компилируется в бинарный файл (или файл формата intel HEX) и заливается в микроконтроллер посредством программатора.

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

Что же представляет из себя это устройство?
В простейшем случае программатор это девайс который связывает микроконтроллер и компьютер, позволяя с компа залить файл прошивки в память контроллера. Также нужна прошивающая программа, которая по специальному протоколу загонит данные в микроконтроллер.

Программаторы бывают разные под разные семейства контроллеров существуют свои программаторы. Впрочем, бывают и универсальные. Более того, даже ту же простейшую AVR’ку можно прошить несколькими способами:

Внутрисхемное программирование (ISP)
Самый популярный способ прошивать современные контроллеры. Внутрисхемным данный метод называется потому, что микроконтроллер в этот момент находится в схеме целевого устройства — он может быть даже наглухо туда впаян. Для нужд программатора в этом случае выделяется несколько выводов контроллера (обычно 3..5 в зависимости от контроллера).

К этим выводам подключается прошивающий шнур программатора и происходит заливка прошивки. После чего шнур отключается и контроллер начинает работу.
У AVR прошивка заливается по интерфейсу SPI и для работы программатора нужно четыре линии и питание (достаточно только земли, чтобы уравнять потенциалы земель программатора и устройства):

  • MISO — данные идущие от контроллера (Master-Input/Slave-Output)
  • MOSI — данные идущие в контроллер (Master-Output/Slave-Input)
  • SCK — тактовые импульсы интерфейса SPI
  • RESET — сигналом на RESET программатор вводит контроллер в режим программирования
  • GND — земля

Сам же разъем внутрисхемного программирования представляет собой всего лишь несколько штырьков. Лишь бы на него было удобно надеть разъем. Конфигурация его может быть любой, как тебе удобней.
Однако все же есть один популярный стандарт:

Для внутрисхемной прошивки контроллеров AVR существует не один десяток разнообразных программаторов. Отличаются они в первую очередь по скорости работы и типу подключения к компьютеру (COM/LPT/USB). А также бывают безмозглыми или со своим управляющим контроллером.

Безмозглые программаторы, как правило, дешевые, очень простые в изготовлении и наладке. Но при этом обычно работают исключительно через архаичные COM или LPT порты. Которые найти в современном компьютере целая проблема. А еще требуют прямого доступа к портам, что уже в Windows XP может быть проблемой. Плюс бывает зависимость от тактовой частоты процессора компьютера.

Так что твой 3ГГЦ-овый десятиядерный монстр может пролететь, как фанера над Парижем.

Идеальный компьютер для работы с такими программаторами это какой-нибудь PIII-800Mhz с Windows98…XP.
Вот очень краткая подборка проверенных лично безмозглых программаторов:

  • Программатор Громова.
    Простейшая схема, работает через оболочку UniProf(удобнейшая вещь. ), но имеет ряд проблем. В частности тут COM порт используется нетрадиционно и на некоторых материнках может не заработать. А еще на быстрых компах часто не работает. Да, через адаптер USB-COM эта схема работать не будет. По причине извратности подхода 🙂
  • STK200
    Надежная и дубовая, как кувалда, схема. Работает через LPT порт. Поддерживается многими программами, например avrdude. Требует прямого доступа к порту со стороны операционной системы и наличие LPT порта.
  • FTBB-PROG.
    Очень надежный и быстрый программатор работающий через USB, причем безо всяких извратов. C драйверами под разные операционные системы. И мощной оболочкой avrdude. Недостаток один — содержит редкую и дорогую микросхему FTDI, да в таком мелком корпусе, что запаять ее без меткого глаза, твердой руки и большого опыта пайки весьма сложно. Шаг выводов около 0.3мм. Данный программатор встроен в демоплаты Pinboard

Программаторы с управляющим контроллером лишены многих проблем безмозглых. Они без особых проблем работают через USB. А если собраны на COM порт, то без извращенских методик работы с данными — как честный COM порт. Так что адаптеры COM-USB работают на ура. И детали подобрать можно покрупней, чтобы легче было паять. Но у этих программаторов есть другая проблема — для того чтобы сделать такой программатор нужен другой программатор, чтобы прошить ему управляющий контроллер. Проблема курицы и яйца. Широко получили распространение такие программаторы как:

  • USBASP
  • AVRDOPER
  • AVR910 Protoss

Внутрисхемное программирование, несмотря на все его удобства, имеет ряд ограничений.
Микроконтроллер должен быть запущен, иначе он не сможет ответить на сигнал программатора. Поэтому если неправильно выставить биты конфигурации (FUSE), например, переключить на внешний кварцевый резонатор, а сам кварц не поставить. То контроллер не сможет запуститься и прошить его внутрисхемно будет уже нельзя. По крайней мере до тех пор пока МК не будет запущен.
Также в битах конфигурации можно отключить режим внутрисхемной прошивки или преваратить вывод RESET в обычный порт ввода-вывода (это справедливо для малых МК, у которых RESET совмещен с портом). Такое действо тоже обрубает программирование по ISP.

Параллельное высоковольтное программирование
Обычно применяется на поточном производстве при массовой (сотни штук) прошивке чипов в программаторе перед запайкой их в устройство.

Параллельное программирование во много раз быстрей последовательного (ISP), но требует подачи на RESET напряжения в 12 вольт. А также для параллельной зашивки требуется уже не 3 линии данных, а восемь + линии управления. Для программирования в этом режиме микроконтроллер вставляется в панельку программатора, а после прошивки переставляется в целевое устройство.

Для радиолюбительской практики он особо не нужен, т.к. ISP программатор решает 99% насущных задач, но тем не менее параллельный программатор может пригодиться. Например, если в результате ошибочных действий были неправильно выставлены FUSE биты и был отрублен режим ISP. Параллельному программатору на настройку FUSE плевать с высокой колокольни. Плюс некоторые старые модели микроконтроллеров могут прошиваться только высоковольтным программатором.
Из параллельных программаторов для AVR на ум приходит только:

  • HVProg от ElmChan
  • Paraprog
  • DerHammer

А также есть универсальные вроде TurboProg 6, BeeProg, ChipProg++, Fiton которые могут прошивать огромное количество разных микроконтроллеров, но и стоят неслабо. Тысяч по 10-15. Нужны в основном только ремонтникам, т.к. когда не знаешь что тебе завтра притащат на ремонт надо быть готовым ко всему.

Прошивка через JTAG
Вообще JTAG это отладочный интерфейс. Он позволяет пошагово выполнять твою программу прям в кристалле. Но с его помощью можно и программу прошить, или FUSE биты вставить. К сожалению JTAG доступен далеко не во всех микроконтроллерах, только в старших моделях в 40ногих микроконтроллерах. Начиная с Atmega16.

Компания AVR продает фирменный комплект JTAG ICEII для работы с микроконтроллерами по JTAG, но стоит он (как и любой профессиональный инструмент) недешево. Около 10-15тыр. Также есть первая модель JTAG ICE. Ее можно легко изготовить самому, а еще она встроена в мою демоплату Pinboard.

Прошивка через Bootloader
Многие микроконтроллеры AVR имеют режим самопрошивки. Т.е. в микроконтроллер изначально, любым указанным выше способом, зашивается спец программка — bootloader. Дальше для перешивки программатор не нужен. Достаточно выполнить сброс микроконтроллера и подать ему специальный сигнал. После чего он входит в режим программирования и через обычный последовательный интерфейс в него заливается прошивка. Подробней описано в статье посвященной бутлоадеру.
Достоинство этого метода еще и в том, что работая через бутлоадер очень сложно закосячить микроконтроллер настолько, что он не будет отвечать вообще. Т.к. настройки FUSE для бутлоадера недоступны.

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

Pinboard II
Прошивка AVR с помощью демоплаты Pinboard II (для Pinboard 1.1 все похоже)

Спасибо. Вы потрясающие! Всего за месяц мы собрали нужную сумму в 500000 на хоккейную коробку для детского дома Аистенок. Из которых 125000+ было от вас, читателей EasyElectronics. Были даже переводы на 25000+ и просто поток платежей на 251 рубль. Это невероятно круто. Сейчас идет заключение договора и подготовка к строительству!

А я встрял на три года, как минимум, ежемесячной пахоты над статьями :)))))))))))) Спасибо вам за такой мощный пинок.

89 thoughts on “AVR. Учебный курс. Трактат о программаторах”

А что это делает в учебном курсе? чего не на главной странице?
Здарова, Артем, вот я и зашел, чего то не мог зайти долго…

Я постепенно правлю и переписываю старые статьи, чтобы привести их в более стройный и завершенный вид.

USBASP: USB AVR программатор для микроконтроллеров ATmega, ATtiny

Программатор 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, 20 071 hits)

Скачать «USBasp-win-driver-x86-x64-ia64-v3.0.7» (10,9 MiB, 36 481 hits)

Описанный в статье USBASP программатор, прошитый последней версией программы, проверенный в работе, с установленными джамперами и перемычками, вы можете приобрести в интернет-магазине «МирМК-SHOP»
Перейти на страницу магазина

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

Программирование микроконтроллеров AVR фирмы Atmel

(32 голосов, оценка: 4,97 из 5)

Миниатюрный, быстрый, автономный программатор AVR микроконтроллеров с SD картой памяти. Часть 1 — Основные характеристики, поддерживаемые режимы и принципиальная схема программатора

В статье мы рассмотрим конструкцию и возможности программатора AVR микроконтроллеров µProg, который является простым в использовании, очень дешевым в изготовлении, миниатюрным, очень быстрым и автономным, использующим SD карту памяти. Такой вид программатора пригодится, если целевое устройство на микроконтроллере находится в труднодоступном месте и вы не можете (или не хотите) подключать ноутбук для программирования или обновления ПО целевого устройства.

Отличительные особенности и основные характеристики программатора:

  • компактные размеры – 44 мм × 39 мм × 5.5 мм;
  • высокая скорость программирования:
    • запись – до 12.5 Кбит/с;
    • чтение – до 14.5 Кбит/с;
  • поддержка файловой системы FAT16 и FAT32;
  • поддержка чтения, записи, верификации Flash-памяти и EEPROM;
  • поддержка чтения, записи, верификации Fuse-битов и Lock-битов;
  • поддержка чтения/записи фалов BIN, HEX и TXT;
  • возможность установки заводских установок Fuse-битов для целевого микроконтроллера;
  • организация пользовательского интерфейса на базе графического дисплея LPH7779 с контроллером PCD8544;
  • анимация работы и при выполнении операций;
  • стандартный разъем программирования – 6-выводный Atmel ISP;
  • возможность обновления собственного ПО с SD карты памяти;
  • простой в использовании, 4 кнопки управления;
  • автовыбор скорости программирования (до 4 МГц);
  • рабочее напряжение 3 В, поддержка целевых микроконтроллеров с напряжением питания от 3 в до 5 В.

Поддерживаемые микроконтроллеры

Зеленым цветом выделены протестированные микроконтроллеры.

Заметьте, что не все микроконтроллеры полностью поддерживаются программатором – для некоторых поддерживаются только операции с Fuse- и Lock-битами. Системная информация о поддерживаемых микроконтроллерах содержится в системном файле chip.db (храниться на SD карте).

  • Микроконтроллеры с Flash-памятью 1 КБайт:
    • AT90s1200, ATtiny11, ATtiny12, ATtiny13/A , ATtiny15
  • Микроконтроллеры с Flash-памятью 2 КБайт:
    • ATtiny2313/A , ATtiny24/A, ATtiny26, ATtiny261/A, ATtiny28, AT90s2333, ATtiny22, ATtiny25, AT90s2313, AT90s2323, AT90s2343
  • Микроконтроллеры с Flash-памятью 4 КБайт:
    • ATmega48/A, ATmega48P/PA, ATtiny461/A, ATtiny43U, ATtiny4313, ATtiny44/A, ATtiny48, AT90s4433, AT90s4414, AT90s4434, ATtiny45
  • Микроконтроллеры с Flash-памятью 8 КБайт:
    • ATmega8515, ATmega8535, ATmega8/A , ATmega88/A , ATmega88P/PA, AT90pwm1, AT90pwm2, AT90pwm2B, AT90pwm3, AT90pwm3B, AT90pwm81, AT90usb82, ATtiny84, ATtiny85 , ATtiny861/A, ATtiny87, ATtiny88, AT90s8515, AT90s8535
  • Микроконтроллеры с Flash-памятью 16 КБайт:
    • ATmega16/A , ATmega16U2, ATmega16U4, ATmega16M1, ATmega161, ATmega162, ATmega163, ATmega164A, ATmega164P/PA, ATmega165A/P/PA, ATmega168/A, ATmega168P/PA, ATmega169A/PA, ATtiny167, AT90pwm216, AT90pwm316, AT90usb162
  • Микроконтроллеры с Flash-памятью 32 КБайт:
    • ATmega32/A , ATmega32C1, ATmega323/A, ATmega32U2, ATmega32U4, ATmega32U6, ATmega32M1, ATmega324A, ATmega324P, ATmega324PA, ATmega325, ATmega3250, ATmega325A/PA, ATmega3250A/PA, ATmega328, ATmega328P , ATmega329, ATmega3290, ATmega329A/PA, ATmega3290A/PA, AT90can32
  • Микроконтроллеры с Flash-памятью 64 КБайт:
    • ATmega64/A, ATmega64C1, ATmega64M1, ATmega649, ATmega6490, ATmega649A/P, ATmega6490A/P, ATmega640, ATmega644/A , ATmega644P/PA, ATmega645, ATmega645A/P, ATmega6450, ATmega6450A/P, AT90usb646, AT90usb647, AT90can64
  • Микроконтроллеры с Flash-памятью 128 КБайт:
    • ATmega103, ATmega128/A, ATmega1280, ATmega1281, ATmega1284, ATmega1284P, AT90usb1286, AT90usb1287, AT90can128
  • Микроконтроллеры с Flash-памятью 256 КБайт:
    • ATmega2560, ATmega2561

Принципиальная схема программатора

Основой программатора является микроконтроллер Atmel AVR ATmega328P-20AU, работающий от внутреннего RC осциллятора 8 МГц. Для организации пользовательского меню применяется монохромный графический ЖК дисплей LPH7779 на базе контроллера PCD8544 (установлен в мобильном телефоне Nokia 3310). Организация дисплея 84×48 точек, имеет стандартный набор инструкций и может работать на частоте 4 МГц.

Если при включении питания программатора (после сборки) на дисплее появится «мусор» или вообще ничего не будет отображаться, то этому может быть две причины:

  1. это китайский вариант дисплея, который собран на ином драйвере (не PCD8544);
  2. дисплей не поддерживает работу на частоте 4 МГц.

Некоторые способы решения этих проблем мы рассмотрим в третьей части описания.

Для работы дисплея требуется два конденсатора (С2, С3) для встроенного преобразователя напряжения, номинальное значение емкости – 1 мкф. Однако, как было замечено, дисплей прекрасно работает при установке конденсаторов номиналом 100 нФ.

Для навигации по меню и управления программатором используются 4 кнопки (LEFT, RIGHT, UP, DOWN).

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

Основные параметры питания программатора:

  • номинальное напряжение питания: 3.3 В;
  • максимальное напряжение питания: 3.6 В;
  • минимальное напряжение питания: 2.7 В;
  • потребление тока при инициализации: до 100 мА * ;
  • потребление тока при программировании: до 10 мА * ;
  • потребление тока при навигации по меню: 5 мА;
  • потребление тока в отключенном состоянии (режим Power Down): 0.1 мкА.

* — потребляемый ток зависит от применяемой SD карты памяти.

Карта памяти, в зависимости какой тип используется, может потреблять ток при инициализации до 100 мА и это большой ток для батареи питания. Конденсатор С5 помогает удерживать напряжение в процессе инициализации, и необходимо, чтобы он имел большую емкость, но не слишком большую, т.к. заряжается он через 3 линии ввода/вывода микроконтроллера. Опытным путем было установлено, что конденсатора емкостью 10 мкФ достаточно для многих SD карт памяти.

Источник питания – две батареи типа CR2032 включенных параллельно, в таком случае напряжение питания программатора будет 3.0 В, но емкости данных батареек не хватит чтобы питать целевой микроконтроллер – падение напряжения сделает невозможным процесс программирования или может повредить данные на SD карте памяти. Возможно подключение батареи с большей емкостью (например, от мобильного телефона), но помните, что максимальное напряжение питания не должно превышать 3.6 В.

Программатор работает только от напряжения получаемого от батареек, не установлено никаких регуляторов напряжения. Процесс программирования целевого микроконтроллера может проходить при питании его от 3 В до 5 В, в то время как программатор имеет напряжение питания 3 В. С одной стороны (со стороны программатора) с целью защиты входной линии микроконтроллера программатора от напряжения выше напряжения питания, вход MISO подключен через стабилитрон 3.3 В (D1) и резистор (R1). Со стороны целевого микроконтроллера, который имеет напряжение питания 5 В, уровень напряжения 3 В распознается по линии SCK и MOSI как высокий уровень (согласно технического описания VIH=0.6VCC=0.6×5 В = 3 В – гарантированное значение).

Как вы заметили, программатор не имеет механического выключателя питания, включение и выключение производится удерживанием кнопки LEFT. После выключения питания, микроконтроллер отключает питание дисплея и SD карты и переходит в режим Deep Sleep, в котором потребляет от батареи ток 0.1 мкА (типовое значение).

Печатная плата размерами 39 мм × 44 мм × 5.5 мм, двухсторонняя.

Следует обратить внимание на один важный момент в аппаратной части программатора — по сигнальным линиям MOSI и SCK включены защитные резисторы номиналом от 33 до 330 Ом (на схеме программатора они не указаны). Это позволит защитить чип программатора при программировании микроконтроллеров с питанием 5 В.
Включение резисторов показано на схеме ниже.

Обновленное ПО и сам процесс обновления мы рассмотрим в 3 части статьи.

Часть 2. Описание функций и опций, режимы работы, тестирование скорости работы

Загрузки

Принципиальная схема (Eagle 5.10, PDF), рисунки печатной платы (Eagle 5.10, PDF), список компонентов — скачать
Рисунок печатной платы ver.1.1 (с защитными резисторами интерфейса программирования) — скачать

Перевод: Vadim по заказу РадиоЛоцман

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

Меня часто спрашивают, чем прошивать AVR-ки, поэтому тут решил выложить ссылки на программаторы.

[Программаторы AVR с интерфейсом USB]
AVR-Doper. Программатор, поддерживающий протокол STK500 (это значит, что с ним совместим большой набор утилит для программирования, в том числе AVR Studio и AVRDUDE), может поддерживать последовательное ISP-программирование, а так же высоковольтное HVSP программирование. Прошивает почти все известные чипы AVR. Можно изготовить самому, схема не очень сложная, есть готовые прошивки, исходный код полностью открыт. Для работы под Windows нужен драйвер, который есть в комплекте с исходным кодом.
AVRISP-MkII. Клон одноименного программатора Atmel, также поддерживает протокол STK500. Нет HVSP, но зато кроме ISP, поддерживает интерфейсы TPI и PDI, поэтому может прошивать также более современную серию микроконтроллеров XMEGA. Так же как и AVR-Doper, поддерживается многими популярными программами. Схема очень простая, шьет вообще весь ассортимент AVR (плюс XMEGA), поэтому этот программатор — хороший кандидат на самостоятельное изготовление или покупку. Схема простейшая, исходный код открыт, его можно скомпилировать практически на любой чип AVR с аппаратным интерфейсом USB. Для работы под Windows нужен драйвер, который есть в комплекте с исходным кодом. В качестве утилиты программатора лучше всего использовать AVR Studio версии 4.19.
mkII-slim. Еще один клон того же программатора AVRISP-mkII, для которого разработана печатная плата, так что его можно собрать в домашних условиях. Этот программатор имеет встроенный стабилизатор на 3.3V и позволяет перемычкой переключать напряжение программируемого чипа — 3.3V или 5V.
AVR Dragon. Популярный, не очень дорогой программатор и внутрисхемный отладчик Atmel, его клоны можно найти на eBay по ценам порядка 40 .. 50 долларов. Поддерживается AVR Studio, IAR Embedded Workbench и многими другими популярными средами программирования. Самому изготовить можно даже и не пытаться (исходного кода нет, схемы нет и она сложная, открыт только протокол STK500), но если у Вас есть деньги и желание серьезно заняться программированием — то купить AVR Dragon нужно обязательно. Для работы под Windows нужен драйвер, который устанавливается вместе с AVR Studio.
Atmel AVR JTAGICE mkII. «Тяжелая артиллерия» для программирования и отладки AVR. И ISP-программатор, и внутрисхемный эмулятор (JTAG, debugWIRE) в одном флаконе. Пользуюсь этой штукой давно, и вполне доволен. Работает через COM-порт и по USB. Стандарт де-факто (его понимает даже avrdude), хорош всем, кроме цены. Программы с которыми работает — AVR Studio, консольная штатная прога, avrdude. Поддерживаются интерфейсы отладки debugWire и JTAG, программируется весь ассортимент AVR, но нет поддержки высоковольтного программирования HVSP. Дорогое решение, поэтому рекомендовать для покупки трудно, а повторить самому нереально. Для работы под Windows нужен драйвер, который устанавливается вместе с AVR Studio.
USBasp. По-настоящему «народный» USB-программатор — из-за дешевизны изготовления, простоты схемы и открытых исходников его делают все кому не лень. USBasp стал уже стандартом де-факто и поддерживается большим количеством утилит программирования. Есть множество вариантов изготовления (ссылки смотрите на сайте автора), его также делают на продажу многие компании. Некоторые китайские поделки — клоны USBasp — можно купить на ebay или dealextreme по ценам порядка 4 долларов, однако его качество может оказаться очень плохим, поэтому будьте внимательны. Программатором USBasp поддерживается только интерфейс программирования ISP. Для работы под Windows нужен драйвер (есть на сайте автора). Протокол USBasp применяется для многих USB-бутлоадеров (благодаря открытости и простоте).
USBtinyISP. Полностью открытый проект с исходниками. Имеет 2 ISP-коннектора — на 6 pin и на 10 pin. Используется чип ATtiny2313-20P, схема очень простая.
USB AVR programmer. Не написано, что клон AVR910, но очень похож на него. Сделан на FT232BM и ATtiny2313. Полностью открытый проект — со схемой и исходниками.
AVRminiProg. Он же AVRminiISP, AVRminiJTAG, AVRminiDragon. Если автор не обманывает, то поддерживается программирование и отладка из AVR Studio.
vusbtiny. Наверное самый маленький в мире ISP-программатор с интерфейсом USB, и самый простой.
[Другие программаторы AVR, подключающиеся через COM и LPT]

Эти программаторы уже не так актуальны сегодня, потому что в компьютерах и особенно в ноутбуках портов COM и LPT уже не встретишь.

STK500. Разработка Atmel (ATSTK500). Подключается через COM-порт, поддерживает ISP и HVSP программирование. Очень серьезный инструмент, однако сегодня уже устарел. Схема и протокол открыты, но исходников firmware нет (firmware поставляется вместе с AVR Studio версий 4.11 build 401 и более поздних, находится в файле AtmelAVR ToolsSTK500STK500.ebn — его можно напрямую прошить в At90s8535 или Mega8535 программатором наподобие AVR910). Заявлено, что прошивает все чипы Atmel в DIP-корпусах, поддерживает параллельное программирование. Подключается к компьютеру через COM-порт, работает вместе с AVR Studio, поддерживает отладку. Есть также клоны STK500 (некоторые подключаются к USB, так как имеют в себе мост USB-COM). Есть также некоммерческие проекты, например HVProg.
HVProg. Клон STK500, усовершенствованный проект Evertool Мартина Томаса. Совместим с AVR Studio, исходный код и схема открыты.
Serial AVR programmer (AVRProg). Очень простой ISP-программатор, подключающийся к COM-порту. Программа свободная, исходники и схема прилагаются. Есть даже версия,работающая с КПК — http://kazus.ru/forums/showthread.php?t=13574.
PicProg+. Производитель Фитон. Очень качественный программатор, подключающийся через LPT. Кроме AVR, шьет большой ассортимент микросхем и микроконтроллеров. Управляющая программа работает под MS-DOS. Программа К сожалению, авторы проект забросили, и программатор больше не обновляется и не поддерживается. А жаль, продукт был очень хороший.
ChipProg+. Тоже универсальный программатор от Фитона. Более современная версия, есть варианты с подключением по LPT и по USB. Программа управления работает под Windows. На мой взгляд, программа управления сыровата, и по функционалу и удобству уступает доисторической оболочке PicProg+, которая работала на MS-DOS. К сожалению, разработчики наплевательски относятся к вопросам пользователей по эксплуатации программатора, и не обращают внимания на запросы о добавлении поддержки новых чипов. Поэтому лучше этот программатор не покупать.
PonyProg. Весьма популярный и качественный ISP программатор с открытой принципиальной схемой. Подключается по COM и USB через переходник.
UniProF. Программатор «на проводках», очень простой, подключаемый либо к COM, либо к LPT. Схемы как таковой нет, настолько она простая. Работает только со «своей» программой, исходников которой нет.
AVReAl. Утилита программирования, работающая на Windows, Linux и FreeBSD. Программу можно использовать с коммерческой или некоммерческой целью, но её тексты закрыты, т. е. она бесплатна (freeware), но не свободна (free software). Утилита поддерживает одну из разновидностей схем «на проводках», но более продвинутая — позволяет использовать не только LPT-адаптеры, но и USB-адаптеры, сделанные на основе микросхем FT2232C, FT2232L, FT2232D, FT2232H, FT4232H, FT232H. Для получения более подробной информации прогуглите слово AVReAL.

AVR910 совместимые программаторы. AVR910 хорош тем, что поддерживается avrdude, Atmel AVR Studio и CodeVision, а протокол, схема и исходники firmware открыты. Плох тем, что изначально программатор разрабатывался для COM-порта, поэтому для прикручивания к USB нужен чип типа FT232, либо искать схему и прошивку на основе библиотеки V-USB (старое название AVR-USB). Клонов AVR910 расплодилось много. Вот несколько ссылок:

— Программатор микроконтроллеров AVR / 89S совместимый с AVR910 (на основе V-USB. Автор PROTTOSS, чип ATmega8)
— Программатор для AVR (чип ATtiny2313, на основе COM-порта и/или FT232)
— мой порт AVR910 (на основе исходников PROTTOSS) на чип ATmega16. Позволяет на недорогой макетной плате AVR-USB-MEGA16 собрать свой программатор.
— AVR910 — Programmer fur AVR-Prog und avrdude — еще один клон AVR910, список поддерживаемых программ большой — AVR Studio (Windows), AVRProg (Windows), OSP II (Windows), AVR Codevision (Windows), WinAVR GCC (Windows), AVRDUDE (Linux, Windows, Solaris), UISP (Linux), AVR-Prog (Linux), Palm AVR (Palm PDA), AVRP (Linux, Windows, Amiga), BascomAVR (Windows), KontrollerLab (Linux).

STK200+/300 — совместимые программаторы [2]. Позволяют по очень простой схеме собрать программатор, подключаемый через порт LPT. Программатор Kanda Systems STK200/STK300 поддерживается многими оболочками для программирования: IC-Prog, PonyProg, UniProf, CodeVisionAVR C Compiler.

Olimex. Хорошие, недорогие, компактные программаторы и отладчики AVR (с подключением по USB) предлагает компания Olimex [1]. Компания надежная, в Россию высылает быстро.

ПРОГРАММАТОР AVR :: AVRDUDE :: USB-программатор USBasp

Для того чтобы запрограммировать («прошить») микроконтроллер, необходим программатор. Программатор представляет собой программно-аппаратный комплекс, состоящий непосредственно из устройства, связывающего микроконтроллер с компьютером, и программы, которая этим устройством управляет. Программатор заносит подготовленную для микроконтроллера программу в его память.

Наиболее распространенным способом программирования для AVR является внутрисхемное программирование (функция ISP — in-cirсuit serial programming) через коммуникационный интерфейс SPI. Этой возможностью обладают все микроконтроллеры AVR, кроме Tiny11 и Tiny28. Данный режим удобен тем, что позволяет программировать AVR, расположенный в готовом устройстве, то есть вам не нужно вытаскивать микроконтроллер из платы каждый раз, когда вы хотите его перепрограммировать.

Интерфейс SPI (Serial Peripheral Interface) представляет собой 3 линии: SCK, MISO и MOSI.

SCK (SPI ClocK)
Тактовый сигнал, который программатор формирует на линии SCK.

MOSI (Master Out, Slave In — вход ведомого, выход ведущего)
Линия передачи данных от программатора (ведущий), к программируемому микроконтроллеру (ведомый). Во время каждого импульса на линии SCK передается один бит от программатора к программируемому микроконтроллеру по линии MOSI.

MISO (Master In, Slave Out — выход ведомого, вход ведущего)
Линия передачи данных от программируемого микроконтроллера (ведомый) к программатору (ведущий). По каждому импульсу на линии SCK передается один бит от микроконтроллера к программатору по линии MISO.

Для обеспечения нормальной связи по трем SPI линиям необходимо соединить общую землю ( GND ) на программаторе и программируемом устройстве.

Для входа и нахождения в режиме последовательного программирования используется линия сброса ( RESET ). Она должна удерживаться в активном состоянии (низкий уровень) во время программирования AVR. Также при стирании чипа на линии RESET должен быть сформирован импульс в конце цикла стирания.

Кроме того, может использоваться вывод контроллера XTAL1 для тактировки контроллера программатором.

При программировании AVR программатор всегда функционирует как ведущее устройство, а микроконтроллер как ведомое.

Программная часть

В интернет можно найти множество программ, работающих с теми или иными типами устройств для программирования микроконтроллеров AVR. Большинство из этих программ совершенно бесплатны.

AVRDUDE
В состав пакета WinAVR входит мощная утилита AVRDUDE. Она позволяет загружать программы и данные в память микроконтроллера, а также считывать их оттуда. AVRDUDE использует SPI-интерфейс. Существуют версии для Windows и Linux. Первоначальный код был написан Брайеном Дином (Brian S. Dean) и имел название avrprog.

AVRDUDE может использоваться через командную строку, чтобы читать или записать все типы памяти кристалла, или при помощи графического интерфейса. Использование AVRDUDE из командной строки удобно для полного программирования всей памяти кристалла, в то время как графический интерфейс полезен для исследования содержания памяти, изменения отдельных байтов EEPROM, fuse и lock битов и т.д.

AVRDUDE поддерживает множество типов программирующих устройств, работающих через USB-интерфейс, параллельный порт (LPT) и последовательный порт (COM).

Для работы с AVRDUDE через графический интерфейс можно воспользоваться программой USBASP AVRDUDE PROG, предназначеной для работы с программатором USBASP, о котором пойдет речь дальше.

Аппаратная часть

USBASP — USB-программатор для AVR
Программатор USBasp — наиболее распространенный бюджетный программатор, работающий с USB-портом. Его цена, как правило, не превосходит 300 рублей (2017 г.).

Обычно программатор USBasp комплектуется кабелем с двумя разъемами на концах. Расположение выводов на ISP-разъеме программатора и на кабеле можно увидеть на следующем рисунке. ( NC означает «not connected» – не подключен.)

Перед установкой драйвера следует вставить USB-разъем программатора в свободный USB-порт компьютера. При этом в диспетчере устройств должно появиться новое устройство.

Чтобы установить драйвер USBasp необходимо запустить файл InstallDriver.exe из распакованного архива. В Windows XP можно просто указать мастеру установки нового оборудования папку с распакованными файлами драйвера.

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

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

Простейший программатор AVR

Если у вас есть компьютер с параллельным портом и операционной системой Windows XP и ниже, можно использовать самый простой программатор, который состоит из 25-контактного разъема для параллельного (LPT) порта, 4-х резисторов (150 Ом) и соединительного кабеля, длина которого не должна превышать 1,5 метра. Резисторы необходимы для предохранения параллельного порта в случае неправильного монтажа и некоторых других неприятностей.

Схема получила свое название от отладочных плат Atmel для быстрого начала работы с микроконтроллерами AVR. Если вы хотите, чтобы ваш программатор почти в точности соответствовал программатору STK200, то следует поставить перемычку для определения программатора программным обеспечением (для AVRDUDE не обязательно). Перемычка должна соединять выводы 2-12.

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

При использовании этого программатора в make-файле необходимо указать:

Настройка AVRDUDE при работе с параллельным портом

В Windows 2000 и Windows XP запрещена прямая работа с параллельным (LPT) портом, поэтому для нормальной работы AVRDUDE необходимо установить драйвер giveio.sys . Для установки этого драйвера зайдите в папку WinAVRbin и запустите файл install_giveio.bat (удалить драйвер из системы можно, запустив файл remove_giveio.bat ).
В Windows 98 никаких специальных настроек не требуется.

Для работы с простейшим LPT-программатором подойдет также свободная GNU-утилита PonyProg , преназначенная для программирования Flash-микросхем с последовательным доступом. PonyProg существует в Windows и Linux версиях. Имеет поддержку русского языка. Может использовать стандартный последовательный порт (COM) или параллельный (LPT) порт.

Добавить комментарий