Site Loader

Содержание

AVRDUDESHELL. Программа для прошивки микроконтроллеров Atmega

AVRDUDESHELL – программа для Windows и Linux (под wine, начиная с версии 01.09.2015) систем для программирования (прошивки) микроконтроллеров семейства AVR, таких как ATmega8, ATmega16, ATmega32, ATmega64 (полный список поддерживаемых микроконтроллеров см. в конце статьи). Программа поддерживает такие популярные программаторы как USBASP, AVR910, STK500 (полный список поддерживаемых программаторов см. в конце статьи). Фактически AVRDUDESHELL это графическая надстройка над консольной программой AVRDude, поэтому все те микроконтроллеры и программаторы, которые поддерживает AVRDude, поддерживает и AVRDUDESHELL.
AVRDUDESHELL. Программа для прошивки микроконтроллеров Atmega.

Главное достоинство программы — универсальность, простота и наглядность.


AVRDUDESHELL. Главное окно программы.

Множество настроек сгруппированы по категориям:


AVRDUDESHELL. Настройки программы.

В программу встроен механизм получения информации по установленным фьюзам, получающий информацию с http://www.engbedded.com/.


AVRDUDESHELL. Информация по установленным фьюзам.

Оповещение об опасных манипуляциях с фьюзами предупредит о блокировке SPI программирования


AVRDUDESHELL. Оповещение об опасных манипуляциях с фьюзами.

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


AVRDUDESHELL. Область памяти с которой будет выполняться работа.

Если необходимо — можно сохранить


AVRDUDESHELL. Сохранение фьюзов.

а потом восстановить настройки фьюзов


AVRDUDESHELL. Загрузка фьюзов.

Содержит встроенный дизассемблер


AVRDUDESHELL. Встроенный дизассемблер.

Список поддерживаемых микроконтроллеров:

ATMEGA
ATmega103, ATmega128, ATmega1280, ATmega1281, ATmega1284P, ATmega128RFA1, ATmega16, ATmega161, ATmega162, ATmega163, ATmega164P, ATmega168, ATmega169, ATmega2560, ATmega2561, ATmega32, ATmega324P, ATmega325, ATmega3250, ATmega328P, ATmega329, ATmega3290, ATmega3290P, ATmega329P, ATmega48, ATmega64, ATmega640, ATmega644, ATmega644P, ATmega645, ATmega6450, ATmega649, ATmega6490, ATmega8, ATmega8515, ATmega8535, ATmega88

ATTINY
ATtiny11, ATtiny12, ATtiny13, ATtiny15, ATtiny2313, ATtiny24, ATtiny25, ATtiny26, ATtiny261, ATtiny44, ATtiny45, ATtiny461, ATtiny84, ATtiny85, ATtiny861, ATtiny88

ATXMEGA
ATxmega128A1, ATxmega128A3, ATxmega16A4, ATxmega192A3, ATxmega256A3, ATxmega256A3B, ATxmega32A4, ATxmega64A1, ATxmega64A3

AT
AT90CAN128, AT90CAN32, AT90CAN64, AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B, AT90S1200, AT90S2313, AT90S2343, AT90S4414, AT90S4433, AT90S4434, AT90S8515, AT90S8535, AT90USB1286, AT90USB1287, AT90USB162, AT90USB646, AT90USB647, AT90USB82

Список поддерживаемых программаторов:

89ISP, ABCMINI, ALF, ARDUINO, ATISP, AVR109, AVR910, AVR911, AVRISP, AVRISP2, AVRISPMKII, AVRISPV2, BASCOM, BLASTER, BSD, BUTTERFLY, C2N232I, DAPA, DASA, DASA3, DRAGON_DW, DRAGON_HVSP, DRAGON_ISP, DRAGON_JTAG, DRAGON_PP, DT006, ERE-ISP-AVR, FRANK-STK200, FUTURLEC, JTAG1, JTAG1SLOW, JTAG2, JTAG2DW, JTAG2FAST, JTAG2ISP, JTAG2SLOW, JTAGMKI, JTAGMKII, MIB510, PAVR, PICOWEB, PONYSER, PONY-STK200, SIPROG, SP12, STK200, STK500, STK500HVSP, STK500PP, STK500V1, STK500V2, STK600, STK600HVSP, STK600PP, USBASP, USBTINY, XIL

С историей обновлений можно ознакомиться тут.

Инструкция по настройке программы для работы в ОС Linux (wine) находится тут.

Скачать программу AVRDUDESHELL

Программы для прошивки AVR — Меандр — занимательная электроника

Программ для прошивки AVR микроконтроллеров существует множество. О них и пойдёт речь.

Одна из самых популярных программ – PonyProg. Выглядит она следующим образом:

В центре тут окно, в которое загружается программа. В строке Device Type можно выбрать семейство и модель микроконтроллера. Эта программа предназначена в основном для простейших программаторов вроде STK200 или COM портовых прогеров. Чтобы выбрать программатор нужно нажать в верхнем меню Setup и далее Interface Setup. Откроется вот такое окно:

Тут можно выбрать порт компьютера, к которому подключён программатор и тип программатора. С зашивкой программы во флеш или EEPROM я думаю и так всё понятно, а вот на FUSE битах следует остановится по подробнее. Нотация FUSE битов у проги инверсная т.

е. галочка означает, что бит запрограммирован (установлен в 0). FUSE биты перед тем как записывать нужно ОБЯЗАТЕЛЬНО прочитать!

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

PonyProg программа не очень. Далее я расскажу о встроенному в AVR Studio программатору. Он куда лучше. Хотя FUSE биты всё равно инверсные, но зато тактовую частоту можно выбирать не комбинацией группы битов, а в человеческом выпадающем списке. Программа выглядит так:

На этой вкладке можно указать файл с программой и зашить её в FLASH или EEPROM память. Переходим на вкладку FUSES:

Как я и говорил – тактовая частота задаётся в выпадающем списке. Если галочка Auto read установлена – биты считываются автоматически. Очень удобно! Также можно задать FUSE биты числом. В общем программа очень удобная, но работает она к сожалению только с атмеловскими программаторами.

И третья, на мой взгляд самая лучшая программа для прошивки – AVR Dude с графической оболочкой SinaProg. SinaProg выглядит так:

Очень удобный и понятный интерфейс. В графе HEX file выбирается файл для прошивки и дальше можно его залить либо вo flash либо в EEPROM. В графе Device выбирается микроконтроллер. В графе Programmer – программатор, порт к которому он подключён и скорость. FUSE биты также инверсны, но к этому можно привыкнуть. Если в графе Fuses нажать кнопочку Advanced, то откроется окошко, в котором производится установка FUSE битов:

Здесь можно задать их числом, а можно нажать на кнопочку C и появится окошко с галочками и выпадающими списками:

А самое главное достоинство AVR Dude – она поддерживает большинство программаторов, е если какие-то и не поддерживает, то они в неё легко добавляются!

Я остановился именно на AVR Dude с оболочкой SinaProg. Чего и Вам желаю. Поддерживает она как крутые атмеловские программаторы. так и простейшие вроде 5-ти проводков. И работать с ней удобно. Удачи Вам в прошивке!

Ссылки:

1)Архив с настроенной SinaProg.

radioelektr.ru

cxema.org — Прошивка микроконтроллеров AVR

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

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

USB того же компьютера.

Этим программатором можно прошить любой микроконтроллер семейства AVR, достаточно подключить выходы программатора к соответствующим ножкам микроконтроллера:

Для прошивки AVR микроконтроллеров я использую специализированную программу PonyProg.

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

выбираем последовательный порт, тип программатора — SI Prog API, выбираем COM порт, в который воткнули программатор, и жмём кнопку «Проверка», Если всё сделали правильно, появится соответствующее окошко. Если нет, ищите ошибки в монтаже.

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

Об окончании калибровке программа сообщит соответствующим появившемся окошком. Эта процедура проводиться только один раз, при первом подключении программатора к компьютеру, и в дальнейшем проводить не требуется. Что бы убедиться в работоспособности программатора на панели выбираем семейство «AVR micro», тип подключенного микроконтроллера, в моём случае ATmega8, и жмём кнопку «Читать содержимое устройства».

Начнётся процесс чтения, и по окончании программа выдасть код, содержащийся в памяти микроконтроллера. Если микроконтроллер новый, память будет забита единицами. В шеснадцатеричном коде — FF.

Для записи в микроконтроллер необходимого кода жмём на кнопку «Открыть содержимое устройства из файла», выбираем необходимый HEX файл и жмём открыть.

Программа отобразит открытый код. Далее жмём кнопку «Запись устройства».

В появившемся окне жмём ДА. Начнётся процесс записи.

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

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

P (программа) и D (данные). Файлы могут иметь расширение не HEX, а e2p.

Теперь настал самый ответственный момент, требующий особого внимания, это запись битов конфигурации (fuse bits). Для этого жмём кнопку с замком «Биты конфигурации и защиты». Откроется соответствующее окно, в котором необходимо расставить «птички» так, как рекомендует автор устройства, которое вы повторяете.

После чего жмём ОК, начнётся запись конфигурации.

Это самый ответственный момент, из-за неправильно установленных битов конфигурации можно заблокировать микроконтроллер, и его работа может быть неправильная, а перепрограммирование будет возможно лишь на параллельном программаторе, конструкция которогог довольно сложна. Все авторы работают с разными программами, в которых биты конфигурации выставляются по разному. Для примера, теже биты конфигурации, но в программе Algorithm Builder

Обратите внимание, биты конфигурации выставлены инверсно!

Что бы не возникало вопросов, как надо выставлять фьюзы, перед изменением битов жмём кнопку «Читать» и смотрим на бит SPIEN, по умолчанию он всегда включен. Этот бит разрешает последовательное программирование. В PonyProg он специально заблокирован, что бы его случайно не выключить. Сравнивая этот бит в статье автора и со своей программой делаем выводы, как надо ставить биты, инверсно или нет, так как у автора он тоже включен!

Существуют программаторы, подключаемые к USB разъёму компьютера, собрал и я себе такой

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

Плата программатора для ATmega8 в формате lay тут

Khazama avr programmer как пользоваться

26 июля 2013 г.

Как запрограммировать AVR микроконтроллер с помощью usbasp

Здесь я расскажу как запрограммировать микроконтроллер на примере ATmega32 с помощью «Khazama AVR Programmer», «eXtreme Burner- AVR» и «usbasp».

usbasp — это программатор который можно собрать самому, либо купить (на ebay 3$). Драйвера и дополнительная информация на сайте создателя

Khazama AVR Programmer и «eXtreme Burner- AVR» это программы которые заливают прошивку в микроконтроллер, нужно использовать только 1 из них на выбор, ниже я расскажу как с ними работать.

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

После того как мы скомпилируем наш код, создастся прошивка для МК (.hex файл) которую нужно залить в МК, её работоспособоность можно проверить в самой AVR студии или любой среде моделирования для этого предназначенной , к примеру Proteus.

Далее нужно подключить программатор к МК, для этого необходимы только 6 проводов USBASP (если их 10 то 3, 4, 6 и 8 выводы не используются ).

Ниже представлена схема программатора если вы решите собрать его самостоятельно:

Если купить готовый программатор, то чаще всего он уже с готовым разъёмом, который осталось подключить к микроконтроллеру. Лучше прозвонить кабель который выходит из программатора и найти землю, остальное можно найти с помощью распиновки.

Когда известно какой вывод за что отвечает осталось подключить их к ножкам микроконтроллера, для этого нужно свериться с даташитом и проверить распинову, нам нужны контакты MOSI, SCK, MISO, RESET, GND и VTG (это VCC +5 В питание). К примеру необходимые ножки ATmega8:

Когда всё готово нужно запустить Khazama AVR Programmer и проверить видит ли он МК.
Главное окно:

Сперва нужно выбрать в выпадающем меню в центре наш микроконтроллер. Затем нужно нажать command -> read chip signature:

Если не выдаст никаких ошибок то всё в порядке.

Теперь нужно показать ему наш .hex файл, для этого нужно нажать File -> load flash file to buffer. Выбрать нужный файл и нажать ОК:

Теперь нужно разобраться с fuse битами (про них можно почитать Здесь).
Чтобы зайти в меню fuses нужно нажать Command -> fuse and lock bits (CTRL + A):

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

Галочка значит что бит НЕ выставлен, как по нотации ATMEL, пустой квадратик значит что бит ВЫСТАВЛЕН. «Write all» записать в МК выставленные биты.
Мне не нужно ничего менять, так что я нажимаю cancel и жму «auto programm» для того чтобы запрограммировать МК.

Всё, микроконтроллер получает напряжение от программатора и сразу начинает работать.

Если появляется ошибка «error setting usbasp isp clock» нужно либо перепрошить программатор, либо сменить программу для программатора, но даже с этой ошибкой МК можно прошивать как и раньше, только нельзя прочитать и выставить Fuse биты.

Небольшая программа, созданная с целью быстрой прошивки микроконтроллеров Atmel AVR.

Приложение Khazama AVR Programmer имеет простой и удобный минималистичный оконный интерфейс. Данный программатор является графической оболочкой программы avrdude и отлично подходит для начинающих разработчиков. В настоящее время Khazama AVR Programmer поддерживает около восьмидесяти моделей микроконтроллеров AVR, относящихся к семействам ATmega, ATxmega, ATtiny и AT90. Программатор имеет минимальное количество функций, однако выгодно отличается скоростью работы и стабильностью. Программное обеспечение позволяет: загружать в буфер сохраненные hex-файлы прошивки для EEPROM и FLASH памяти, записывать hex-файлы в EEPROM и FLASH память микроконтроллера, смотреть содержимое EEPROM и FLASH памяти чипа, очищать память контроллера, менять конфигурацию FUSE и LOCK битов, проводить верификацию EEPROM и FLASH памяти. Все операции можно осуществлять либо с помощью меню, либо с помощью кнопок на панели инструментов, внешний вид которых срисован с аналогичных кнопок в ПО PonyProg.

Среди прочих функций программы Khazama AVR Programmer стоит отметить: наличие контекстных подсказок и клавиш быстрого доступа, возможность установки данного приложения поверх всех остальных окон, наличие просмотрщика EEPROM и FLASH hex-файлов (без редактирования), визуализация и расшифровка значений битов конфигурации микроконтроллеров. Настраиваемая кнопка «AutoProgram» запускает на исполнение набор операций, заданных в окне «Program Options» (по умолчанию установлена очистка чипа и запись во FLASH память). Программа Khazama AVR Programmer работает с программатором USBasp, поддерживается программирование по TPI. Тактовая частота программирования по интерфейсу ISP задается в пределах от 500 Гц до 1,5 МГц.

Процедура программирования FUSE битов не требует разбирательств с шестнадцатиричными значениями и заключается в выборе необходимых параметров из выпадающих списков, что снижает вероятность залочить микроконтроллеры по ошибке. Также FUSE биты можно изменять, устанавливая галочки в нижнем поле. При этом поставить галки на несуществующие конфигурации нельзя, что также является плюсом в плане безопасности. В окне программирования FUSE битов присутствуют функции: записи фьюзов в память контроллера, сохранения текущей конфигурации в буфер, вызова сохраненной конфигурации из буфера, восстановления стандартной конфигурации FUSE битов, то есть той, с которой микроконтроллер поступил с завода. Приложение Khazama AVR Programmer работает с файлами дампов памяти *.hex.

Приложение было написано арабским программистом по имени Behzad Khazama (Иран, провинция Хорасан-Резави, город Себзевар). Последняя версия данного программатора вышла в середине 2011 года.

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

Софт Khazama AVR Programmer поддерживается операционными системами семейства Microsoft Windows – XP, Vista, 7, 8 (32- и 64-разрядными).

Распространение программы: бесплатная

Для прошивки своих поделок на AVR я использую программатор USBasp, купленный сто лет назад за 100р на AliExpress. Пользоваться очень удобно, никаких тебе древних COM или LTP портов, современный USB!
Вот так выглядит это чудо китайской промышленности!

Ну а теперь по подробнее)

Автором данного программатора является немец Thomas Fichl, страничка его разработки со схемами, файлами печатных плат и драйверами.
Работает этот программатор через ISP.

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

Поэтому я всегда стараюсь выводить этот разъем если сам развожу плату. Очень удобно, прошивать и отлаживать можно на ходу. Прошил, не заработало, подправил код, прошил еще раз. Не нужно снимать контроллер вставлять в программатор….
В работе и железе выглядит примерно так

Ну а теперь рассмотрим с каким же софтом работает данная поделка!
Скачиваем драйвера с офф сайта, страничка для загрузки.
Устанавливаем. Внимание! Компьютер будет ругаться на то что драйвер без цифровой подписи. В Windows 7 просто подтверждаем что хотим продолжить,

а для Windows 8 и новее используем инструкцию.

Все теперь программатор готов к работе.
Я использую бесплатный прошивальщик Khazama AVR Programmer. Отличная прога с минималистичным дизайном!
Выбираем чип и поехали!

Тут можно поиграться с FUSES битами, все с описаниями за что отвечают!

Ну вот пожалуй и все!

Не знаю как у всех, но именно на мой экземпляр USBASP v2.0, Khazama ругается при перепрошивке Error Setting USBASP ISP Clock…

Игра с выставлением разной частоты не дает результатов.

После недолгих поисков в интернете наткнулся таки на такую же проблему у других людей.

Для исправления этого досадного косяка, нужно перепрошить программатор)) Для такого трюка нам понадобится еще один USBasp!

Вот так нужно все соеденить. Теперь заливаем прошивку

Выставляем Fuse биты и прошиваем!

После этого доставучие ошибки пропадут!

Update 2016

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

error: usbasp_transmit: libusb0-dll:err [contorl_msg]

Решение было найдено не незамедлительно, нужно понизить частоту программирования. Идем в Command — > Program Options — > ISP CLK Speed и выставляем 187.5 KHZ (или AUTO).

После этого все снова работает!

Update 2017

Вставляем новую не разу не прошитую Atmega8 и видим такое!

100500 раз проверяем схему и программатор, все в норме! И у же почти сдавшись, находим косяк! При первом включении Atmega8 работает от внутреннего генератора на частоте 1 Mhz, она просто не успевает определиться в программе. Решение простое, нужно уменьшить частоту чтения в Khazama.

После этого прошиваем контроллер на 8 Mhz и выставляем AUTO.

И решение еще проще))) Нужно замкнуть контакты на программаторе JP3, для понижения частоты, а после выставления фьюзов на более высокую частоту работы atmega, разомкнуть.

Программатор USBasp. : 7 комментариев

Спасибо за статью.Такой же случай.Только не было 2го usbasp.Сначала прошил AVR910 в usbasp,этой
прошивкой(usbasp.atmega8.2011-05-28),а потом им исправил прошивку в usbasp по вашей инструкции.

Рад что вам помогло!

А у меня на проце atmega 48 20au. работал, после перепрошивки никак не определяется. не пойму как оживить. Можете подсказать?

Вы FUSES правильно выставили? Если после перепрошивки не определяется то скорее всего выставили работу не от кварца а от внешнего генератора. я в таком случае делал из Ардуино простейший генератор и подавал сигнал на мертвый чип, а уж потом спокойно прошивал.

Автору от души огромное спасибо, благодаря тебе вернул к жизни 3 штуки attiny2313, у которых из-за незнания выставил (при помощи фьюзов) слишком маленькую тактовую частоту. Программатор из-за старой прошивки работал только со старой казамой (1.6.2), в которой нельзя выбрать частоту ISP. Теперь обновил прошивку и новая версия (1.7) работает как надо. Жму руку, братишка.

Добрый день!
Имеются два программатора USPasp.
С родной прошивкой ведут себя так

Если прошить последнюю, то в AVRdude можно сделать только одну операцию. То есть, например, прочитали микроконтроллер — и всё, все последующие попытки что-либо сделать выдают вот такую ошибку

Если программатор вынуть/вставить, то опять можно выполнить одну операцию.
Есть у кого-нибудь мысли, что это и как с этим бороться?

Обновил прошивку прогером dapa, не надо народ пугать вторым usbasp, всё нормально любым путём. Интересуют простые и дешёвые hvsp & hvpp, бывают ли?

ПРОШИВКА МИКРОКОНТРОЛЛЕРОВ AVR

   Многие начинающие радиолюбители слышали, думаю, о так называемых микроконтроллерах, об их больших возможностях, и наверняка, хотели бы собрать какое-нибудь устройство на их основе сами. 
В этой статье мы рассмотрим основы работы с микроконтроллерами AVR. Применение микроконтроллеров (МК) в схемах позволило значительно уменьшить габариты электронных устройств, а также значительно облегчить их разработку. Так выглядит микроконтроллер attiny 2313v в Dip корпусе:

Микроконтроллер attiny 2313v в Dip корпусе

   Если в обычной схеме, без применения МК мы задавали режим работы схемы, путем определенного соединения деталей, то в схеме на контроллере большую часть работы берет на себе программа, записываемая в память микроконтроллера. Процесс записи программы в память МК называется прошивкой или прошиванием. Сама прошивка (программа), представляет собой файл c расширением *.HEX, который образуется в результате компиляции. Начинающим радиолюбителям, если они к тому же являются владельцами устаревших компьютеров, могу порекомендовать к использованию программу — среду разработки CodeVisionAVR. На следующем рисунке можно видеть рабочее окно программы:

Рабочее окно Code vision AVR

   После того как мы написали программу в среде разработки CodeVisionAVR например на СИ, её нужно откомпилировать в этой же программе, в результате мы получаем тот самый нужный нам *.HEX файл, или говоря другим языком прошивку. Находится прошивка в выбранной при установке программы папке, во вложенной папке ЕХЕ. Начинающим для обучения рекомендую приобрести МК attiny-2313v, он может работать даже от двух батареек или аккумуляторов АА или ААА, или говоря другими словами для его работы достаточно даже напряжения 2,4 Вольт. Большинство, думаю, начинают знакомство с МК с собирания разнообразных мигалок, бегущих огней и тому подобного. При питании от двух аккумуляторов или батарей использование токоограничительных резисторов для светодиодов не обязательно. При питании МК от 5 вольт, такие резисторы будут необходимы. Ниже приведена распиновка выводов микроконтроллеров attiny-2313v:

Attiny2313v распиновка

   Для переноса написанной  нами программы на компьютере, в память микроконтроллера, после компиляции,  необходим программатор. Другими словами, именно с помощью программатора, мы и прошиваем микроконтроллер. В интернете есть множество схем программаторов, начинающим могу порекомендовать для сборки программатор Громова, схема очень простая, в крайнем случае, программатор можно приобрести готовый, например, на Али экспресс. Для того чтобы прошить микроконтроллер, необходимо соединить шесть его  выводов — ножек, с одноименными пинами, в колодке программатора:

Подключение к программатору контроллера — схема

   Перечислю:

  • 1) VCC (или плюс питания).
  • 2) GND (земля).
  • 3) SCK.
  • 4) MISO.
  • 5) MOSI.
  • 6) RESET.

   У разных моделей микроконтроллеров распиновка ножек может отличаться от приведенной на рисунке. Итак, на рисунке выше видно по ножкам МК, куда нужно подключать программатор. При подключении программатора следует ознакомиться с Даташитом, или другими словами с документацией на МК. Идет она обычно в PDF файле, на нескольких листах. На следующем рисунке видно, с какими пинами на шлейфе программатора нужно соединять выводы микроконтроллера для прошивания:

Распиновка шлейфа программатора

   В случае, если мы изготавливаем программатор сами, своими руками, мы видим те же 6 выводов, которые нужно подключить к микроконтроллеру. Как, например, на схеме приведенного ниже программатора Громова:

Распиновка разъема программатора

   При изготовлении и пользовании программатором Громова нужно учесть, что после программирования схема с МК начинает работать, только после отключения пина RESET от схемы.

Фото программатора Громова 3

   Я для этой цели, как можно видеть на фото выше, для отключения пина, (чтобы не отцеплять его каждый раз от схемы) установил на программатор малогабаритный клавишный выключатель, размыкающий цепь RESET. Автор AKV.

Originally posted 2018-12-26 05:11:16. Republished by Blog Post Promoter

Программатор avr своими руками под windows 10. Миниатюрный USB программатор для AVR микроконтроллеров. Органы управления на плате

В интернете много схем USB программаторов для микроконтроллеров AVR. Все их можно разделить на три группы: программаторы на основе микроконтроллеров AVR, в которых USB интерфейс реализован программно, программаторы на основе микроконтроллеров AVR с аппаратной поддержкой USB, и программаторы на основе микросхем FT232, которые работают в режиме BitBang.

Один из наиболее простых для повторения AVR USB программаторов – это USBasp. Он собран на микроконтроллере Atmega8 (или Atmega48), требует минимум внешних компонентов, имеет несколько готовых вариантов разводки печатной платы и оболочек для программирования, а также может работать под Linux и MacOS.

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

Схема программатора 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 понадобятся следующие компоненты:

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


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

Запрограммировать микроконтроллер можно прямо в составе платы. Для этого нужно замкнуть джампер 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 биты установить.

Для работы с программатором под Windows требуется установить драйвера. Их можно скачать с сайта автора. Для операционных систем Linux и MacOS X USBasp`у драйвера не требуется.

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


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


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


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


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


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


Теперь программатором можно пользоваться.

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

Для работы с USBasp`ом есть несколько программ — avrdude, eXtremeBurner, Khazama и.. какие то еще.

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

Для программирования микроконтроллеров AVR требуется программатор. Проще всего сделать программатор для COM либо LPT. Но я работаю на ноутбуке, а в них сейчас устанавливаются только USB порты. Вот и назрела необходимость обзавестись программатором для AVR по USB. Сейчас, я скорее всего купил бы данный программатор. На ebay они стоят недорого, наверное, даже дешевле чем купить детали, сделать плату и всё спаять. Хотя если посмотреть с другой стороны, заказ с ebay будет идти по почте не меньше месяца, а собрать программатор avr usb своими руками, в силу его простоты, можно за вечер. Более того, если начинающий радиолюбитель сам соберёт программатор, то в дополнении к программатору он получит опыт, бесценный опыт, а это дорогого стоит.
Это второй мой USB программатор для AVR, первым я сделал программатор USB-asp, но он мне не очень понравился, так как иногда отваливался от моего компьютера, хотя на другом компьютере ничего подобного не наблюдалось. Я решил попробовать собрать другой программатор, и мой выбор пал на программатор AVR910. У данного программатора немного по другому реализована схема подключения по USB, и как позже оказалась, на моём компьютере всё работает очень хорошо. Я забыл о проблемах, которые у меня были с моим прошлым программатором. Описанный в данной статье программатор AVR910 является на данный момент моим основным программатором для AVR.
Схема и прошивка использованы с сайта проекта (http://prottoss.com/projects/AVR910.usb.prog/avr910_usb_programmer.htm).


Питается программатор от USB порта. Для того чтобы не требовалось согласование с уровнями линий данных USB порта (3.6В) питание микроконтроллера составляет 3.6В. Для получения из 5В в USB порте 3.6В, используется схема их двух последовательно прямо включённых кремниевых диодов. На каждом диоде падает по 0.7В, а в сумме получается 1.4В. Диоды должны быть кремниевыми, не допускается использование диодов шотки, так как на них падает меньше 0,7В. Выходы разъёма программирования подключены через резисторы на 330 Ом для согласования уровней. Работает устройство на микроконтроллере AtMega8-16 на тактовой частоте 12МГц. На схеме приведены номера выводов для микроконтроллера в DIP корпусе, хотя я отраcсировал плату под SMD корпус, который называется TQFP. Программатор имеет индикацию записи, чтения, наличия питания. Также данный программатор имеет выход, на котором всегда присутствует меандр, частотой 1 МГц. Это очень классная и полезная штука для восстановления микроконтроллеров, у которых из-за ошибочно запрограммированных Fuse битов тактирование сконфигурировано от внешнего источника тактовых импульсов. Я таким образом уже несколько раз восстанавливал микроконтроллеры. Нужно всего лишь посмотреть в даташите на конкретный микропроцессор AVR, к какому выводу подключается внешний источник тактового сигнала, и подпаять к данному выводу источник меандра. Подключить программатор, и перепрограммировать fuse. Всё очень просто, но иногда здорово выручает!
Имеющиеся варианты реализации печатных плат под программатор AVR910 не совсем меня устраивали, и я выполнил трассировку своего варианта (скачать файлы проекта можно в конце статьи).


Защитный рисунок на фольгированный стеклотекстолит нанесён при помощи лазерного принтера и утюга.


После травления получилась вот такая красота. Я не сдержался, и процарапал тонер на дорожках между ножками микросхемы. Мне не терпелось проверить получились они или нет.


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

Групповую заготовку для таблички для печати на фотобумаге размером 10х15 я положил в архив со всеми файлами к данной записи. Скачать его можно в конце данной статьи.
Прошивку для программатора можно скачать по ссылке в конце статьи.
Fuse биты устанавливаются с соответствии с рисунком ниже:


Как запрограммировать микроконтроллер AtMega8 для программатора AVR910 можно посмотреть в моём видео:

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


С термоусадкой всё кажется просто, но мне было сложно сделать отверстия под штыри. Если протыкать отверстия шилом, то при усадке термоусадочная трубочка рвётся начиная от данных отверстий. Я даже испортил несколько заготовок, но у меня в конце экспериментов всё получилось. В итоге я отверстия не протыкал, а проплавлял горячим паяльником с жалом иглой. По краям платы я спаял концы термоусадочной трубки. Спаиваются они очень просто – нагреваются оба конца трубочки, затем быстро, пока они не успели остыть, зажимаются и удерживаются зажатыми до полного остывания. Получается достаточно прочный спай. Я зажимал медицинским зажимом, на термоусадке даже остались следы от насечек на его губках.
При первом подключении к компьютеру программатора AVR910 в системе появится новое устройство AVR910. Теперь необходимо установить драйвера и можно работать.
Я работал с данным программатором на 32 битных системах Windows XP и Windows 7. Всё работает очень хорошо и никаких проблем не возникает. Проблемы возникли у меня когда я попытался установить драйвера для 64 битной Windows 7. Дело в том, что этот драйвер не имеет цифровой подписи Microsoft и 64 битный Windows 7, будучи более защищенным в безопасности, блокирует все драйвера без цифровой подписи. Эту блокировку можно отключить, но это не совсем просто….. Так что имейте ввиду.
Заливаю прошивку в микроконтроллер я при помощи программы AvrOsp2. Она очень простая, не требует установки, бесплатна, поддерживает программатор AVR910 и огромное кол-во микроконтроллеров АВР, хорошо работает и имеет очень удобное меню для работы с FUSE битами. В общем, классная программка, мне она очень нравится, рекомендую! В видео ниже я показал процесс установки драйверов для AVR910, как настроить и пользоваться программой AvrOsp2.

В моей версии программатора я не установил выводной электролитический конденсатор на 22 мкФ, который устанавливается со стороны противоположной дорожкам и паяется в отверстия, которые находятся возле разъёма USB. Возможно потребуется установить дополнительный электролитический конденсатор ёмкостью 10-50мкФ параллельно впаянному керамическому конденсатору 0.1 мкФ, возле зелёного светодиода PWR. Ниже на картинке, от руки показаны места подключения.

Для работы программатора необходим микроконтроллер способный работать до 16 МГц. AVR AtMega8 выпускается в двух сериях, работающих до 8 МГц (серия L), они нам не подходят, так как проект работает от кварца на 12 МГц. Есть и обычная версия, которая работоспособна вплоть до частоты 16 МГц. Это то, что нам нужно. Ниже представлен кусочек даташита AVR AtMega8, в котором вычеркнуты версии микроконтроллеров которые не буду работать в данном программаторе, и выделены зелёной рамкой версии микроконтроллеров которые будут работать в данном проекте.

Микроконтроллеры фирмы ATMEL успели завоевать широкую популярность. Их программирование перед применением можно выполнить непосредственно в плате готового устройства через несложный ISP кабель, подключаемый к LPT порту персонального компьютера или кабель чуть посложнее, подключаемый к COM порту. Но в настоящее время всё больше материнских плат выпускается без того и другого, а в ноутбуках LPT исчез уже давно, сменившись интерфейсом USB. Впрочем, под этот интерфейс программаторы тоже существуют и доступны.

Для масштаба рядом лежит обычный 5 мм светодиод.
Этот программатор USBASP поддерживает следующие микроконтроллеры:

Список поддерживаемых МК

ATtiny11, ATtiny12, ATtiny13, ATtiny15, ATtiny22, ATtiny2313, ATtiny24, ATtiny25, ATtiny26, ATtiny261, ATtiny28, ATtiny44, ATtiny45, ATtiny461, ATtiny84, ATtiny85, ATtiny861
AT90S1200, AT90S2313, AT90S2323, AT90S2343, AT90S4414, T90S4433, AT90S4434, AT90S8515, AT90S8535
ATmega8, ATmega48, ATmega88, ATmega16, ATmega161, ATmega162, ATmega163, ATmega164, ATmega165, ATmega168,ATmega169, ATmega32, ATmega323,ATmega324, ATmega325,
ATmega3250, ATmega329, ATmega64, ATmega640, ATmega644, ATmega645, ATmega6450, ATmega649, ATmega6490, ATmega128, ATmega1280, ATmega1281, ATmega2560, ATmega2561, ATmega103, ATmega406, ATmega8515, ATmega8535
AT90CAN32, AT90CAN64, AT90CAN128
AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B
AT90USB1286, AT90USB1287, AT90USB162, AT90USB646, AT90USB647
AT89S51, AT89S52
AT86RF401


Вместе с программатором поставляется 10-жильный летночный кабель с разъёмами.


Питание программатора берется с USB порта компьютера.


На плате программатора имеется место для распайки LDO стабилизатора напряжения на 3,3В, но сам он не распаян.
Программатор поддерживается программой AVRDUDE. Сама программа консольная, но под неё есть . Утилиту avrdude можно найти в папке /hardware/tools/ в дистрибутиве Arduino IDE или скачать в интернете.
Перед началом работы с программатором потребуется скачать драйвер со .
Также программатор поддерживается средой разработки Arduino.


Для программатора существует прошивка под названием , превращающая его в STK500-совместимый и воспринимаемый фирменной средой разработки ATMEL AVR Studio, но в силу высокой вариативности китайского железа пользоваться ею можно только на свой страх и риск. Планирую купить +32 Добавить в избранное Обзор понравился +17 +42

Сегодня расскажу, о недорогим и очень простом программаторе USBAsp v.2.0 для микроконтроллеров AVR (основанный на дизайне Томаса Фишла), с его помощью можно прошивать контроллеры AVR по интерфейсу ISP (не выпаивая его с платы), а самое главное, можно прошить загрузочный сектор на контроллерах Arduino.

Технические параметры

Напряжение питания: 5 В, DC
Интерфейс: USB 2.0
Программирование/ чтение: Atmel (AVR)
Габариты: 70 мм x 18 мм x 10 мм
Поддержка операционных систем: Windows XP / 7 / 8 / 8.1 / 10.

Общие сведения

Программатор USBAsp распространяется и открытым исходным кодом, так что при желании можно изготовить самому, скачав печатную плату и прошивку с сайта Thomas, из-за этого в различных интернет магазинах существует различные варианты программатора с одинаковым функционалом. В моем случае буду рассказывать о USBAsp V2.0 китайского производителя LC Technelogy.

Программатор собран на синий печатной плате, слева расположен USB-разъем необходимый для подключения к компьютеру. В центре располагается контроллер ATmega8A, рядом установлен кварцевый резонатор на 12 МГц и электрическая обвязка (резисторы, конденсаторы). Справа расположен 10-контактный разъем (два ряда, по пять выводов, шагом 2.54 мм), обеспечивающий обмен данными с прошиваемым микроконтроллером (интерфейс ISP). В комплекте поставляется кабель, с каждой стороны которого, установлен разъем IDC (10 выводов), для простоты прошивки некоторых плат (например Arduino), советую приобрести адаптер-переходник с 10-pin на 6-pin. Назначение выводов программатора USBAsp можно посмотреть на рисунке ниже, вид на стороне программатора.

Назначение выводов:
1 – MOSI
2 – VCC
3, 8, 10 – GND
4 – TXD
5 – RESET
6 – RXD
7 – SCK
9 – MISO

Световая индикация
Красный светодиод G — Включен
Красный светодиод R — Обмен данными

Перемычки
JP1 — POWER, управляет напряжением на разъеме ISP VCC (вывод 2), можно установить на + 3.3В, + 5В или вовсе убрать перемычку, если программируемое устройство, имеет собственный источник питания.
JP2 — SERVICE, обновления прошивки USBasp.
JP3 — SLOW, программирования на низких скоростях, если программируемое устройство, работает на частоте ниже 1.5 МГц, SCK (вывод 7) уменьшит частоту с 375 кГц до 8 кГц.

Принципиальная схема программатора USBAsp V2.0 можно посмотреть на рисунке ниже.

Список поддерживаемых AVR микроконтроллеров:
Mega Series:
ATmega8, ATmega8A, ATmega48, ATmega48A, ATmega48P, ATmega48PA, ATmega88, ATmega88A, ATmega88P, ATmega88PA, ATmega168, ATmega168A, ATmega168P, ATmega168PA, ATmega328, ATmega328P, ATmega103, ATmega128, ATmega128P, ATmega1280, ATmega1281, ATmega16, ATmega16A, ATmega161, ATmega162, ATmega163, ATmega164, ATmega164A, ATmega164P, ATmega164PA, ATmega169, ATmega169A, ATmega169P, ATmega169PA, ATmega2560, ATmega2561, ATmega32, ATmega32A, ATmega324, ATmega324A, ATmega324P, ATmega324PA, ATmega329, ATmega329A, ATmega329P, ATmega329PA, ATmega3290, ATmega3290A, ATmega3290P, ATmega64, ATmega64A, ATmega640, ATmega644, ATmega644A, ATmega644P, ATmega644PA, ATmega649, ATmega649A, ATmega649P, ATmega6490, ATmega6490A, ATmega6490P, ATmega8515, ATmega8535,
Tiny Series: ATtiny12, ATtiny13, ATtiny13A, ATtiny15, ATtiny25, ATtiny26, ATtiny45, ATtiny85, ATtiny2313, ATtiny2313A
Classic Series: AT90S1200, AT90S2313, AT90S2333, AT90S2343, AT90S4414, AT90S4433, AT90S4434, AT90S8515, AT90S8535
Can Series: AT90CAN128
PWN Series: AT90PWM2, AT90PWM3

Установка драйвера USBAsp на Windows 8/10

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

Так как, в операционной системе нету необходимого драйвера, в «Диспетчере устройств » появится устройство «USBAsp » с восклицательным знаком.

Скачиваем с цифровой подписью, разархивируем и запускаем «InstallDriver.exe»

Драйвер установлен, в «Диспетчере устройств » пропадет восклицательный знак с «USBAsp ».

Установка драйвера на Windows XP и Windows 7 аналогичная, программатор готов к работе.

Программу разработал «Боднар Сергей », работает не только с китайским программатором USBAsp v.2.0, но и другими программаторами. Первым делом скачиваем программу, разархивируем и запускаем «AVRDUDEPROG.exe ».
В качестве примера, прошью китайскую плату в которой установлен микросхема ATmega328P. В программе, жмем на вкладку «Микроконтроллеры » и выбираем ATmega328P.

Далее, необходимо выбрать прошивку, в строке «Flash » нажимаем «. . . », переходим в папку «C:\Program Files\Arduino\hardware\arduino\avr\bootloaders\atmega » и выбираем «ATmegaBOOT_168_atmega328.hex », жмем «Открыть »

Подключаем программатор к плате «Arduino UNO R3 », и нажимаем кнопку «Программирование ».

В конце, выйдет диалоговое окно, о удачном окончании программировании.

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

В данной статье приведено описание USB программатора для микроконтроллеров AVR, который можно собрать своими руками. Построен он на микроконтроллере Atmega8 и способен работать от USB разъема компьютера. Данный программатор совместим с STK500 v2.

Описание USB программатора

USB программатор построен на плате, сделанной из одностороннего фольгированного стеклотекстолита . На плате есть 2 перемычки: одна расположена под разъё­мом SPI, вторая перемычка расположена неподалеку от того же разъема.

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

  • SUT1 = 0
  • BOOTSZ1 = 0
  • BOOTSZ0 = 0
  • CKOPT = 0
  • SPIEN = 0

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

Программирование Atmega8 через LPT-порт компьютера

Самый быстрый и дешевый способ запрограммировать Atmega8 – применить LPT-программатор для AVR. Подобная схема приведена ниже.

Питание микроконтроллера осуществляется от простого стабилизатора напряжения 78L05. В качестве оболочки для программирования можно использовать программу UniProf.

При первом включении программы и при не подключенном контроллере, нажав кнопку «LPTpins», необходимо настроит выводы LPT-порта следующим образом:

В момент запуска UniProf, она автоматом определяет вид микроконтроллера. Загружаем в память UniProf прошивку Atmega8_USB_prog.hex, отклоняем подключение файла EEPROM.

Выставляем следующим образом фьюзы (для программы UniProF), нажав кнопку «FUSE»:

Для запоминания установок нажимаем все три кнопки «Write». Затем нажав на «Erase» предварительно очищаем память прошиваемого микроконтроллера. После этого уже жмем на «Prog» и дожидаемся завершения прошивки.

Настройка USB программатора

После того как наш микроконтроллер прошит, его необходимо установить в плату USB программатора. Далее подключаем программатор к USB порту компьютера, но пока питание не подаем.

Настройка порта:

Настройка терминала:

Настройка ASCII:

Теперь после всех проделанных процедур, подаем питание на USB программатор. Светодиод HL1 должен промигать 6 раз и затем светится постоянно.

Для проверки связи USB программатора с компьютером 2 раза нажимаем клавишу «Enter» в программе HyperTerminal. Если все в порядке мы должны увидеть следующую картину:

Если это не так проверяем еще раз монтаж, особенно линию TxD.

Далее вводим версию программатора 2.10, так как без этого програм­матор не будет работать с программами «верхнего уровня». Для этого вводим «2» и нажимаем «Enter», вводим «а» (английская) и нажимаем «Enter».

USB программатор способен распознавать подключение программируемого микроконтроллера. Выполнено это в виде контроля «подтяжки» сигнала Reset к источнику питания. Этот режим включается и выключается следующим образом:

  • «0», «Enter» — режим выключен.
  • «1», «Enter» — режим включён.

Изменение скорости программирования (1МГц):

  • «0», «Enter» – максимальная скорость.
  • «1», «Enter» – сниженная скорость.

На этом подготовительная работа завершена, теперь можно попробовать прошить какой-нибудь микроконтроллер.

(скачено: 1 203)

USBasp — USB программатор для программирования микроконтроллеров AVR

Программатор 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

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, 14 656 hits)

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

</p>

Скачать с ЯндексДиска

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

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

1. Микроконтроллеры — первый шаг2. Системы счисления: десятичная, двоичная и шестнадцатиричная3. Логические операции, логические выражения, логические элементы4. Битовые операции5. Прямой, обратный и дополнительный коды двоичного числа6. Программа AVRDUDE_PROG: программирование микроконтроллеров AVR ATmega и ATtiny

USBASP -USB программатор для программирования микроконтроллеров AVRUSBASP ISP программатор и AVRdude prog: программирование микроконтроллеров AVR ATmega, ATtiny. Как прошить микроконтроллер.Published by: Мир микроконтроллеров

Пользователи, знакомые с микроконтроллерами Atmel или хотя бы с Arduino скорее всего знают о дешевом программаторе USBasp, цена которого на Ebay около $ 3. Распространены две версии программатора:

  • USBasp 2.0 — с стабилизатором на 3.3 вольта.
  • USBasp 3.0 — плата поменьше, без стабилизатора. Так же у него не выведены на разъем порты PD0 и PD1(Аппаратный UART).

схема USBasp2.0

распиновка разъема USBasp

Органы управления на плате

На плате имеются три перемычки, задающие разные режимы работы программатора:

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

Чтобы начать пользоваться программатором, необходимо сперва поставить на него драйвера. Драйвер для программатора USBASP (v 2.0) USB ISP ранее был основан на libusb-win32. После того, как действие сертификата истекло, библиотека была заменена на libusbK. 

Работа драйвера тестировалась на версиях от Windows XP до Windows 10 (32-разрядные и 64-разрядные версии). Поскольку драйвер подписан, отпадает необходимость принудительного отключения сертификата драйвера или использования Zadig, достаточно скачать драйвер USBasp и запустить файл InstallDriver.exe из распакованного архива. В Windows XP можно просто указать мастеру установки папку с распакованными файлами драйвера.

Скачать драйвер программатора USBasp 3.0.7

ВНИМАНИЕ! Вы устанавливаете этот драйвер на свой страх и риск!

Автор: · Опубликовано 11.07.2017 · Обновлено 08.06.2018

Сегодня расскажу, о недорогим и очень простом программаторе USBAsp v.2.0 для микроконтроллеров AVR (основанный на дизайне Томаса Фишла), с его помощью можно прошивать контроллеры AVR по интерфейсу ISP (не выпаивая его с платы), а самое главное, можно прошить загрузочный сектор на контроллерах Arduino.

Технические параметры

Общие сведения

Программатор USBAsp распространяется и открытым исходным кодом, так что при желании можно изготовить самому, скачав печатную плату и прошивку с сайта Thomas, из-за этого в различных интернет магазинах существует различные варианты программатора с одинаковым функционалом. В моем случае буду рассказывать о USBAsp V2.0 китайского производителя LC Technelogy.

Программатор собран на синий печатной плате, слева расположен USB-разъем необходимый для подключения к компьютеру. В центре располагается контроллер ATmega8A, рядом установлен кварцевый резонатор на 12 МГц и электрическая обвязка (резисторы, конденсаторы). Справа расположен 10-контактный разъем (два ряда, по пять выводов, шагом 2.54 мм), обеспечивающий обмен данными с прошиваемым микроконтроллером (интерфейс ISP). В комплекте поставляется кабель, с каждой стороны которого, установлен разъем IDC (10 выводов), для простоты прошивки некоторых плат (например Arduino), советую приобрести адаптер-переходник с 10-pin на 6-pin. Назначение выводов программатора USBAsp можно посмотреть на рисунке ниже, вид на стороне программатора.

Световая индикация►  Красный светодиод G — Включен ►  Красный светодиод R — Обмен данными

Перемычки ►  JP1 — POWER, управляет напряжением на разъеме ISP VCC (вывод 2), можно установить на + 3.3В, + 5В или вовсе убрать перемычку, если программируемое устройство, имеет собственный источник питания. ►  JP2 — SERVICE, обновления прошивки USBasp. ►  JP3 — SLOW, программирования на низких скоростях, если программируемое устройство, работает на частоте ниже 1.5 МГц, SCK (вывод 7) уменьшит частоту с 375 кГц до 8 кГц.

Принципиальная схема программатора USBAsp V2.0 можно посмотреть на рисунке ниже.

ATmega8, ATmega8A, ATmega48, ATmega48A, ATmega48P, ATmega48PA, ATmega88, ATmega88A, ATmega88P, ATmega88PA, ATmega168, ATmega168A, ATmega168P, ATmega168PA, ATmega328, ATmega328P, ATmega103, ATmega128, ATmega128P, ATmega1280, ATmega1281, ATmega16, ATmega16A, ATmega161, ATmega162, ATmega163, ATmega164, ATmega164A, ATmega164P, ATmega164PA, ATmega169, ATmega169A, ATmega169P, ATmega169PA, ATmega2560, ATmega2561, ATmega32, ATmega32A, ATmega324, ATmega324A, ATmega324P, ATmega324PA, ATmega329, ATmega329A, ATmega329P, ATmega329PA, ATmega3290, ATmega3290A, ATmega3290P, ATmega64, ATmega64A, ATmega640, ATmega644, ATmega644A, ATmega644P, ATmega644PA, ATmega649, ATmega649A, ATmega649P, ATmega6490, ATmega6490A, ATmega6490P, ATmega8515, ATmega8535, ►  Tiny Series: ATtiny12, ATtiny13, ATtiny13A, ATtiny15, ATtiny25, ATtiny26, ATtiny45, ATtiny85, ATtiny2313, ATtiny2313A ►  Classic Series: AT90S1200, AT90S2313, AT90S2333, AT90S2343, AT90S4414, AT90S4433, AT90S4434, AT90S8515, AT90S8535►  Can Series: AT90CAN128 ►  PWN Series: AT90PWM2, AT90PWM3

Установка драйвера USBAsp на Windows 8/10

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

Так как, в операционной системе нету необходимого драйвера, в «Диспетчере устройств» появится устройство «USBAsp» с восклицательным знаком.

Скачиваем архив с цифровой подписью, разархивируем и запускаем «InstallDriver.exe» 

Драйвер установлен, в «Диспетчере устройств» пропадет восклицательный знак с «USBAsp».

Установка драйвера на Windows XP и Windows 7 аналогичная, программатор готов к работе.

Программа для USBAsp V2.0

Программу разработал «Боднар Сергей», работает не только с китайским программатором USBAsp v.2.0, но и другими программаторами. Первым делом скачиваем программу, разархивируем и запускаем «AVRDUDEPROG.exe». В качестве примера, прошью китайскую плату Arduino UNO R3 в которой установлен микросхема ATmega328P. В программе, жмем на вкладку «Микроконтроллеры» и выбираем ATmega328P.

Далее, необходимо выбрать прошивку, в строке «Flash» нажимаем «. . .», переходим в папку «C:Program FilesArduinohardwarearduinoavrbootloadersatmega» и выбираем «ATmegaBOOT_168_atmega328.hex», жмем «Открыть»

Подключаем программатор к плате «Arduino UNO R3», и нажимаем кнопку «Программирование».

В конце, выйдет диалоговое окно, о удачном окончании программировании.

Ссылки

  Скачать драйвер для программатора USBASP v2.0 (LC Technology, ATMEL)  Скачать программу AVRDUDE_PROG v.3.3

Купить на Aliexpress

  Программатор USBASP v2.0 (LC Technology, ATMEL)  Адаптер для ATMEL AVRISP, USBASP, STK500 (10 pin на 6 pin)

Купить в Самаре и области

  Программатор USBASP v2.0 (LC Technology, ATMEL)  Адаптер для ATMEL AVRISP, USBASP, STK500 (10 pin на 6 pin)

Используемые источники:

  • https://microkontroller.ru/programmirovanie-mikrokontrollerov-avr/usbasp-usb-avr-programmator/
  • http://blog-programmista.ru/post/62-usbasp-usb-programmator-dla-programmirovania-mikrokontrollerov-avr.html
  • https://robotchip.ru/obzor-programmatory-usbasp-v-2-0/
Аппаратный взлом

: извлечение прошивки из микроконтроллеров Atmel

Недавно мы обсуждали взлом оборудования для специалистов по безопасности и исследователей. При проведении исследования безопасности оборудования нам часто требуется извлечь прошивку из встроенной флэш-памяти микроконтроллеров. В качестве основы для этого мы решили начать серию статей, в которых мы обсудим процесс извлечения прошивки из различных микроконтроллеров (MCU). Цель этой серии статей — охватить ряд микроконтроллеров, которые могут встретиться, и познакомить вас с инструментами, программным обеспечением и методами, используемыми для извлечения микропрограмм или для проверки того, что разработчик системы правильно защитил области памяти микроконтроллера.

В этой первой части мы рассмотрим микроконтроллер Atmel Atmega2561. Чтобы получить доступ к прошивке микроконтроллеров Atmel, мы будем читать данные напрямую с контроллера через последовательный интерфейс программирования (SPI). Для этого требуются следующие инструменты и программное обеспечение:

Используя Bus Pirate в сочетании с программным обеспечением с открытым исходным кодом avrdude , микропрограмму микроконтроллера Atmel AVR можно извлечь из флэш-памяти микроконтроллера через SPI. Приложение avrdude можно скачать здесь.

Стандартная прошивка Bus Pirate должна работать нормально, если вы не извлекаете флеш-память из определенных микроконтроллеров Atmel, таких как ATmega 2560 и 2561. Прошивка Bus Pirate может иметь проблемы с извлечением памяти выше 128 КБ на ATmega 2560-2561. Чтобы решить эту проблему, вам необходимо установить прошивку STK500v2 на Bus Pirate. Прошивка STK500v2 превратит Bus Pirate в клон отладчика AVR. Прошивку для этого можно скачать здесь, а инструкции по обновлению прошивки Bus Pirate можно найти на этом веб-сайте.

После того, как Bus Pirate будет обновлен прошивкой STK500v2, вы можете подключить его к порту SPI. Если вам повезет, у производителя устройства есть разъемы для подключения на плате, к которым вы можете подключиться, но в любом случае вам нужно будет найти и проверить подключения заголовков перед подключением Bus Pirate — и, если необходимо, припаять некоторые провода или разъемы к плате. Другой вариант — напрямую подключиться к микропроцессору.

На этом этапе таблица данных пригодится для определения распиновки микроконтроллера.Используя таблицу данных Atmega2561, вам нужно будет определить и найти контакты SPI «Power» и «Ground».

  • MOSI = серийный вход Master Out
  • MISO = Главный вход с последовательным выходом
  • SCLM = последовательные часы
  • RESET = Сброс микроконтроллера
  • GND = Земля
  • Vcc = напряжение обычно 3,3 В постоянного тока

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


Источник изображения

Как только это будет выполнено, вы можете подключить Bus Pirate к портам SPI чипа:

Atmega2561 Автобус Пиратский
Штифт SCK 11 SCLK
Вывод MOSI 12 MOSI
MISO-контакт 13 MISO
Пин сброса 20 CS
Вывод Vcc 21 Vcc 3.3 В постоянного тока
GND контакт 22 GCC

После подключения вы можете использовать приложение avrdude для извлечения флэш-памяти из микроконтроллера ATmega 2561, используя следующую команду:

avrdude -p m2561 -c stk500v2 e -P / dev / ttyUSB0 -u flash: r: flash.bin: r

Микроконтроллер Atmel AVR определяется с помощью переключателя -p . Коммутатор -c идентифицирует устройство интерфейса SPI, -P указывает на расположение устройства Bus Pirate — в этом случае он подключен к системе как ttyUSB0 — и, наконец, -u сообщает avrdude, что нужно извлечь во флеш-память и запишите его во флеш-память.мусорное ведро.

Для повышения производительности и надежности рекомендуется, чтобы этот процесс выполнялся на реальной физической машине под управлением Linux, а не на виртуальной машине.

Итак, как видите, этот процесс достаточно прост, если у вас есть правильные инструменты, программное обеспечение и таблицы данных для MCU, из которого вы хотите извлечь прошивку. Обязательно ознакомьтесь с другими блогами из этой серии здесь:

Нужна помощь в обеспечении безопасности вашего Интернета вещей? Узнайте больше о наших услугах по тестированию безопасности Интернета вещей.
Начать

USBASP Руководство по обновлению микропрограммы — Electronics-Lab.com

Программатор USBASP является важным инструментом / аксессуаром для инженеров встраиваемых систем / разработчиков микропрограмм. Это USB ICSP (внутрисхемный последовательный программатор), который позволяет разработчикам легко загружать прошивки / загрузчики на микроконтроллеры AVR. В отличие от того, что вы найдете для последовательных программистов, таких как преобразователи USB-TTL, он не использует выделенный чип, поскольку он работает на atmega88 (или atmega8), и использует драйвер USB только для прошивки без специального контроллера USB.

USBASP Programmer

Хотя этот подход с драйвером USB только для микропрограмм увеличивает его совместимость, он также представляет серьезную проблему для программиста, поскольку требует регулярных обновлений для совместимости с достижениями в программировании микроконтроллеров. Одним из таких достижений является интерфейс Tiny Programming Interface (TPI) , который позволяет внешним программистам получать доступ к энергонезависимой памяти (NVM) некоторых микроконтроллеров Atmel начального уровня, таких как серия ATtiny.

Хотя такие функции, как TPI ​​, существуют уже некоторое время, использование программатора USBASP по-прежнему является проблемой, поскольку как старые, так и новые устройства USBASP требуют обновления прошивки, прежде чем их можно будет использовать.Чтобы помочь пользователям, которым нужна эта функция, в сегодняшнем руководстве будет освещен процесс обновления прошивки на вашем программаторе USBASP до последней версии.

Необходимые компоненты

Для обновления прошивки требуются следующие компоненты:

  • Программист USBASP
  • Arduino Uno (нано должно работать одинаково)
  • Перемычки
  • Макет

Программисты USBASP, независимо от марки, обычно имеют одинаковую конфигурацию, поэтому это руководство должно работать независимо от типа или марки, которые у вас есть.

Подготовьте Arduino Uno

Для загрузки прошивки в USBASP требуется программист. В сегодняшнем руководстве мы будем использовать Arduino Uno в качестве этого программатора. Чтобы сделать Arduino программистом, нам нужно загрузить скетч, доступный среди примеров в Arduino IDE, на плату Arduino. Для этого выполните следующие действия:

  • Перейти к Файл > Примеры > ArduinoISP
  • Подключите плату Arduino к вашему ПК
  • Выберите порт и тип платы и Нажмите на Загрузить

После этого плата Arduino готова к работе в качестве программиста.

Схема

Далее нам нужно подключить USBASP к плате Arduino. Используя перемычки и макетную плату (при необходимости), соедините плату Arduino и устройство USBASP, как показано на изображении ниже:

Схема

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

Ардуино — USBASP

 5 В - VCC
GND - GND
D13 - SCK
D12 - MISO
D11 - MOSI
D10 - СБРОС 

Еще раз проверьте соединения, чтобы убедиться, что все сделано правильно.Если у вас есть сомнения по поводу идентификации контактов на USBASP, вы можете запустить поиск в Google по контактам этой конкретной платы и использовать его в качестве руководства для подключения.

Когда платы подключены, нам нужно сделать еще одну вещь — закрыть перемычкой JP2 (выделено ниже) на плате USBASP. Без этого мы не сможем загрузить прошивку на устройство. Замкните перемычку, замкнув ее припаянными светодиодами или перемычками.

Теперь мы готовы загрузить прошивку.

Загрузка прошивки

Начнем со скачивания прошивки. Репозиторий, содержащий последнюю версию прошивки, поддерживается на веб-сайте Томаса Фишля. На момент написания этой статьи последняя версия, которая, к счастью, имеет поддержку TPI ​​, была выпущена в May 2011 . Загрузите это.

Ключевым элементом процесса обновления прошивки является AVRDUDE. Если вы знакомы с Arduino IDE , вы наверняка видели ссылку на нее в подробном виде во время загрузки кода.AVRDUDE — это утилита для загрузки, выгрузки и управления содержимым ПЗУ и ЭСППЗУ микроконтроллеров AVR с использованием техники внутрисистемного программирования (ISP). Самый простой способ получить AVRDUDE — загрузить его исполняемый файл, расположенный в папке Arduino -> « ARDUINO FOLDER» / Java / hardware / tools / avr / bin / , или вы можете загрузить его.

После того, как он у вас есть, следующим шагом будет поиск файла конфигурации; avrdude.conf файл, который (если вы будете следовать маршруту Arduino IDE) будет в каталоге -> « ARDUINO FOLDER» / Java / hardware / tools / avr / etc /

Поместите эти два файла (исполняемый файл AVRdude и файл конфигурации ) в папку вместе с файлом .hex прошивки USBasp , которую мы только что загрузили. Это помогает сократить длину финальной команды. После этого подключите Arduino с подключенным к нему программатором USBasp к своему компьютеру и запишите порт, который был назначен для Arduino вашим компьютером.

Наконец, откройте окно терминала, перейдите в папку, которую мы создали ранее, и выполните команду ниже:

 ./avrdude -C ./avrdude.conf -p m8 -c avrisp -P /dev/cu.usbmodem14101 -b 19200 -U flash: w: usbasp.atmega8.2011-05-28.hex: я
 

Убедитесь, что вы ввели правильный порт после опции -P . Если это будет успешным без каких-либо сообщений об ошибке, значит на USBASP теперь установлена ​​последняя версия микропрограммы, и он готов к некоторым действиям.

Вот и все для этого урока!

Не стесняйтесь обращаться ко мне через раздел комментариев, если у вас есть какие-либо проблемы с тем, чтобы заставить это работать.

Артикул:

Прошивка MCU

Современные цифровые устройства состоят из десятков, а то и сотен электронных схем.Для обеспечения переключения сигналов между ними и управления их работой используются блоки микроконтроллеров (MCU) — логические электронные компоненты, объединяющие в себе различные аппаратные модули, такие как вычислительные микросхемы, ПЗУ, ОЗУ, мосты, регуляторы напряжения, таймеры, тактовые генераторы, и контроллеры портов ввода / вывода. Самый элементарный вариант использования микроконтроллера — это включение светодиода при выполнении какого-либо условия. Конечно, мы можем привести более сложный пример: микроконтроллер также может использоваться для управления роботом-манипулятором.В этой статье мы обсудим основные вопросы программирования микроконтроллеров (создание прошивки MCU).

Приложения для микропрограмм MCU

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

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

Плюсы и минусы микропрограммного обеспечения микроконтроллера

Фактически микропрограммное обеспечение микроконтроллера представляет собой программу, состоящую из ряда простых инструкций, направленных на обработку данных.Подавляющее большинство таких прошивок работает по принципу простой реактивной схемы: чтение входящей информации, мониторинг текущего состояния, разработка пакета исходящих инструкций и отправка этих исходящих инструкций. Однако иногда требуется также обработать данные в памяти, изменить их или в той или иной форме передать их на другое устройство — например, ЖК-дисплей или последовательный порт.

Преимущества прошивки MCU:

  • Широта вариантов реализации.Программы для микроконтроллеров могут быть написаны как на языках программирования высокого уровня (C, Java), так и на языках низкого уровня (Ассемблер). Выбор достаточно богат, чтобы любой энтузиаст мог выбрать наиболее удобный вариант.
  • Низкие входные барьеры. Даже начинающий программист, не имеющий опыта разработки, может скопировать готовый код из Интернета и запустить собственное решение для автоматизации. Далее, по мере продвижения работы над устройством, его функциональные возможности можно расширять, изменяя код построчно (в большинстве случаев разобраться в нем совсем не сложно).
  • Для домашних экспериментов хватило бы самого дешевого контроллера с Алиэкспресс.
  • Выше мы уже указывали, что микроконтроллеры позволяют вносить функциональные изменения «на лету». Все, что вам нужно сделать, это переписать код прошивки.

Недостатки прошивки MCU:

  • Непригодность для задач, требующих высокой вычислительной мощности. Планируя создать решение автоматизации на базе микроконтроллера, вы все равно должны знать, что он может выполнять только более простые задачи, не требующие серьезных вычислительных мощностей.Если ваш программный код содержит несколько циклов и большое количество условий, устройство начнет замедляться и, таким образом, минимизирует уровень UX.
  • Возможные уязвимости безопасности. Знаете ли вы, что в прошлом году в микроконтроллерах ControlWave Emerson были обнаружены уязвимости? Это вызывает определенные сомнения в надежности концепции MCU в целом. Недостаточная продуманность прошивки иногда позволяет злоумышленникам получить контроль над MCU (обратите внимание, что некоторые из этих атак могут быть выполнены, даже не зная кода прошивки и модели микроконтроллера).Одной из самых простых с точки зрения реализации является DoS-атака на MSP. В случае архитектуры AVR можно зацикливать код, а уязвимости, содержащиеся, например, в некоторых ведущих в отрасли микроконтроллерах MSP, позволяют выполнять третьи -партийный код из ОЗУ. Обычно злоумышленники устанавливают беспроводную связь или используют универсальную шину, подключаясь непосредственно к портам ввода / вывода MCU.

Совет для проектов: подготовка к разработке микропрограммного обеспечения MCU

Обычно микропрограммное обеспечение микроконтроллера создается с использованием интегрированных сред разработки (IDE), которые содержат специализированные компиляторы (например, PonyProg).После компиляции исполняемый модуль загружается в ПЗУ микроконтроллера с помощью электронного программатора. Это электронные устройства, которые выполняют задачу передачи адаптированного кода с компьютера на микроконтроллер через порт USB, LPT или COM.

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

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

Нюансы выбора микроконтроллера

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

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

В частности, обратите внимание на широкую модельную линейку микроконтроллеров Microchip Technology — они отличаются низким энергопотреблением, высоким качеством и пользуются популярностью среди специалистов по домашней автоматизации.

Нюансы выбора программиста

Большинство новичков выбирают микроконтроллеры Atmel AVR. Они недорогие, универсальные, используют интерфейс ISP (внутрисистемное программирование) и, что немаловажно, не требуют драйверов в большинстве современных настольных операционных систем. Учтите, что главное преимущество выбора программатора с интерфейсом ISP состоит в том, что вы можете сначала физически соединить детали, а уже потом писать прошивку (и вам не нужно будет снимать микроконтроллер с уже собранной схемы).

Coding MCU Firmware

Опытные программисты рекомендуют использовать ОС Linux для разработки (на то есть множество причин, но основные из них — низкие входные барьеры и высокая безопасность). Дополнительно вам потребуются:

  • Avrude, консольная программа для чтения, изменения и записи содержимого памяти микроконтроллеров с архитектурой AVR с использованием технологии внутрисхемного программирования;
  • Компилятор / IDE для вашего предпочтительного языка.

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

Что касается выбора конкретного языка, то здесь каждый разработчик должен сделать свой выбор, исходя из своих личных предпочтений.Некоторым нравится широкий выбор методов и абстрактность языка C; некоторые получают больше преимуществ от использования ассемблера AVR, который напрямую управляет регистрами и блоками микроконтроллера.

Кстати, настоятельно рекомендуем посетить сайт AVR Tutorials (если вы решили использовать микроконтроллеры AVR), чтобы прояснить ситуацию с написанием кода — по крайней мере, вы будете иметь точное представление о том, что, как и зачем вам нужно написать.

Сводка

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

dfu-программатор

dfu-programmer — это многоплатформенный программатор командной строки для чипов Atmel (8051, AVR, XMEGA и AVR32) с загрузчик USB, поддерживающий ISP. Большинство устройств Atmel, имеющих порт USB, поставляются с предварительно запрограммированным загрузчиком, и это легкая альтернатива собственной программе Atmel FLIP / BatchISP.Это в основном приложение для пользовательского пространства, совместимое с обновлением прошивки устройства (DFU) 1.0.

Топ

Выпущен dfu-programmer 0.7.2 (4 февраля 2015 г.)

Это второстепенный выпуск, исправляющий давнюю проблему с диапазонами памяти на XMega

.
  • Используйте правильные диапазоны памяти для XMega. Пространство загрузчика является дополнительным к указанному размеру устройства.

Выпущен dfu-programmer 0.7.1 (3 января 2015 г.)

Это второстепенный выпуск, в котором добавлена ​​одна экспериментальная функция и устранено несколько исправлений ошибок.

  • Добавить экспериментальную поддержку автозаполнения в Ubuntu
  • Исправить статус выхода для параметров, связанных со справкой, и улучшить последовательность запуска
  • Исправить бесконечный цикл в rpl_malloc
  • Исправить имена файлов в архиве дистрибутива

dfu-программатор 0.7.0 выпущен (02 авг 2014)

Этот выпуск содержит значительную внутреннюю переработку в нескольких областях

  • Более надежная запись EEPROM и пользовательских флеш-областей
  • Проверка пустой памяти
  • Отвал шестигранный
  • Новая команда запуска заменяет команды запуска и сброса
  • Выход состояния показывает прогресс во время программирования

Репозиторий dfu-programmer перемещен на GitHub (25 мая 2014 г.)

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

Вы можете найти новый репозиторий здесь.

загрузок будут по-прежнему размещены на SourceForge.

Топ

Вы можете скачать исходный код с страница файлов проекта. Пользователи Windows могут загрузить предварительно скомпилированный исполняемый файл, набор драйверов USB и файл справки в формате HTML. в отдельном zip-файле с той же страницы.

Топ

Контроллеры на базе 8051:

at89c51snd1c, at89c51snd2c, at89c5130, at89c5131, at89c5132

Контроллеры на базе AVR:

at90usb1287, at90usb1286, at90usb1287-4k, at90usb1286-4k, at90usb647, at90usb646, at90usb162, at90usb82, atmega32u6, atmega32u4, atmega32u2, atmega16u4, atmega16u2, atmega8u2

Контроллеры на базе AVR32:

at32uc3a0128, at32uc3a1128, at32uc3a0256, at32uc3a1256, at32uc3a0512, at32uc3a1512, at32uc3a0512es, at32uc3a1512es, at32uc3a364, at32uc3a364s, at32uc3a3128, at32uc3a3128s, at32uc3a3256, at32uc3a3256s, at32uc3a4256s, at32uc3b064, at32uc3b164, at32uc3b0128, at32uc3b1128, at32uc3b0256, at32uc3b1256, at32uc3b0256es, at32uc3b1256es, at32uc3b0512, at32uc3b1512, at32uc3c064, at32uc3c0128, at32uc3c0256, at32uc3c0512, at32uc3c164, at32uc3c1128, at32uc3c1256, at32uc3c1512, at32uc3c264, at32uc3c2128, at32uc3c2256, at32uc3c2512

Контроллеры на базе XMEGA:

atxmega64a1u, atxmega128a1u, atxmega64a3u, atxmega128a3u, atxmega192a3u, atxmega256a3u, atxmega16a4u, atxmega32a4u, atxmega64a4u, atxmega128a4u, atxmega256a3bu, atxmega64b1, atxmega128b1, atxmega64b3, atxmega128b3, atxmega64c3, atxmega128c3, atxmega256c3, atxmega384c3, atxmega16c4, atxmega32c4

Топ

Потребность в этом инструменте возникла, когда Весу Шмидту нужно было прошить at89c51snd1c, на котором был загрузчик USB, но инструмент, предоставленный Atmel (FLIP) не поддерживает USB-прошивку в Linux.

После нескольких дней поиска в Интернете и сбора окон машина для выполнения работы, он обнаружил, что Атмель предоставил документ описывая используемый протокол связи, и с радостью провел на следующей неделе взломаем старт dfu-programmer.

Топ

Список рассылки является предпочтительным способом связи.

Обновление прошивки

USB для микроконтроллеров Atmel

ОБЗОР

dfu-программатор target [: usb-bus, usb-addr] команда [параметры] [параметры]
dfu-программатор —помощь
dfu-программатор —цели
dfu-программатор —версия

ОПИСАНИЕ

dfu-программатор — многоплатформенный программист на основе обновления прошивки устройства (DFU) из командной строки для флеш-памяти микроконтроллеров на базе Atmel AVR, AVR32, XMEGA и 8051 которые поставляются с загрузчиком USB.Он поддерживает внутрисистемное программирование (ISP) для разработчиков и, возможно, обновления продукта в полевых условиях. Эти загрузчики созданы по образцу стандартного класса USB DFU 1.0. спецификации, но зависят от расширений, определенных Atmel, в той степени, в которой что стандартные драйверы DFU работать не будут.

Чтобы использовать его, сначала подключите устройство, которое нужно запрограммировать, и убедитесь, что оно появляется в режиме DFU. В том же режиме работают микроконтроллеры, поставляемые Atmel; или они могут повторно войти в этот режим после специального аппаратного сброса.Затем вызовите эту программу для выполнения одной или нескольких команд DFU. Обычно вам нужно начать с ввода команды «стереть»; политики безопасности по умолчанию предотвращают извлечение микропрограмм, чтобы предотвратить обратная инженерия того, что обычно является проприетарным кодом.

ПОДДЕРЖИВАЕМЫЕ МИКРОКОНТРОЛЛЕРЫ

Эти имена микросхем используются в качестве параметра «target» командной строки.
контроллеры на базе 8051:
at89c51snd1c, at89c51snd2c, at89c5130, at89c5131 и at89c5132.
Контроллеры на базе AVR:
at90usb1287, at90usb1286, at90usb647, at90usb646, at90usb162, at90usb82, atmega32u6, atmega32u4, atmega32u2, atmega16u4, atmega16u2 и atmega8u2.
Контроллеры на базе AVR32:
at32uc3a0128, at32uc3a1128, at32uc3a0256, at32uc3a1256, at32uc3a0512, at32uc3a1512, at32uc3a0512es, at32uc3a1512es, at32uc3a364, at32uc3a364s, at32uc3a3128, at32uc3a3128s, at32uc3a3256, at32uc3a3256s, at32uc3a4256s, at32uc3b064, at32uc3b164, at32uc3b0128, at32uc3b1128, at32uc3b0256, at32uc3b1256, at32uc3b0256es, at32uc3b1256es, at32uc3b1512, at32uc3b0512, at32uc3c064, at32uc3c0128, at32uc3c0256, at32uc3c0512, at32uc3c164, at32uc3c1128, at32uc3c1256, at32uc3c1512, at32uc3c264, at32uc3c2128, at32uc3c2256 и at32uc3c2512.
Контроллеры на базе XMEGA:
atxmega64a1u, atxmega128a1u, atxmega64a3u, atxmega128a3u, atxmega192a3u, atxmega256a3u, atxmega16a4u, atxmega32a4u, atxmega64a4u, atxmega128a4u, atxmega256a3bu, atxmega64b1, atxmega128b1, atxmega64b3, atxmega128b3, atxmega64c3, atxmega128c3, atxmega256c3, atxmega384c3

ИСПОЛЬЗОВАНИЕ

Нет механизмов для реализации группового программирования. По умолчанию первое устройство, которое соответствует идентификаторам данная цель выбрана.Многие цели имеют одинаковые идентификационные коды. Соответственно, вы обычно избегаете подключения более чем одного устройство данного семейства (AVR, XMEGA, AVR32 или 8051) одновременно.

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

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

Обратите внимание, что в отличие от программы Atmel BatchISP, dfu-programmer будет выполнять только одну операцию за раз. Стирание и программирование требуются отдельные команды.

настроить
регистр [—suppress-validation] данные Загрузчики
для контроллеров на базе 8051 поддерживают запись определенных байты конфигурации.
отвал
Считывает всю доступную флэш-память и записывает ее как двоичную. данные в стандартный вывод.
дамп-eeprom
Читает всю доступную память EEPROM и записывает ее как двоичную данные в стандартный вывод.
дамп-пользователь
Считывает флэш-память пользовательского пространства на микросхемах AVR32 и записывает ее как двоичную данные в стандартный вывод.
стереть [—suppress-validation]
Удаляет всю флэш-память. Это необходимо, прежде чем загрузчик выполнит другие команды.
вспышка [—suppress-validation] [—suppress-bootloader-mem] [—serial = шестнадцатеричные байты: смещение]
файл или STDIN
Записывает во флеш-память.Входной файл (или стандартный ввод) должен использовать файл «ihex». соглашение о формате для изображения в памяти. —suppress-bootloader-mem игнорирует любые данные, записанные в область памяти загрузчика при перепрошивке Устройство. Эта опция особенно полезна для микросхем AVR32. батут код.

—serial позволяет ввести серийный номер или другой уникальный последовательность байтов в образ памяти, запрограммированный в устройство. Это позволяет использовать один файл .ihex для программирования нескольких устройств, и по-прежнему присваивать каждому устройству свой уникальный серийный номер.Для Например, —serial = ABCDEF01: 0x6000 запрограммирует байт на 0x6000 с шестнадцатеричным значением AB, байтом по адресу 0x6001 со значением CD и т. д. на. Должно быть четное количество шестнадцатеричных цифр, но последовательность может быть любой длины. Предполагается, что смещение задано в шестнадцатеричном формате, если оно начинается. с префиксом «0x», восьмеричным, если он начинается с «0», в противном случае считается десятичным.

флэш-пользователь [—suppress-validation] [—serial = шестнадцатеричные байты: смещение]
файл или STDIN
Записывает во флеш-память пользователя на микросхемах AVR32.Этот блок вспышки выходит за рамки нормального диапазона блоков вспышки и разработан, чтобы содержать параметры конфигурации. Входной файл (или стандартный ввод) должен использовать «ihex» соглашение о формате файла для изображения в памяти.
флэш-память eeprom [—suppress-validation] [—serial = шестнадцатеричные байты: смещение]
файл или STDIN
Записывает в память eeprom. Входной файл (или стандартный ввод) должен использовать «ihex» соглашение о формате файла для изображения в памяти.
setsecure
Устанавливает бит безопасности на микросхемах AVR32.Это препятствует тому, чтобы контент был считывать обратно с чипа, за исключением того сеанса, в котором он был запрограммирован. Когда установлен предохранитель, почти ничего не будет работать без предварительного выполнения команды стирания. Единственный способ очистить После установки предохранителя необходимо использовать стирание чипа JTAG, которое также стереть загрузчик.
получить
регистр
Отображает байты различных идентификаторов продуктов.
сброс
Сбрасывает микроконтроллер с помощью сторожевого таймера.
начало
Запускает прошивку приложения с микроконтроллера. перейти к нулевому адресу.

Глобальные параметры

—quiet — минимизирует вывод

—debug level — включает подробный вывод на указанном уровне

Настроить регистры

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

BSB — байт состояния загрузки
SBV — вектор загрузки программного обеспечения
SSB — байт безопасности программного обеспечения
EB — дополнительный байт
HSB — байт безопасности оборудования

Получить регистр

bootloader-version — текущая прошитая версия загрузчика
ID1 — идентификация загрузки устройства 1
ID2 — идентификация загрузки устройства 2 Производитель
— код производителя оборудования Семейство
— код семейства продуктов
product-name — название продукта
product-revision — версия продукта
HSB — такая же, как версия configure_register
BSB — то же, что и версия configure_register
SBV — то же, что и версия configure_register
SSB — то же, что и версия configure_register
EB — то же, что и версия configure_register

ОШИБКИ

Никто не известен.

ИЗВЕСТНЫЕ ПРОБЛЕМЫ

Чипы серии at90usb не имеют защиты от чтения / записи. флаги так отвал или вспышка команда может завершиться ошибкой с менее чем полезным сообщением об ошибке.

Удалять любой защита от записи или чтения с любых чипов, требуется полное стирание чипа. Для микросхем AVR32 операция стирания через USB снимет защиту до тех пор, пока устройство перезагружается. Для более постоянного снятия защиты требуется JTAG erase (который также удалит загрузчик).

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

АВТОРСКИЕ ПРАВА

Авторское право (C) 2005-2013 Уэстон Шмидт

Эта программа является бесплатным программным обеспечением; вы можете распространять и / или изменять это в соответствии с условиями Стандартной общественной лицензии GNU, опубликованной Фонд свободного программного обеспечения; либо версия 2 Лицензии, либо (по вашему выбору) любая более поздняя версия.

Эта программа распространяется в надежде, что она будет полезной, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ; без даже подразумеваемой гарантии КОММЕРЧЕСКАЯ ЦЕННОСТЬ или ПРИГОДНОСТЬ ДЛЯ КОНКРЕТНОЙ ЦЕЛИ.Увидеть Стандартная общественная лицензия GNU для более подробной информации.

Вы должны были получить копию Стандартной общественной лицензии GNU вместе с этой программой; если нет, напишите в Бесплатное ПО Foundation, Inc., 51 Франклин-стрит, пятый этаж, Бостон, Массачусетс 02110-1301, США

Загрузчик и программатор AVR

Примечание 15 февраля 2014: Этот проект работоспособен, но я больше не занимаюсь разработкой AVR. Лучший альтернативный вариант — это Открытый проект программиста автор А.Maccione (см. Ниже), который охватывает как PIC, так и AVR экстенсивно, хотя развитие замедлилось и не продвинулось с апреля 2014.

Примечание 14 февраля 2016 г .: Некоторые дополнительные работы с AVR для проекта XBee привели к обновлению проекта до QT5.

Для микроконтроллеров AVR, контроль загрузки программ во FLASH-память и манипулирование битов предохранителя и фиксатора для настройки определенных функций микроконтроллер, можно просто сделать через параллельный порт ПК программист (см. руководство по инструментам CDK4AVR и ссылки).Многие из AVR предоставляют небольшую часть FLASH память с возможностями, которые позволяют ей изменять свою собственную FLASH объем памяти. Иногда это называют загрузочным блоком. Это обычно находится в верхней части FLASH-памяти и может быть установлен, через биты предохранителя, для разных размеров, обычно от 256 байт до 4K байтов. Микроконтроллер также можно настроить через предохранитель. бит, чтобы после сброса прыгать прямо в загрузчик раздел может быть принудительным, а не обычным переходом к адресу 0.

Для микроконтроллеров с UART, программирование может быть выполнено через последовательный порт ПК с помощью загрузчик. Это делает программирование еще проще, особенно для ПК и ноутбуки, у которых нет параллельного порта. Для тех без последовательного порта, имеющийся в продаже USB-порт для последовательного адаптер можно использовать. Осторожно: есть очень недорогие адаптеры, которые просто не работают.

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

Файлы кода и платы для этого проекта можно найти на GitHub.

АРН Загрузчик

Примечание по применению Atmel AVR109 описывает загрузчик для микроконтроллеров, у которых есть отдельный раздел загрузчика, который использует UART для связи с FLASH инструкции по программированию. Atmel также предоставляет образец код в C, который позволяет программировать флэш-память, EEPROM и биты блокировки.Примечание что загрузчик AVR109 не поддерживает программирование предохранителей, которые в целях безопасности не могут быть изменены функциями самопрограммирования AVR. Используемый протокол связи совместим с AVRPROG. программное обеспечение для программирования. После загрузки в раздел загрузчика, устройство можно настроить так, чтобы при сбросе счетчика программ запускается с загрузчика, и программное обеспечение программиста может программировать FLASH объем памяти.

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

Адаптация этого кода описанное здесь сохраняет его почти неизменным в интересах совместимость. Отключив проверку контактов порта и исключив Раздел программирования EEPROM и раздел совместимости AVRPROG, код аккуратно уместится в блок размером 1К загрузчика FLASH раздел, посвященный AVR ATMega48 / ATMega88 / ATMega168 [1]. Отключение проверки контактов порта означает, что при сбросе микроконтроллер всегда попадает в программу загрузчика (если установлен соответствующий бит предохранителя), и его необходимо явно послать снова с помощью команды выхода из загрузчика.На данный момент это приемлемо, поскольку устройство обычно работает при подключении к последовательный порт ПК. Для автономной работы потребуется булавка. доступны для реализации теста контактов порта, или соответствующий бит предохранителя, запрограммированный на запуск устройства при сбросе в позиции 0. В в последнем случае микропрограмма приложения должна управлять переходите к загрузчику, когда требуется обновление прошивки.

Хотя код AVR109 в свободном доступе, Atmel не выпустила его под открытым исходная лицензия.Таким образом, измененный код не будет предоставлен. здесь. Писать еще один загрузчик, вероятно, не стоит, так как оказывается сложно создать больше компактный код C, чем тот, что представлен в образце Atmel. Есть доступные ассемблерные версии загрузчика (например, Герберт Dingfelder), которые занимают меньше места, однако код ассемблера менее читаемый и потенциально менее переносимый, чем более высокий уровень язык. Изменения, внесенные в код AVR109, довольно просты, в основном это исправления предполагаемых незначительных недостатков:

  1. Изменить функции блочного чтения и блочной записи для добавления компилятора директива REMOVE_FLASH_BYTE_SUPPORT вокруг программирования FLASH раздел (будьте осторожны с предложениями if-else).

  2. Изменить функции блочного чтения и блочной записи для добавления компилятора директива REMOVE_EEPROM_BYTE_SUPPORT вокруг EEPROM раздел программирования (будьте особенно осторожны с предложениями if-else).

  3. Переместить команда ‘E’ вне REMOVE_AVRPROG_SUPPORT, чтобы мы могли вылезти из загрузчика в приложение.

  4. Добавить директива компилятора REMOVE_PROGPIN_TEST вокруг вывода порта проверьте раздел.Это также должно быть добавлено в конце «за» цикл, в котором выполняется переход к приложению.

  5. Скрипт preprocessor.sh может быть изменен для создания всеобъемлющего файла define.h охватывая все типы микроконтроллеров, а не использовать предложенная система вырезания и вставки. Это использует наличие переменной MMCU в avr-gcc для определения Тип микроконтроллера.

Разрешить приложению выполнить переход в загрузчик, я использовал инструкцию для включения сторожевой таймер на очень коротком тайм-ауте, чтобы заставить MCU быть сбросить, предохранители настроены на отправку его в раздел загрузчика.Похоже, возникла проблема либо со (старым) компилятором, либо с AVR, что прыжок в длину был невозможен. Это имеет то преимущество, что не требует установки точного адреса загрузчика в коде, но, конечно, предотвращает срабатывание сторожевого таймера. используется для других целей. Затем я добавил вызов wdt_disable () (из библиотеки wdt в avr-lib), чтобы отключить Сторожевой таймер при запуске загрузчика.

Это может зависеть от оптимизации, используемой компилятором.Некоторое время Набор инструментов CDK4AVR создал более компактный код, чем avr-gcc. Это может иметь сейчас поменял. Расширенные методы кодирования и оптимизации C также могут уменьшить размер кода.

Программист Приложение с графическим интерфейсом пользователя

Для поддержки вышеуказанного загрузчика программист GUI для Linux был написан на QT4 / 5 и C ++ (см. документация) . Это обеспечивает загрузка и проверка базовых шестнадцатеричных файлов, загрузка и программирование битов предохранителей / блокировок для выбранных устройств (не возитесь с этими настройками, пока не внимательно прочитали и поняли данные).Программист открывает последовательный порт (который может потребоваться изменить, чтобы он соответствовал целевая система) и синхронизируется с устройством без контроля четности, 1 стоповый бит и 8-битные данные. Отправляется символ 0xDD и символ, полученный обратно от устройства, проверяется на наличие 0xDD или «?» персонаж [2]. Последнее указывает на то, что загрузчик возможно, были найдены. Если загрузчик отсутствует, устройство, вероятно, просто перезагрузится сам. Если ни один символ не получен, скорость передачи циклически меняется через набор стандартных ставок на пару циклы.


Когда программа синхронизированный с устройством, он собирает информацию и представляет окно выше. Обратите внимание, что в отличие от avrdude, он предполагает что подключено действующее и работающее устройство AVR. Шестнадцатеричный код Intel файл можно открыть, он будет немедленно прочитан и загружен в область применения устройства FLASH.

Скорость передачи по умолчанию для начала — 38400 бод. Если это не совпадает с устройство, тогда программа будет циклически перебирать стандартные скорости передачи между 1200 и 115200 бод, пока не будет найден правильный.Этот процесс можно ускорить, изменив скорость передачи данных по умолчанию, чтобы она соответствовала что из загрузчика.

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

Программа с графическим интерфейсом полагается на вставку задержек в последовательную связь для адаптации скорость ПК до загрузчика или последовательного программатора. Также ожидая ответа от программиста, программа тайм-аут, если это длится слишком долго. Если проблемы возникают во время программирования или проверки, возможно, эти задержки необходимо повысился. Это особенно актуально, если используемая тактовая частота с MCU низкий.Программа с графическим интерфейсом пользователя была протестирована с микроконтроллером 8 МГц. тактовые частоты и связь 38400 бод.

Дополнительный были добавлены разделы, позволяющие читать предохранители и биты блокировки и изменен для ограниченного числа устройств. Программа использует байты подписи устройства, чтобы однозначно идентифицировать устройство, и вызывается соответствующее окно. Это было проверено только частично, поэтому Используйте его на свой страх и риск.


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

без графического интерфейса

начальная скорость передачи (бод) по умолчанию 19200

порт по умолчанию / dev / ttyUSB0

-w

записать шестнадцатеричный файл на устройство

-v

подтвердить

-d

режим отладки

пройти через последовательный порт на выход

-r

читать в шестнадцатеричный файл

начальный адрес для чтения (шестнадцатеричный) по умолчанию 0x0000

-e

конечный адрес для чтения (шестнадцатеричный) по умолчанию 0xFFFF

Таким образом команда:

$ avrserialprog -n -b 19200 -P / dev / ttyUSB0 -w../test/test.hex -v -d -x

будет использовать не графический интерфейс режим, начальная скорость передачи 19200 бод (только стандартные скорости от 2400 до 115200), данный последовательный порт (тот показано использование адаптера USB для последовательного порта), чтобы записать файл, показанный с помощью проверка, чтобы предоставить страницы бесполезной отладочной информации и пройти через последовательную связь в конце (чтобы ПК мог общаться без удаления программатора). Параметр -x полезно только если прилагается описанный ниже программатор.в Режим графического интерфейса пользователя, скорость передачи данных в командной строке и параметры порта могут быть используется для установки этих значений в программе, но другие параметры будут проигнорированы.

Команда:

$ avrserialprog -b 19200 -P / dev / ttyS0

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

Символ 0xDD — дополнительная функция, относящаяся к пакету. протокол, используемый при получении проект. Если это получено, то отправляется пакет, чтобы проинструктировать устройство для перехода к загрузчику.Это можно удалить, если пакетный протокол не нужен, но на самом деле он не нужен, поскольку загрузчик просто отклонит все неизвестное.

Установка

Для установки программист GUI, распаковать в каталог (который по умолчанию будет серийный программист-ПК). Используемое последовательное устройство по умолчанию (/ dev / ttyUSB0 в Linux) указывается в основной программе и относится к USB-порту для использовать с преобразователем USB в последовательный порт. Убедитесь, что QT5, qt4-designer, qmake-qt5 установлены, а также при установке Ubuntu libqt5serialport5-dev и libudev-dev.Теперь войдите в каталог serial-programmer-pc и выполнить:

$ make clean
$ qmake
$ make

Это построит заявление. Скопируйте двоичный файл в подходящее место, например / bin или / usr / bin, и проверьте с помощью:

$ avrserialprog

Обратите внимание, что он должен не требуются привилегии root, если пользователь был добавлен в группу dialout. Если он не запускается и выдает ошибку сообщение, убедитесь, что последовательная связь работает.

Также обратите внимание, что все библиотеки QT5 все равно понадобятся во время компиляции, даже если программа никогда не используется в режиме графического интерфейса. Для программиста без GUI вообще, попробуйте avrdude или uisp.

АРН Программатор аппаратных средств

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

Особенность схема состоит в том, что когда программирование целевого устройства завершено, вывод порта вывода может быть настроен для переключения последовательного связь от «ПК к программатору» на «ПК» в цель «. Это позволяет программисту оставаться на связи после программирования, когда программа целевого устройства работает нормально. Для возврата в режим программирования программист должен быть физически сброс настроек. Такой подход уменьшает необходимость возиться с заглушками во время разработка приложения.В корпусе есть два разъема SPI. схема, 10-контактный разъем, совместимый с серией ET-AVR платы, продаваемые через Futurlec, и 6-контактный поляризованный разъем. В программа поддерживает целевое программирование FLASH, EEPROM, блокировки и биты предохранителей. Исходный код программиста код предоставляется для ATTiny2313 и ATTiny4313. Обратите внимание, что Для поддержки ATTiny4313 требуется avr-gcc 4.3.5 или более поздняя версия. Версия ATTiny2313 включает файл .hex, скомпилированный с очень старая версия avr-gcc (cdk4avr от февраля 2006 г.), как и более последняя версия avr-gcc создает код, который слишком велик для пространство 1K Flash.Он также ограничен в устройствах, которые он может программа. Его можно было модифицировать для компиляции для AT90S2313 с помощью изменение MCU в Makefile и в верхней части исходного кода файл. Также предоставляется схема gEDA. схемы, показанной ниже.

Поддерживаемые устройства в настоящее время: «ATTiny26», «ATTiny2313», «ATTiny261», «ATMega48», «ATTiny461», «ATMega8535», «ATMega88», «ATTiny861», «ATMega16», «ATMega168», «ATMega32». Версия ATTiny4313 добавляет «ATTiny24», «ATTiny44», «ATTiny84», «ATTiny4313».

Другое Программисты AVR с открытым исходным кодом

Проект OpenProgrammer создан и поддерживается Альберто Maccione для серии Microchip PIC также поддерживает программирование Устройства AVR. Оборудование не ориентировано на ISP, но использует ZIF розетки для программирования устройств. Это может быть достаточно легко модифицирован для поддержки ISP.

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

Изменения:

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

13.11.2010 Обновлен код AVR для добавления дополнительных устройств и компиляции для ATTiny2313. MCU необходимо изменить в Makefile, а также в верхней части файла .c. Код теперь включает серийный номер link функции и является самодостаточным.

13/11/2010 добавлен старый AT90S2313, но пока не программируется правильно.Он не поддерживает программирование страниц FLASH и будет требуется дополнительный код в AVR для специальной обработки. Как код память слишком ограничена, она не включена в код AVR (хотя он остается в графическом интерфейсе). Устройство большего размера ATTiny4313 потребуется для поддержки дополнительного кода.

14/11/2010 The Код AVR теперь включает выходные порты SPI только при программировании. режим вводится, и возвращает их к входам, как только программирование режим выходит. Это позволяет использовать порты SPI для небольших устройства при использовании внутрисхемного программирования.

13.10.2011 Некоторый рефакторинг, чтобы убрать код, специфичный для графического интерфейса, от программиста код операций. Добавление функций для предоставления командной строки операция.

01.05.2012 Изменить перейдите к ATTiny4313 и обновите код.

19.07.2014 Перейдите на GitHub и протестируйте компиляцию последних проблем с библиотеками и инструментами.

14.02.2016 Перейдите на QT5 и используйте QSerialPort вместо qextserialport для упрощения установки.

Адаптеры для программирования AVR

ATmega128, используемый в Ethernut 1 и 2, обеспечивает интерфейсы для программирования прошивки в энергонезависимой FLASH-памяти, SPI и JTAG. К сожалению, Атмель решил использовать то же самое. разъем для обоих интерфейсов, 10-контактный штекер в коробке. Даже Хуже того, линии питания и заземления расположены на разных выводах.

Присоединение программатора SPI к разъему JTAG или тискам наоборот, по крайней мере, перегорит предохранитель на Ethernut 2 и может вызвать больше повреждений на Ethernut 1, который не защищен предохранителем.

Нажмите здесь для подробная информация о внутрисистемном программировании AVR Микроконтроллеры.

В Ethernut 3 центральным процессором является ARM7TDMI, для которого требуется разные прошивки для адаптера программирования JTAG.

SP Duo

Адаптер программирования SP Duo для микроконтроллеров AVR является коммерческим продуктом, который был разработан Встроенные творения.Его можно использовать с Ethernut 1 и 2, а также с большинством других AVR. на базе плат и подключается к последовательному порту RS232 на ПК. Прошивка защищен, но обновление возможно через зашифрованные файлы. Он поддерживает оба, SPI и целевой коннектор JTAG. Для программного обеспечения ПК это выглядит как программатор SPI, совместимый со STK500. Таким образом, отладка JTAG не поддерживается. Нажмите здесь подробнее информация о SP Duo.

зажигать в настоящее время поставляются все стартовые наборы Ethernut с включенным SP Duo.


SP Duo, подключенный к Ethernut 2.1 Rev-B.

Туртелизатор

Адаптер программирования Turtelizer основан на оборудовании SP Duo, но его прошивка была заменена программой JTAG с открытым исходным кодом. Утилита для ARM7TDMI. Его можно использовать с платами Ethernut 3. Нравиться SP Duo, он подключается к одному из последовательных портов ПК.

Проект средства программирования, включающего прошивку Turtelizer. называется JTAG-O-MAT и размещается на SourceForge.

Дополнительная информация об использовании JTAG-O-MAT / Turtelizer Доступна комбинация с Ethernut 3 здесь

Туртелизатор 2

Нажмите здесь для больше информации об этом новом устройстве.

SISP

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

alexxlab

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

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