Site Loader

Содержание

Ещё один шаг в сторону от ардуинонизации. Программы для работы с программатором

Сегодня расскажу, о недорогим и очень простом программаторе 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 ».
В качестве примера, прошью китайскую плату Arduino UNO R3 в которой установлен микросхема ATmega328P. В программе, жмем на вкладку «Микроконтроллеры » и выбираем ATmega328P.

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

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

Программирование ».

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

Микроконтроллеры фирмы 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

Опубліковано 23.02.2011

Неболшой обзор используемых на практике программаторов для микроконтроллеров AVR. AVR ISP Prorgammer и USB программатор AVR / 89S совместимый с AVR910 .

AVR ISP Prorgammer

Внутрисхемный программатор для программирования микроконтроллеров фирмы ATMEL®, как в условиях серийного производства, так и в процессе разработки и отладки изделий.

Программатор поддерживает следующие семейства кристаллов:

TinyAVR

ATtiny11L, ATtiny11, ATtiny12V, ATtiny12L, ATtiny13, ATtiny15L, ATtiny2313, ATtiny26L, ATtiny26, ATtiny28V, ATtiny28L

AT90S1200, AT90S2313, AT90LS2323, AT90S2323, AT90LS2343, AT90S2343, AT90LS4433, AT90S4433, AT90LS8515, AT90S8515, AT90LS8535, AT90S8535

MegaAVR

ATmega48, ATmega88, ATmega168, ATmega8, ATmega16, ATmega32, ATmega64, ATmega640, ATmega128, ATmega1280, ATmega1281, AT90CAN128, ATmega103, ATmega161, ATmega162, ATmega163L, ATmega169, ATmega8515, ATmega8535, ATmega2560, ATmega2561, ATmega325, ATmega3250, ATmega645, ATmega6450, ATmega329, ATmega3290, ATmega649, ATmega6490

Отличительные особенности

:

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

– поддержка программатора популярными компиляторами AVRstudio, IAR AVR, Image Craft AVR.

– автоматическая верификация (100% гарантия соответствия зашитого кода исходному)

– высокая скорость программирования, возможность прошивки серийного номера кристалла

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

Схема этого простого, но надежного программатора:

Двусторонняя плата помещается в разъем:


Мне понадобился второй программатор, а описанный ниже USB программатор не мог шить нужный мне микроконтроллер. Поэтому я решил повторить этот LPT программатор.



Компьютерные тенденции таковы, что LPT порт скоро исчезнет. Поэтому пора присмотреть альтернативу.

Программатор микроконтроллеров AVR / 89S совместимый с AVR910 (USB программатор)

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

Минус такой переделки – отсутствие предохранителя. Хотя, как показала практика, USB порт кротким замыканием спалить вряд ли удастся. По крайней мере, на моём компьютере не вышло, но экспериментировать не стоит.
Светодиод VL3 сигнализирует о подачи питания на программатор через порт USB. Светодиоды VL1, VL2 сигнализируют о чтении / записи программатора.
Джампер J1 – (MODify) служит для программирования микроконтроллера в новом программаторе. При его замыкании, к разъему ISP подключается внешний программатор и производится загрузка в МК программы.
После этот джампер необходимо разомкнуть и замкнуть джампер J2 – NORMal. Больше мы его не трогаем.
С помощью джампера J3 LOW SCK возможно понижать тактовую частоту порта SPI МК программатора до ~20 кГц. При разомкнутом джампере частота SPI нормальная, при замкнутом – пониженная.
Примечательная особенность, на вывод LED разъема ISP выведен меандр с частотой 1 МГц для “оживления” МК, у которых были ошибочно запрограммированы фьюз-биты, отвечающие за тактирование. ОЧЕНЬ полезная штука!

Прошивка FUSE BITS
Для нормального функционирования контроллера в схеме необходимо, чтобы были запрограммированы (установлены в “0”) биты SPIEN, CKOPT, SUT0 и BODEN. Обычно микроконтроллеры, идущие с завода, т.е. новые, имеют уже запрограммированный бит SPIEN. Остальные биты должны быть незапрограммированные (установлены в “1”).

Инсталляция
Windows 2000/XP/Vista/Seven 32-bit

Прошить контроллер. Подключить свежеиспеченный программатор к РС через свободный разъем USB. Операционная система найдет новое устройство – AVR910 USB Programmer, при предложении автоматически найти драйвер, отказаться, и указать путь к inf-файлу, в зависимости от установленной на вашем компьютере операционной системы.
В архиве с прошивкой имеется папка “AVR910.Driver ” в которой расположены три директории для разных вариантов операционных систем:
-“2k_xp_32 ” – для операционных систем Windows 2000/XP 32-bit (используется штатный драйвер usbser.sys)
-“vista_xp_32 ” – Для операционных систем Windows XP/Vista/Seven 32-bit (usbser.sys + lowbulk.sys от Osamu Tamura)
-“vista_xp_64 ” – Для операционных систем Windows XP/Vista/Seven 64-bit (usbser.sys + lowbulk.sys от Osamu Tamura)

Особенности установки:

В принципе, инсталляция не отличается от подобной для Windows XP, но есть одно НО – задержки в драйвере usbser.sys данной ОС портят цепочку команд от ПО на РС до программатора и, соответственно, цепь ответов обратно от программатора до ПО на РС… Проблему я пока не установил, но есть решение. Конечно не самое красивое, но работает надежно 🙂 Необходимо заменить файл usbser.sys в системных папках Windows 2000 на аналогичный от Windows XP. Это папки …\winnt\system32\drivers\ и …\winnt\system32\dllcashe\. Файл usbser.sys от Windows XP SP1 можно взять здесь. Естественно, что драйвер придется подменять загрузившись под другой ОС (например с загрузочного диска).

Чтобы использовать драйвера на 64 битной платформе, Вы должны отключить проверку цифровых подписей драйверов, нажимая функциональную клавишу F8 во время начала загрузки системы.
Второй вариант, использование программы “Driver Signature Enforcement Overrider “, которая подписывает драйвер как “testdriver” и активизирует “testmode”, таким образом, Вы можете загрузить драйвер без реальной цифровой подписи. Вы можете найти более детальное описание на странице программы, пройдя по ссылке выше.

Вот что получилось у меня:



Программатор использую с программами AVRProg v.1.4 из пакета AVRStudio. На Windows XP Работают безотказно.

Программатор устанавливается как виртуальный Com-порт. Единственно, что нужно учесть, AVRProg проверяет порты от 1 до 4. Придется в диспетчере устройств передвинуть на порт до COM4, либо в настройках AVRStudio указать по какой порт искать программатор.

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

P.S. Когда мне нужно было прошить PWM контроллеры (AT90PWM3) то пришлось это делать с помощью старого доброго AVR ISP Prorgammer (через LPT порт), AVRProg v.1.4 не знает AT90PWM3. Не определенная ситуация складывается и с ATmega64. Поэтому, основным рабочим программатором у меня остается ЛПТешный AVR ISP Prorgammer.

P.S.P.S. Не так давно знакомый купил этот USBasp программатор

Драйвера и ПО для него смотри здесь: http://www.fischl.de/usbasp/
Работает, при этом обрадовало отсутствие багов, замеченных у AVR / 89S совместимого с AVR910 (USB) программатора.

В статье описано ПО для работы с этими и другими программаторами.

В моём случае это абсолютный рекордсмен по скорости доставки — около 5 месяцев беспечного блуждания непонятно где. Несмотря на чудовищную задержку по времени, пакет я всё-таки получил, чему несказанно рад, не взирая на недочёты, о коих поведаю ниже. Поскольку у меня весьма плохая память, то нужно было объединить найденную полезную информацию где-то в одном месте в виде памятки, собирать её по крупицам в разных закоулках сети оказалось делом нетривиальным, поэтому оформлю всё это отдельным постом.
USB ISP — самый дешёвый программатор контроллеров AVR, что можно найти в продаже, брался для расширения кругозора и более углубленного изучения AVR.
Обзор в себя включает: описание программатора, как его подключить к чипу, настройку его работы в программах AvrDude Prog, Khazama, Atmel Studio 7, и не только это.

Конечно вместо него можно использовать Arduino UNO с прошитым в него скетчем ArduinoISP, но это не удобно, возня с проводами, особенно если UNO всего одна, отбивает энтузиазм. Проще было заиметь отдельно такой программатор, точнее два. По двум причинам:
1) Ещё перед покупкой уже из отзывов было понятно, что качество пайки этих устройств страдает, а некоторым ещё и с расколотыми стабилитронами они приходили. Решено было подстраховаться, заказав два.
2) Один программатор к тому же можно шить другим, переставив перемычку на ведомом устройстве.

Технические характеристики Поддерживаемые ОС: Windows, MacOS, Linux
Процессор: Atmega8A
Интерфейс подключения к ПК: USB
Интерфейс программирования: ISP (внутрисхемное)
Напряжение программирования: 5В или 3.3В (в зависимости от положения перемычки JP2)
Частота программирования: 375кГц (по умолчанию) и 8кГц (при замкнутой перемычке JP3)
Поддерживаемые контроллеры: все AVR с интерфейсом SPI
Описание:

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

ATmega серия ATmega8 ATmega48 ATmega88 ATmega168 ATmega328
ATmega103 ATmega128 ATmega1280 ATmega1281 ATmega16
ATmega161 ATmega162 ATmega163 ATmega164 ATmega169
ATmega2560 ATmega2561 ATmega32 ATmega324 ATmega329
ATmega3290 ATmega640 ATmega644 ATMEGA64 ATmega649
ATmega6490 ATmega8515 ATmega8535

Tiny серия ATtiny12 ATtiny13 ATtiny15 ATtiny26 ATTINY25
ATtiny45 Attiny85 ATtiny2313

Серия Classic AT90S1200 AT90S2313 AT90S2333 AT90S2343 AT90S4414
AT90S4433 AT90S4434 AT90S8515
AT90S8535

CAN серия AT90CAN128

PWM серия AT90PWM2 AT90PWM3

Внешний вид Комплект поставки минимальный — программатор + шлейф без резинки. В моём случае в удвоенном количестве.

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

Некоторые отверстия не целиком заполнены припоем

SMD-элементы тоже криво припаяны

Гребёнку чуть позже выровнял, уж больно неприятно на такую раскосую смотреть, элементы пропаял, а плату затем отмыл

Размеры платы несколько больше USB-TTL-конвертера на CP2102

Длина шлейфа около 30см, бытует мнение, что чем короче шлейф, тем лучше. Некоторые его специально укорачивают. Если заказать оригинальный USBASP — там комплектный шлейф уже 50см.

Органы управления на плате На плате имеются три перемычки, задающие разные режимы работы программатора:
JP1 — замыкается в случае обновления прошивки самого программатора
JP2 — тройная перемычка, здесь выбирается, какое напряжение будет подаваться на прошиваемый микроконтроллер, либо 5В (левое положение) и 3.3В (правое положение)
JP3 — если её замкнуть, то программирование контроллера будет происходить с пониженной частотой, однако китайцы не стали сюда впаивать гребёнку, т.к. на данной прошивке она не требуется
Программатор, как можно заметить, построен на базе Atmega8 с кварцем на 12МГц. Самый правый верхний элемент, подписанный F1, с перевёрнутой цифрой 4 — самовосстанавливающийся предохранитель, защищает USB-порт ПК/ноутбука, если на прошиваемой плате вдруг произошло короткое замыкание. Под перемычкой JP2 находится LDO-стабилизатор 662К , понижающий напряжение с 5В до 3.3В, если перемычка установлена в правое положение.

Установка драйверов Чтобы начать пользоваться программатором, необходимо сперва поставить на него драйвера. Вставляю любой программатор в USB-порт ПК, звучит сигнал о новом оборудовании, на самом девайсе горит светодиод, но автоматического поиска драйверов не происходит.
примечание. перед установкой драйвера необходимо отключить проверку цифровой подписи в Windows
1) Скачать , распаковать в удобное место.
2) Зайти в «Диспетчер устройств», например навести курсор на главную кнопку (Win10), нажать ПКМ и выбрать пункт «Диспетчер устройств».

3) В ветке «Другие устройства» можно увидеть неопознанное устройство USBASP с оранжевым треугольничком — > навести на него курсор, нажать ПКМ -> «Обновить драйверы…»

4) Указать путь до раннее распакованной папки с драйверами — «libusb_1.2.4.0», нажать «ОК»

5) «Всё равно установить этот драйвер»

6) Готово, теперь оранжевый треугольничек пропал, драйвера поставлены

Прошивка собрата Мне уже было известно до этого, что китайцы продают эти программаторы с не самой свежей прошивкой. Решил сперва обновить прошивку на одном из них, а затем ради интереса сравнить оба программатора в работе. Для этого соединяю шлейфом оба устройства, на ведущем (который вставляю в USB-порт) никакие перемычки не трогаются, а на ведомом программаторе (на котором будем обновлять прошивку) я переставил перемычку с JP2 на JP1 :

Захожу в программу Khazama AVR Programmer, выбираю из выпадающего списка ATmega8 и сперва считаю Flash-память через пункт меню «Command» -> «Read FLASH to Buffer», чтобы cохранить китайскую заводскую прошивку у себя. На всякий случай.

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

Идёт считывание, которое завершается всплывающим окном об успешном считывании FLASH-памяти в буфер

Теперь нужно сохранить содержимое буфера: «File» -> «Save FLASH Buffer As…». Выбрать удобное место, куда старая прошивка сохранится, дать имя (я например её назвал firmware_1) и дописать расширение *.hex — если его не писать, то она сохранится как просто файл без расширения.

Скачиваю прошивку для программатора с странички, архив usbasp.2011-05-28.tar.gz (в этом же архиве есть драйвера для Windows, распаковываю содержимое в удобное место.
Тем временем в Khazama загружу скачанную прошивку в буфер. «File» -> «Load FLASH File to Buffer». Выбираю прошивку, где в названии написано atmega8, поскольку прошиваемый программатор на этом чипе.

Как видно, здесь три прошивки — для Atmega8, 48 и 88. В нашем случае Atmega 8 — её и выбираю.

Прошиваю. «Command» -> «Write FLASH File to Buffer». Снова возникает ошибка, но после идёт процесс, завершающийся успехом.



Поскольку в обычном понимании «запрограммировать» означает выставить 1, то при работе со фьюзами всё ровно наоборот, от чего возникает путаница и в этом случае можно по неосторожности заблокировать контроллер и прошить потом его будет уже нельзя. Программа Khazama AVR Programmer удобна просмотром фьюз-битов — там наглядно видно и расписано , какие из них установлены, а какие нет.

Находятся они по пути «Command» -> «Fuses and Lock Bits…», откроется окно:

Где по нажатии кнопки «Read All» считаются фьюз- и лок-биты, а пресловутая ошибка успеет вылезти аж 5 раз подряд. Ошибки сыпятся именно на заводской китайской прошивке. Но если вставить в USB-порт недавно прошитый программатор, прошивкой скаченной по ссылке выше, то этих ошибок вылазить уже не будет, однако баги вылезут в другом месте, но о них позже.

Связь с платой Pro Mini (Atmega 168, 3.3V/8MHz) В этом случае выводы программатора соединяются с выводами платы Pro Mini, как проиллюстрировано на схематичном рисунке ниже. Перемычки не переставляются, т.е. остаётся в положении 5В.
Несмотря на то, что плата Pro Mini подписана как 3.3В, на 168-ю Атмегу можно подавать и 5В. Стабилизатор AMS1117 на 3.3В кстати вообще выпаян из платы.

AVRDUDE PROG 3.3
Консольная программа для прошивки микросхем, своего графического интерфейса не имеет, в стоке работает из командной строки, но энтузиастами было написано немало оболочек на неё, для удобства работы с ней. Одна из таких оболочек называется AVRDUDE PROG, созданная русскоязычными разработчиками. Эта оболочка, на мой взгляд удобна как раз для Flash-перепрошивки МК. После её запуска выбирается контроллер, в данном случае Atmega168 и тип программатора — USBasp. После чего можно заниматься записью/считыванием памяти. Что на заводской прошивке, что на новой — в обоих случаях никаких проблем с общением с Atmega168 не возникло. Прошил ради интереса ардуиновский стандартный blink-скетч, экспортированный в бинарный HEX-файл. Всё гладко.


Khazama AVR Programmer
Здесь достаточно выбрать микроконтроллер из выпадающего списка и можно уже работать с памятью/битами.
Однако если на самом программаторе установлена заводская прошивка, периодически будут сыпаться ошибки, о чём выше уже было упомянуто, на новой прошивке — данных ошибок уже нет.

Связь с контроллером ATtiny13A в корпусе SOIC8 Соединение согласно схеме ниже. Но тут всё немного интереснее.

Поскольку голый чип в SMD-корпусе SOIC8, в данном случае я поместил его в переходник SOIC8-DIP8 для удобства соединения с программатором в дальнейшем. Обзор на этот переходник можно почитать .

AVRDUDE PROG 3.3
Тут выбирается из списка одноимённый контроллер, программатор USBasp и, если программатор прошит заводской китайской прошивкой, то все операции проходят ровно и гладко. Однако стоит заменить программатор на другой, с обновлённой прошивкой, то при любой операции возникает ошибка.

Появляется она из-за того, что ни программа, ни программатор не могут автоматически перейти в режим медленного программирования, необходимый для ATtiny13. Но есть как минимум два выхода:
1) Железный: замкнуть перемычку JP3

2) Программный: отредактировать файл «programm.ini» в папке с программой AVRDUDE PROG 3.3


Внести туда четыре строчки кода и сохранить. (взято )
progisp=jtag2pdiportprog=COM1portenabled=1 progisp=Usbasp -B 3 portprog=usb portenabled=0

Примечание. Здесь применён ключ «-B», который и занимается переводом программатора на пониженную частоту программирования. Значение «3» — время в микросекундах

После этого снова запустить AVRDUDE PROG 3.3 и в выпадающем списке программаторов выбрать UsbaspSpeed. Теперь работа с ATtiny13 на программаторе с новой прошивкой будет уже без ошибок, а перемычку JP3 замыкать больше не потребуется в этом случае.

Khazama AVR Programmer
Выбирается контроллер из списка и почти та же ситуация.

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

Но стоит замкнуть перемычку JP3 , и можно спокойно работать


Или просто задать частоту работы из выпадающего списка по пути «Command» -> «Programm Options», я выставил частоту 187.5кГц.

Примечание. Частота программирования должна быть меньше тактовой частоты прошиваемой микросхемы не менее, чем в 4 раза. Но если посмотреть на считанные с ATtiny13 фьюзы, то на последней строчке Int.Rc.Osc. указано 9.6МГц.
Как минимум, у новичка возникнет вопрос — почему на выставленных в KHazame 1.5МГц — появляется та же ошибка? А также почему, если в AtmelStudio написать например код мигания светодиода с частотой раз в секунду и в макросе прописать:
#define f_cpu 9600000 то загрузив код на Attiny13, светодиод будет мигать очень медленно?
— посмотрим на предпоследнюю строчку, где Divide Clock by 8 Internally — это включенный предделитель частоты, который делит эти 9.6МГц на 8, и поэтому реальная частота чипа здесь — 1.2МГц. Поэтому при выборе частоты 187.5кГц или меньше, ошибки исчезают и можно работать нормально с контроллером.

Примечание 2. Способ с выбором частоты в KHazame по скорости работы в несколько раз выигрывает у метода с физическим замыканием перемычки JP3, потому как в последнем случае частота понижается до 8кГц.

Интеграция программатора в Atmel Studio 7 Atmel Studio — среда разработки от фирмы Atmel, но напрямую работать с USBASP, тем более китайским, она не может. Однако благодаря той же программе AVRDUDE, входящий в состав пакета AVRDUDE PROG 3.3, которая будет играть здесь роль посредника, можно соорудить «костыль», а уже в самой среде затем добавить возможность прошивать МК, подключенный через USBASP.

Сперва нужно запустить среду, предполагается, что некий код у нас уже написан и собран. В моём примере это простая мигалка светодиодом — Blink.

На верхней панели инструментов выбрать «Tools» — «External Tools…»

Откроется небольшое окно, нажать «Add»

В самом верхнем поле «Title:» ввести любое удобное название, я написал «Atmega168», т.к. та конфигурация, что приведу чуть ниже относится конкретно к этому контроллеру, и для любого другого контроллера она настраивается индивидуально.
В большом поле наверху, название инструмента будет автоматически продублировано.

Вторая строка, поле «Command:» — здесь нужно указать путь до файла «avrdude.exe», который находится в папке с вышерассмотренной программой

Третья строка, поле «Arguments:» необходимо ввести собственно саму конфигурацию

Конфигурация для Atmega168

P m168 -c usbasp -P usb -U flash:w:$(ProjectDir)Debug\$(TargetName).hex:a
-p — наименование контроллера
-с — какой программатор
-P — порт, через который будет заливаться прошивка
-U — какая операция с какой памятью будет производится (в данном случае запись во Flash)
Если нужно настроить для другого МК, то параметр «m168» нужно изменить на соответствующий контроллер, который будет прошиваться. Например «m8» для Atmega8 или «m328p», если Atmega328p. Параметры для других МК смотрите — также там найдёте описания ключей AVRDUDE.

Конфигурация для ATtiny13


После заполнения полей нажать «Apply» и «ОК». Окно закроется

Теперь, если снова кликнуть по «Tools», там появится только что созданный инструмент. И по нажатии по нему откомпилированный код будет автоматически прошит в контроллер.

Но эта операция происходит в два клика, что не очень удобно. Надо вынести этот инструмент на главную панель инструментов, чтобы он был всегда на виду.
Для этого нужно снова зайти в «Tools», затем кликнуть по пункту «Customize…»
Откроется следующее окно:

Перейти во вкладку «Commands» — нажать кнопку «Add Command…»

Ещё одно окно появится. В нём — в левой колонке выбрать «Tools», а в правой колонке выделить «External Command 1». Нажать «OK»

«External Command 1» окажется наверху списка, и, обратите внимание на саму панель инструментов — в интерфейсе появился пункт «Atmega168».

Но как мне кажется, место ему отведено не совсем удачное, желательно его сдвинуть вправо, для этого нажимается кнопка «Move Down» (одно нажатие = сдвиг на одну позицию вправо). После этого можно закрывать окно по кнопке «Close» и шить чип прямо из студии в один клик через обозреваемый программатор.


При перепрошивке чипа таким методом, на секунду появляется консольное окно AVRDUDE. Но может возникнуть необходимость как-то сохранить этот лог для дальнейшего его просмотра — тогда в окне «External tools» нужно поставить галку на «Use Output window».

И теперь лог будет отображаться в окне вывода, что внизу программы ATmel Studio 7. Данная галка может задаваться отдельно для каждого добавленного в «External tools» контроллера.

Дополнение по фьюзам программатора Из документа READMI, идущего в комплекте с драйверами и прошивкой для USBASP, позже выяснилось, что разработчик рекомендует выставить определённую конфигурацию фьюз-битов, определяющих работу внешнего резонатора.
Минусом khazam»ы является то, что в окне со фьюзами не отображаются HEX-значения выставленных битов. Это уже можно посмотреть в AVRDUDE PROG. Заводские фьюзы, выставленные китайцами, выглядят так (обязательно поставить точку «инверсные» — выделил синим прямоугольником ):

Это нужно снять две галки с «BODEN» и «SUT1» (выделено красным овалом),
поставить две галки на «CKOPT» и «SUT0» (выделено зелёным прямоугольником),
справа в колонке при этом будут отображаться HEX-значения изменённых битов (выделено жирным красным прямоугольником): Lock Byte: 3F , Fuse High Byte: C9 , Fuse Low Byte: EF .

Если всё сходится, можно нажимать «программирование»

ВНИМАНИЕ. Злой фьюз-бит RSTDISBL — не трогать ни в коем случае, иначе его установка заблокирует контроллер и прошить потом через USBASP его уже будет нельзя.
_____________________________________

Выводы Опробовано, работает. Если khazam не планируется использовать, то в обновлении прошивки для программатора — смысла нет, благо и так прекрасно работает, причём в случае с ATtiny13 никаких правок и перемычек вносить не требуется. Последняя прошивка — почему-то оказалась более капризна в этом плане. Единственное, после получения, плату надо пропаять и отмыть.

Список ссылок

В данной статье мы опишем „шаг за шагом” этапы изготовления USBasp программатора для микроконтроллеров AVR . В отдельных статьях приведем описание установки драйверов для операционных систем Windows XP и Windows 7 (x64/x86). В конце поста размещена ссылка с необходимой документацией для изготовления программатора USBasp своими руками.

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

Основные характеристики программатора USBasp

  • Работает с несколькими операционными системами – Linux, Mac OS X и Windows – включая Windows 8!
  • Не требует внешнего питания.
  • Умеет программировать со скоростью вплоть до 5kB/s
  • Есть вариант (Switch 2) снижения скорость программирования – для процессоров с кварцем меньше 1,5 Мгц
  • Обеспечивает напряжение для программирования (Switch 1) 5 вольт
  • Указание работы программатора с помощью светодиода

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

  1. Выбор схемы/рисунка печатной платы
  2. Перенос рисунка печатной платы на фольгированный стеклотекстолит
  3. Травление печатной платы в растворе хлорного железа
  4. Сверление отверстий
  5. Монтаж элементов (пайка)
  6. Программирование Atmaga8 программатора
  7. Подключение программатора к компьютеру
  8. Установка драйверов – Windows XP, Windows 7
  9. Выбор программы с поддержкой USBasp

Существует много версий USBasp программатора, но все они основаны на главной схеме, автором которой является Thomas Fischl . Прошивка микроконтроллера программатора также является его авторством.

Оригинальная схема программатора:

В данном случае за основу была выбрана оригинальная схема. Поскольку использование перемычек в оригинальной схеме не совсем удобно, было принято решение использовать DIP переключатели. Так же были изменены некоторые значения резисторов.
Более того, в оригинальной схеме линии TxD и RxD выведены на разъем ISP, хотя это не нужно (точнее не используются на практике).

Ниже приведена схема с внесенными изменениями:

Строительство USBasp программатора

Существует много версий печатной платы данного программатора, некоторые можно найти на официальном сайте USBasp. Однако, была сделана своя на основе выше представленной схемы.

К сожалению, из-за применения DIP переключателей, рисунок платы стал немного сложнее, что привело к применению 2 коротких перемычек, с целью чтобы печатная плата была по-прежнему односторонней.

Ниже результат печатной платы:

Как видно на рисунке, в программаторе не применялись SMD элементы. Пустое пространство на плате „залито” полем массы, главным образом для того, чтобы не вытравливать большое количество меди, а также снизить влияние помех на программатор.

Список элементов используемых в USBasp программаторе:

  • R1: 10к
  • R2: 180
  • R3: 100
  • R5, R6: 68
  • R7: 2к2
  • C1, C2: 22п
  • C3: 10мк
  • C4: 100н
  • LED1: Красный светодиод на 20мА
  • LED2: Зеленый светодиод на 20мА
  • D2, D3: стабилитроны на 3,6В
  • X1: Разъем USB, тип B
  • SV1: Гнездо под разъем IDC-10
  • Q1: Кварц 12МГц, корпус HC49-S
  • SW1: Dip переключатель трехпозиционный
  • IC1: Atmega8 (ПРИМЕЧАНИЕ: Не следует использовать микроконтроллер Atmega8 — PU из-за его ограничение максимальной тактовой частотой до 8 МГц!)

Перенос рисунка печатной платы USBasp программатора на стеклотекстолит выполнен с помощью метода ЛУТ (). Как это делать описывать не будем, поскольку данной информации в сети много.

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

Следующий этап – вытравливание платы в растворе хлорного железа. Во время травления желательно поддерживать температуру раствора не ниже 40 C, поэтому банку с раствором погружаем в горячую воду:


После завершения процесса травления необходимо удалить тонер ацетоном.

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

Готовые к печати (в формате PDF) рисунок печатной платы находится в конце статьи. Вы также можете найти несколько вариантов на официальном сайте проекта.

Первый запуск USBasp программатора

Теперь, когда все детали спаяны, остается только «прошить» микроконтроллер Atmegę8 самого программатора. Для этого нужен отдельный программатор, это может быть, например, STK 200 (LPT порт), STK500 и т. д. LPT программатор подключается к USBasp через разъем IDC-10.

Обратите внимание, что распределение пинов в разъеме оригинального программатора (USBasp) находится справа, в то время как в версии, описываемой в этой статье – слева:

Распределение, показанное на рисунке справа, соответствует тем, которые применяет компания Atmel в своих оригинальных программаторах. Такое распределение уменьшает риск возникновения помех во время программирования в случае применения длинных проводов от программатора к контроллеру, так как каждая сигнальная линия экранирована массой, кроме MOSI.

На время программирования включите режим SELF путем переключения DIP переключателя № 3 в положение ON. Благодаря этому появляется возможность запрограммировать Atmega8. После завершения программирования, положение переключателя (3) должна быть переведено в состоянии OFF.

Последнюю версию прошивки можно скачать с официального сайта. Рекомендуем версию для Atmega8, которая находится в архиве: usbasp.2011-05-28.tar.gz.

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

  • # для Atmega8: HFUSE=0xC9 LFUSE=0xEF
  • # для Atmega48: HFUSE=0xDD LFUSE=0xFF

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

Установка драйверов USBasp программатора

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

  • Установка драйверов для программатора USBasp под Windows XP
  • Установка драйверов для программатора USBasp Windows 7 x64/x86

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

Самой популярной программой, поддерживающей программатор USBasp, это консольная программа AVRdude. Так же существует множество производных программ, использование которых намного удобнее. Они представлены в статье Сравнение программ для поддержки программатора USBasp.

Прошивка микроконтроллера в ЦАП-ах серии AH-Dх. — audiohobby.ru

Для прошивки микроконтроллера нам понадобится USBasp программатор с переходником 10-pin to 6pin.

Для прошивки микроконтроллеров AVR мной обычно используется программа AVRDUDE.  Отличается она широким спектром поддерживаемых программаторов и микроконтроллеров. Кроме «родных» устройств от Atmel она поддерживает и любительские устройства, не поддерживаемые самой AVR Studio, к примеру используемый нами программатор USBAsp.

Сначала подключим наш программатор к ЦАП-у (в примере AH-D5). Будьте внимательны, подключаем, как показано  на картинке.

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

Далее я рекомендую установить фьюз биты в наш микроконтроллер. Обычно по умолчанию ATmega48/88 сконфигурированы на работу на частоте 1 или 8 Мгц от внутреннего генератора. Я рекомендую снизить частоту до 1Мгц, для снижения лишних помех и наводок. Конфигурация фьюзов представлена ниже.

Далее выбираем файл прошивки и нажимаем кнопку «Программирование».

При прошивке микроконтроллера работающего на частоте <= 1Мгц иногда возникает ошибка. Появляется она из-за того, программатор не может автоматически перейти в режим медленного программирования. Для перевода в медленный режим необходимо замкнуть на программаторе перемычку JP3.

Во вложении вы можете скачать архив с AVRDUDE и драйвера к программатору.

Включение BOD (Brown-out detection)

Также можно отказаться от внешнего супервизора, так как ATmega48/88 имеют встроенную схему обнаружения пониженного напряжения (BOD), которая контролирует уровень напряжения питания. Для установки уровня 2.7в установите «Fuse Hight Byte» как показано на изображении ниже:

Возможные проблемы

1) Я рекомендую выполнять прошивку, когда МК запитывается от своего стабилизатора на плате устройства (без подачи внешнего питания с программатора на ЦАП, джампер выбора питающего напряжения на программаторе снимается). 

Если вы все таки решили шить с подачей внешнего питания, то убедитесь, что выбрана опция 3.3в.

Кроме этого на многих программаторах с ali китайцы сэкономили на входной и выходных емкостях бортового стабилизатора 3.3в, поэтому для стабильной прошивки потребуется напаять навесом выходную емкость номиналом 0.1-1мкф, аналогично предлагаю запаять емкость прямо на переходнике 10-pin to 6pin (VCC to GND).

2) Если при прошивке получаете ошибку 

«avrdude.exe: ошибка: включение программы: цель не отвечает. 1 avrdude.exe

: ошибка инициализации, rc=-1»

а) Обновляем прошивку вашего программатора. 

или

б) Также хочу отметить, что в последнее время в ЧИП-ДИП-е продаются микроконтроллеры Atmega88PA с конфигурацией фьюзов для работы с внешним тактовым генератором. Это противоречит документации производителя для значений по умолчанию. Если закупались в указанном магазине, пытаемся подцепить внешний клок и поменять конфигурацию фьюзов.

От Arduino и wiring к AVR Studio и чистому СИ / Программирование / stD


Здравствуйте.

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

Описано будет всё (для &nbsp &nbsp), от начала и до конца, — установка и подготовка необходимого программного обеспечения, сборка простейшего программатора «Громова» (не стоит пугаться, там всего три диода и семь резисторов), прошивка МК и написание кода в AVR Studio. Весь процесс будет сопровождаться иллюстрациями и примерами.

Сразу оговорюсь, компьютер должен быть оснащен СОМ-портом (переходник USB to COM плохо работает). Если у вашего компьютера сзади нет такого разъёма, то он наверняка есть на материнской плате (в виде штырьков), тогда всё решается вот таким «выбросом»


Увы, для владельцев ноутбуков без СОМа, статья представляет лишь академический интерес.

Итак начнём…


Что понадобится?

«Софт»


UniProf — универсальная программа для прошивки различных микроконтроллеров ATmega, простая и удобная, а главное, отлично работающая с нашим программатором. Автор — российский разработчик Михаил Николаев.

Конечно, прошивать МК можно и из AVR Studio, но для этого нужен специальный программатор. Поэтому писать код мы будем в студии, а полученные hex-файлы прошивать UniProf`ом посредством нашего самодельного программатора. Помимо этого будет описан способ прошивки из командной строки.

Пользователям Linux придётся воспользоваться либо виртуалкой, либо Wine. У меня с вайном не получилось, ни в какую не видится порт, а с виртуалкой я не пробовал.

Скачать:

UniProf
Просто распакуйте в удобное место.


AVR Studio — это среда программирования, разработанная специалистами компании Atmel Corporation занимающейся производством различных микроконтроллеров (ATmega, XMEGA, MCS-51, ARM, AVR, AVR32), в том числе тех, что используются в ардуино (ATmega168, ATmega328, ATmega32u4, MEGA2560).

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

В дополнение потребуется компилятор AVR toolchain.

&nbsp В Wine работает без нареканий (Debian 8.5, wine1.6).

Скачать:

AVR Studio 4.19

AVR toolchain
Сначала установите студию, а потом t

Avr studio справка на русском. От Arduino и wiring к AVR Studio и чистому СИ. Что нового в этой версии


Здравствуйте.

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

Описано будет всё (для &nbsp &nbsp) , от начала и до конца, — установка и подготовка необходимого программного обеспечения, сборка простейшего программатора «Громова» (не стоит пугаться, там всего три диода и семь резисторов) , прошивка МК и написание кода в AVR Studio. Весь процесс будет сопровождаться иллюстрациями и примерами.

Сразу оговорюсь, компьютер должен быть оснащен СОМ-портом (переходник USB to COM плохо работает). Если у вашего компьютера сзади нет такого разъёма, то он наверняка есть на материнской плате (в виде штырьков), тогда всё решается вот таким «выбросом»

Увы, для владельцев ноутбуков без СОМа, статья представляет лишь академический интерес.

Итак начнём…

Что понадобится?

«Софт»


UniProf — универсальная программа для прошивки различных микроконтроллеров ATmega, простая и удобная, а главное, отлично работающая с нашим программатором. Автор — российский разработчик Михаил Николаев .

Конечно, прошивать МК можно и из AVR Studio, но для этого нужен специальный программатор. Поэтому писать код мы будем в студии, а полученные hex-файлы прошивать UniProf`ом посредством нашего самодельного программатора. Помимо этого будет описан способ прошивки из командной строки.

Пользователям Linux придётся воспользоваться либо виртуалкой, либо Wine. У меня с вайном не получилось, ни в какую не видится порт, а с виртуалкой я не пробовал.

&nbsp В Wine работает без нареканий (Debian 8.5, wine1.6) .

Весь софт бесплатный.

«Железо»

Эксперименты будем ставить над Arduino pro mini с микросхемой ATmega328. Частота кварца (8/16Мгц) , равно как и напряжение (3.3/5v) , не имеют значения. (см. ниже)

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

О маркировках на микроконтроллерах

После названия идут цифры, которые, чаще всего, показывают объём памяти.

Буква после цифр указывает на параметры питающего напряжения.

Нет буквы — напряжение питания контроллера находится в пределах 4,5-5,5 вольт.
L — версии контроллеров, работающих на пониженном (Low) напряжении питания (2,7 — 5,5 вольт).
V — версии контроллеров, работающих на низком напряжении питания (1,8-5,5 вольт) .
U — версии контроллеров, работающих на сверхнизком напряжении питания (0,7-5,5 вольт) .
P — малопотребляющие версии (до 100 нА в режиме Power-down) .
A — уменьшен ток потребления, перекрывается весь диапазон тактовых частот всех версий, напряжение питания 1,8-5,5 вольт (в некоторых моделях, добавлены новые возможности и новые регистры. При этом сохранена полная совместимость с предыдущими версиями) .

Микроконтроллеры «А » и «не-А » обычно имеют одинаковую сигнатуру, что вызывает некоторые трудности, так как Fuse-bit’ы отличаются.

Примеры:

ATmega8 — объем памяти программ 8 килобайт, напряжение питания — 4,5-5,5 вольт.
ATmega8L — объем памяти программ 8 килобайт, напряжение питания — 2,7-5,5 вольт.
ATtiny43U — объем памяти 4 килобайта, модификация — 3, напряжение питания — 0,7-5,5 вольт.
ATtiny44А — объем памяти 4 килобайта, модификация — 4, уменьшенный ток потребления, напряжение питания 1,8-5,5 вольт.

Бывает так, что контроллер без буквы может иметь пониженное напряжение питания (1,7 или 1,8 вольт). Это надо уточнять в даташите.

ATtiny841 — объем памяти 8 килобайт, модификация — 41, напряжение питания — 1,7-5,5 вольт.

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

Одна или две буквы идущие после частоты обозначают тип корпуса:

UniProf
Написать программу это пол дела, надо её ещё в контроллер как-то впихнуть. Вот и уделим этому побольше внимания.

Хорошо бы было, чтоб в вашу ардуину был залит стандартный Blink (с «завода» она с ним и поставляется).

Запускаем UniProf… Возможно выскочит такое окно:

Это связано с LPT-портом, так что просто нажмите ОК .

Следом откроется окно программы:

Если порт выбран не правильно, то появится окно с предложением…

Нажмите ОК и выберите нужный порт.

Если МК не определился автоматически, тогда появится окно с ручным выбором:

К сожалению в списке нету atmega328 , поэтому выбираем mega32 (у них одинаковый объём flash-памяти ) и жмём ОК .

После этого, вместо надписи unknown появится подключённый контроллер…

32K — это объём Флеш-памяти, а 1024 — объём EEPROM.

Теперь, если у вас всё как на картинке, тогда откройте справку &nbsp и внимательно ознакомьтесь с тем, что там написано. Автор был весьма лаконичен, так что много времени это не займёт. Кнопки пока не нажимайте.

Ознакомились? Отлично, теперь можем двигаться дальше. Уберите «галочку» возле EEPROM и увидите изменившийся интерфейс:

После снятия «галки» EEPROM, чтение и запись этой области памяти не производится.

Поскольку мы будем оперировать hex-файлами, то уберём «галочки» General и BIN , а так же установим «галочку» Тормоз! , это увеличит время чтения/записи, но зато повысит стабильность.

Процесс не быстрый так что придётся подождать. Внизу будет ползти синие квадратики и в правом нижнем углу отсчитываться циферки. За первый проход прочитается область PROGRAM, а за второй EEPROM.

У меня новая ардуина с зашитым в неё стандартным Blink`ом (при подключении программатора диод перестанет мигать) . Если у вас то же самое, то взору предстанет такая картина:

Справа мы видим что в EEPROM ничего нет, а слева, в PROGRAM, записанная программа (как я уже говорил, это Blink) . Теперь стрелочкой «вниз» прокрутите ползунок до того как данные закончаться…

… а теперь прокрутите до конца. Вы увидите ещё данные, — это ардуиновский bootloader.

Сейчас я предлагаю отвлечься от моей статьи и почитать про устройство МК вот , это сильно приумножит понимание материала. Написано всё очень хорошо и понятно. Ну, а как прочтёте — возвращайтесь обратно и продолжим…

Снимите «галочку» с EEPROM . Она нам особо то и не нужна, зато будет видно, что стоит «галочка» Тормоз!

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

Нажмите кнопку &nbsp и сохраните прошивку назвав её как-нибудь типа — origProMini328.hex . Всё, теперь у вас есть бекап.

… и следом нажмите уже знакомую кнопку Read . После этого Вы увидите что все ячейки в PROGRAM пустые. Удалена не только программа, но и ардуиновский bootloader.
То есть теперь вы не сможете загружать скетчи традиционным методом. Потом, если захотите, легким мановением руки восстановите всё из бекапа.

Сейчас мы прошьём контроллер таким же «Blink`ом», только написаным в AVR Studio.

Вот так выглядит код:

#define F_CPU 16000000UL #include #include #define PIN_PB5 5 // PB5 (ардуина — D13) #define PIN_PB5_PORT PORTB #define PIN_PB5_DDR DDRB int main(void) { PIN_PB5_DDR = 1 Если вы используете ардуину с кварцем на 8Мгц, то в этом нет ничего страшного, просто диод будет мигать в два раза реже.

А вот, сколько он занимает места:

AVRDude

Uniprof как и многие другие, похожие программы, являются лишь графической надстройкой над программой AVRDude (AVR Downloader-Uploader) , которая то и выполняет все выше описанные действия над микроконтроллером.
Поскольку AVRDude не имеет собственного графического интерфейса с ней нужно работать из командной строки. Кому-то это может показаться неудобным, однако всё как раз наоборот, работа из консоли просто великолепна. Удобство, проста и отсутствие привязки к какой либо ОС, ибо avrdude существует, наверно, для всего. Сейчас вы в этом убедитесь.

Для пользователей

Avrdude входит в состав AVR toolchain, поэтому установите его (предварительно установив AVR Studio) как написано в начале статьи.

Cd \
… перейдите в корень диска С .

Введя команду:

Если всё так, тогда avrdude готов к работе и можно продолжать.

Теперь нужно добавить наш программатор в конфигурационный файл avrdude (C:\Program Files (x86)\Atmel\AVR Tools\AVR Toolchain\bin\avrdude.conf ) . Откройте его в программе Notepad++ и после надписи «PROGRAMMER DEFINITIONS» добавьте вот такие строки:

Programmer id = «gromov»; desc = «serial port banging, reset=dtr sck=rts mosi=txd miso=cts»; type = serbb; reset = 4; sck = 7; mosi = 3; miso = 8; ;
Bit-banging .

Сохраните и закройте файл, он больше не нужен.

Вернитесь в терминал и дайте команду проверки связи МК с программатором:

Avrdude -n -c gromov -P com1 -p m328p
У вас может быть другой сом-порт.

Установите avrdude

Sudo apt install avrdude

Введя команду:

Вы должны увидеть справочную информацию.

Если всё так, тогда avrdude готов к работе.

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

Sudo stty 9600 ignbrk -brkint -icrnl -imaxbel -opost -isig -icanon -iexten -echo noflsh /ttyS0
Это надо делать после каждого ребута компа, ну или в rc.local добавьте.

Где /dev/ttyS0 — это com1 , /dev/ttyS1 — com2 и т.д.
В дальнейшем, в командах я буду писать /dev/ttyS0 , у вас может быть /dev/ttyS1 и т.д.

Добавьте программатор в конфигурационный файл /etc/avrdude.conf

Sudo nano /etc/avrdude.conf

После надписи «PROGRAMMER DEFINITIONS» добавьте вот такие строки:

Programmer id = «gromov»; desc = «serial port banging, reset=dtr sck=rts mosi=txd miso=cts»; type = «serbb»; reset = 4; sck = 7; mosi = 3; miso = 8; ;
Программатор использует технологию Bit-banging .

Следите за тем, чтоб при копировании, кавычки оставались именно кавычками, а то они могут изменится (из-за разницы кодировок) и avrdude будет ругаться.

Сохраните и закройте файл.

Дайте команду проверки связи МК с программатором:

Sudo avrdude -n -c gromov -P /dev/ttyS0 -p m328p

Если связь есть, то ответ будет такой:

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

Добавим к команде аргумент -v или -v -v (можно добавлять к любым командам) для вывода полной информации:

Avrdude -n -v -c gromov -P com1 -p m328p ###WIN###
sudo avrdude -n -v -c gromov -P /dev/ttyS0 -p m328p ###Linux###


Вывод avrdude, что в windows, что в linux одинаковый, поэтому далее скрины буду делать только в win.

Тут уже больше информации, например, видно какие установлены фьюзы. Здесь они выводятся в шестнадцатеричных (HEX) числах. Например hfuse 0xDA, в двоичной системе выглядит так — . То есть это те самые биты, которые выставляются «галочками» в графических интерфейсах.

Когда будете разбираться с фьюзами, помните, в микроконтроллерах ATmega фьюзы инвертированы. То есть 0 — это вкл ючено, а 1 откл ючено. В онлайн-калькуляторах из-за этого возникают непонятки (см. ниже).

Прочитаем прошивку из области flash (то же самое, что и PROGRAM в uniprof) командой:

Avrdude -c gromov -P com1 -p m328p -U flash:r:readfl.txt:h ###WIN###
sudo avrdude -c gromov -P /dev/ttyS0 -p m328p -U flash:r:readfl.txt:h ###Linux###

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

Прошивка считана и записана в файл readfl.txt . Буква h (hex) в конце, указывает на то, что данные надо записать в шестнадцатеричном формате. Если написать букву b (binary) , запишется в двоичной системе, а если r (raw) , то данные будут в «сыром» виде (крякозябры).

Отсюда и далее предполагается, что win-пользователи находятся в корне диска С (C:\) , а linux-юзеры работают из домашней папки, соответственно файлы будут сохраняться туда же (если не прописать иного пути) . Прошивки, которые будут заливаться в МК, должны лежать там же.

Для win файл будет лежать здесь C:\readfl.txt, а для linux, в /home/user/readfl.txt. Можете открыть этот файл и поглядеть.

Чтение EEPROM:

Avrdude -c gromov -P com1 -p m328p -U eeprom:r:reader.txt:h ###WIN###
sudo avrdude -c gromov -P /dev/ttyS0 -p m328p -U eeprom:r:reader.txt:h ###Linux###

Чтение flash и eeprom вместе:

Avrdude -c gromov -P com1 -p m328p -U flash:r:readfl.txt:h -U eeprom:r:reader.txt:h ###WIN###
sudo avrdude -c gromov -P /dev/ttyS0 -p m328p -U flash:r:readfl.txt:h -U eeprom:r:reader.txt:h ###Linux###

Стирание контроллера:

Avrdude -e -c gromov -P com1 -p m328p ###WIN###
sudo avrdude -e -c gromov -P /dev/ttyS0 -p m328p ###Linux###

Отключите ножку «ресет» — диод мигать не будет, программа стёрта.

Прошьём МК скаченным ранее файлом 328test.hex . Лежит в корне диска C (c:\328test.hex) в windows или в домашней папке (/home/user/328test.hex) в linux.

Avrdude -c gromov -P com1 -p m328p -U flash:w:328test.hex ###WIN###
sudo avrdude -c gromov -P /dev/ttyS0 -p m328p -U flash:w:328test.hex ###Linux###

Теперь если отключить «ресет», контроллер оживёт.

Обратите внимание. При прошивке МК через avrdude , стирать контроллер необязательно, программа делает это сама. Однако если указать параметр -D , тогда МК не будет очищаться автоматически.

Прошивка EEPROM:

Avrdude -c gromov -P com1 -p m328p -U eeprom:w:eeprom.hex ###WIN###
sudo avrdude -c gromov -P /dev/ttyS0 -p m328p -U eeprom:w:eeprom.hex ###Linux###

Чтение всех фьюзов:

Avrdude -c gromov -P com1 -p m328p -U hfuse:r:hfuse.txt:h -U lfuse:r:lfuse.txt:h -U lock:r:lock.txt:h -U efuse:r:efuse.txt:h ###WIN###
sudo avrdude -c gromov -P /dev/ttyS0 -p m328p -U hfuse:r:hfuse.txt:h -U lfuse:r:lfuse.txt:h -U lock:r:lock.txt:h -U efuse:r:efuse.txt:h ###Linux###

У каких-то контроллеров может не быть каких-то фьюзов.

Чтение только Low fuse:

Avrdude -c gromov -P com1 -p m328p -U lfuse:r:lfuse.txt:h ###WIN###
sudo avrdude -c gromov -P com1 -p m328p -U lfuse:r:lfuse.txt:h ###Linux###

Low fuse отвечает за выбор источника тактового сигнала (внутренний, внешний), его частоту и за паузу перед стартом контроллера после подачи на него питания. Сейчас у вас там записано значение — 0xff , что соответствует внешнему кварцу от 8-ми и выше МГц.

Сейчас мы прошьём другой lfuse, который переведёт вашу ATmeg`у на работу от внутреннего генератора на 8Мгц.

Avrdude -c gromov -P com1 -p m328p -U lfuse:w:0xe2:m ###WIN###
sudo avrdude -c gromov -P /dev/ttyS0 -p m328p -U lfuse:w:0xe2:m ###Linux###

Если у вас ардуина на 16МГц, то диод будет мигать в два раза медленней.
В дальнейшем, при кодинге в AVR Studio, можно указывать частоту 8 МГц, а кварц отпаять, тем самым заполучив в своё распоряжение еще два свободных цифровых пина.

Но это потом, а сейчас вернём все как было прошив прежний фьюз:

Avrdude -c gromov -P com1 -p m328p -U lfuse:w:0xff:m ###WIN###
sudo avrdude -c gromov -P /dev/ttyS0 -p m328p -U lfuse:w:0xff:m ###Linux###

Диод будет мигать правильно.

Фьюзы можно прошивать как по отдельности так и вместе:

Avrdude -c gromov -P com1 -p m328p -U hfuse:w:0xda:m -U lfuse:w:0xff:m -U efuse:w:0x05:m ###WIN###
sudo avrdude -c gromov -P /dev/ttyS0 -p m328p -U hfuse:w:0xda:m -U lfuse:w:0xff:m -U efuse:w:0x05:m ###Linux###
Эти команды давать не нужно. Привожу их для наглядности.

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

Теперь осталось разобраться с параметрами avrdude и можно будет переходить к заключительной части.

-c gromov — тип программатора, вернее название под которым он записан в конфиге (avrdude.conf) .
-P com1 — ну тут всё и так понятно.
-p m328p — обозначение тип МК.
-U — после этой опции указывается область памяти (flash, eeprom, xfuse) , над которой будет производится какие-либо действия (r — чтение, w — запись) .
Двоеточия служат разделителями.

Вот , с названиями микроконтроллеров и их псевдонимами, программаторами и прочими опциями.

Псевдонимы МК

uc3a0512 — AT32UC3A0512
c128 — AT90CAN128
c32 — AT90CAN32
c64 — AT90CAN64
pwm2 — AT90PWM2
pwm2b — AT90PWM2B
pwm3 — AT90PWM3
pwm316 — AT90PWM316
pwm3b — AT90PWM3B
1200 — AT90S1200 (****)
2313 — AT90S2313
2333 — AT90S2333
2343 — AT90S2343 (*)
4414 — AT90S4414
4433 — AT90S4433
4434 — AT90S4434
8515 — AT90S8515
8535 — AT90S8535
usb1286 — AT90USB1286
usb1287 — AT90USB1287
usb162 — AT90USB162
usb646 — AT90USB646
usb647 — AT90USB647
usb82 — AT90USB82
m103 — ATmega103
m128 — ATmega128
m1280 — ATmega1280
m1281 — ATmega1281
m1284p — ATmega1284P
m1284rfr2 — ATmega1284RFR2
m128rfa1 — ATmega128RFA1
m128rfr2 — ATmega128RFR2
m16 — ATmega16
m161 — ATmega161
m162 — ATmega162
m163 — ATmega163
m164p — ATmega164P
m168 — ATmega168
m168p — ATmega168P
m169 — ATmega169
m16u2 — ATmega16U2
m2560 — ATmega2560 (**)
m2561 — ATmega2561 (**)
m2564rfr2 — ATmega2564RFR2
m256rfr2 — ATmega256RFR2
m32 — ATmega32
m324p — ATmega324P
m324pa — ATmega324PA
m325 — ATmega325
m3250 — ATmega3250
m328 — ATmega328
m328p — ATmega328P
m329 — ATmega329
m3290 — ATmega3290
m3290p — ATmega3290P
m329p — ATmega329P
m32u2 — ATmega32U2
m32u4 — ATmega32U4
m406 — ATMEGA406
m48 — ATmega48
m48p — ATmega48P
m64 — ATmega64
m640 — ATmega640
m644 — ATmega644
m644p — ATmega644P
m644rfr2 — ATmega644RFR2
m645 — ATmega645
m6450 — ATmega6450
m649 — ATmega649
m6490 — ATmega6490
m64rfr2 — ATmega64RFR2
m8 — ATmega8
m8515 — ATmega8515
m8535 — ATmega8535
m88 — ATmega88
m88p — ATmega88P
m8u2 — ATmega8U2
t10 — ATtiny10
t11 — ATtiny11
t12 — ATtiny12
t13 — ATtiny13
t15 — ATtiny15
t1634 — ATtiny1634
t20 — ATtiny20
t2313 — ATtiny2313
t24 — ATtiny24
t25 — ATtiny25
t26 — ATtiny26
t261 — ATtiny261
t4 — ATtiny4
t40 — ATtiny40
t4313 — ATtiny4313
t43u — ATtiny43u
t44 — ATtiny44
t45 — ATtiny45
t461 — ATtiny461
t5 — ATtiny5
t84 — ATtiny84
t85 — ATtiny85
t861 — ATtiny861
t88 — ATtiny88
t9 — ATtiny9
x128a1 — ATxmega128A1
x128a1d — ATxmega128A1revD
x128a1u — ATxmega128A1U
x128a3 — ATxmega128A3
x128a3u — ATxmega128A3U
x128a4 — ATxmega128A4
x128a4u — ATxmega128A4U
x128b1 — ATxmega128B1
x128b3 — ATxmega128B3
x128c3 — ATxmega128C3
x128d3 — ATxmega128D3
x128d4 — ATxmega128D4
x16a4 — ATxmega16A4
x16a4u — ATxmega16A4U
x16c4 — ATxmega16C4
x16d4 — ATxmega16D4
x16e5 — ATxmega16E5
x192a1 — ATxmega192A1
x192a3 — ATxmega192A3
x192a3u — ATxmega192A3U
x192c3 — ATxmega192C3
x192d3 — ATxmega192D3
x256a1 — ATxmega256A1
x256a3 — ATxmega256A3
x256a3b — ATxmega256A3B
x256a3bu — ATxmega256A3BU
x256a3u — ATxmega256A3U
x256c3 — ATxmega256C3
x256d3 — ATxmega256D3
x32a4 — ATxmega32A4
x32a4u — ATxmega32A4U
x32c4 — ATxmega32C4
x32d4 — ATxmega32D4
x32e5 — ATxmega32E5
x384c3 — ATxmega384C3
x384d3 — ATxmega384D3
x64a1 — ATxmega64A1
x64a1u — ATxmega64A1U
x64a3 — ATxmega64A3
x64a3u — ATxmega64A3U
x64a4 — ATxmega64A4
x64a4u — ATxmega64A4U
x64b1 — ATxmega64B1
x64b3 — ATxmega64B3
x64c3 — ATxmega64C3
x64d3 — ATxmega64D3
x64d4 — ATxmega64D4
x8e5 — ATxmega8E5

Пользователи линукс могут воспользоваться wine.

Надеюсь у вас уже всё установлено, поэтому запускаем AVR Studio…


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


Выбираем AVR GCC , так как писать будем на СИ, а не на ассемблере.
Даём название проекту и ставим «галочки».
Выбираем Location (я создал папку AVR на диске С:\) там будут автоматически создаваться папки с проектами.
Нажимаем Next


Выбираем AVR Simulator , так как у нас нету специального программатора, позволяющего вести отладку, и наш микроконтроллер — ATmega328p .
Жмём Finish .

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

Слева — пути к проекту. По центру — текстовый редактор, в котором пишется код. Справа — регистры контроллера. Внизу-слева отладочная информация.

Из кнопочек нам пока интересны эти —

Сборка проекта.
Сборка проекта и запуск отладки.
Компиляция файла.
Очистка.
Настройка проекта. Вот её то и нажмите…

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

Теперь скопируйте код написанный в начале статьи и вставьте его в редактор:

Тактовую частоту, мы прописали в коде потому, что этого требует библиотека delay.h .

Сборка прошла успешно, ошибок и предупреждений нет.

Теперь отправляемся по пути C:\AVR\my328\default\ , находим там сотворённый нами &nbsp hex-файл — my328.hex и прошиваем его в контроллер. Чем прошивать (avrdude или uniprof) выбирайте сами.

В avrdude это будет выглядеть так:

Avrdude -c gromov -P com1 -p m328p -U flash:w:\AVR\my328\default\my328.hex ###WIN###
avrdude -c gromov -P /dev/ttyS0 -p m328p -U flash:w:my328.hex ###Linux###

Отключите «ресет» и увидите как диод мигает раз в секунду. Надеюсь, что убедил вас в простоте и удобстве командной строки.

Чтобы обратно сделать ардуину ардуиной у вас есть бекап.

Как уже было написано выше, я не буду вдаваться в объяснения работы с AVR Studio, равно как и давать уроки по языку СИ. Во-первых, это не входило в мои планы (я лишь хотел помочь осуществить переход от Arduino к AVR Studio)

Каждый человек, который только начинает осваивать программирование микроконтроллеров, да и вообще программирование, упирается сразу в несколько вопросов:
1. Какой микроконтроллер выбрать для максимально быстрого освоения?
2. Какой основной инструмент (программу) использовать для начала работы?
3. Какие аппаратные средства доступны для начала программирования?
4. Какую литературу использовать?
5. Где общаться и получать вразумительные советы?

Когда я начинал, то сам столкнулся с этими вопросами. Начал искать литературу и решил, что надо начинать с PIC -ов. Перевес в сторону PIC -ов определился из за небольшого количества команд микропроцессоров среднего семейства — всего 35 против 136 у AVR , и наличием IDE — интегрированной среды разработки MPLAB . К сожалению, до последнего времени для микроконтроллеров AVR не было удобной интегрированной среды разработки, многие пользовались AVR Studio 4 , кто то писал на C в IAR, для отладки пользовались дополнительными программами, все зависило от личных приоритетов.

В этом году компания ATMEL наконец то «родила» IDE — AVR Studio 5 для программирования микроконтроллеров AVR . Много критических замечаний было сказано в адрес этой программы, но она существует и работает, возможно, компания со временем учтет все критические замечания, и сделает программу более гибкой, совершенной и не такой большой по размеру. Конечно по объему это монстр — инсталлируемый файл занимает 600 с лишним МБайт. Но, есть в ней и определенные удобства в работе, и не только для начинающих! Программа ориентирована для работы в среде C, но ассемблер поддерживается полностью.

Итак, попробуем ответить на возникшие вопросы:

1. Выбор микроконтроллера определяется теми задачами, которые вы перед собой поставили. Микроконтроллеры AVR имеют «избыточный» набор команд, и поэтому большинство программистов используют в среднем около 40 инструкций, редко прибегая к остальным. С другой стороны, когда требуется нетипичное решение, дополнительные команды могут оказаться весьма кстати, позволяя значительно сократить объем программы.
Технология производства микроконтроллеров сегодня одинакова как для PIC так и для AVR RISC (Reduced Instruction Set Computer) — микроконтроллеры с сокращенным набором команд. Большинство из них имеют флеш-память, которая позволяет многократно их перезаписывать. Кроме этого микроконтроллеры AVR работают в 4 раза быстрее микроконтроллеров PIC .

2. Для начала, чтобы начать писать программы, нужно скачать интегрированную среду разработки AVR Studio 5
(Прямая ссылка на , будет работать, пока не смениться билд.)
А чтобы наглядно видеть результат своей работы, не используя паяльник или макетную плату достаточно установить программу Proteus v7.7

3. AVR Studio 5 поддерживает программатор STK-500 , инструкции по сборке которого, можно легко найти в просторах всемирной паутины.

5. Советы вы можете получать на любом форуме, где так или иначе затронуты темы по микроконтроллерам. Главное на форумах правильно формулировать вопросы, чтобы четко получать ответы. Абстрактные вопросы не приветствуются, и скорее всего вместо ответа вы получите жесткую критику, или ваш вопрос останется без внимания!
Скачать AVR Studio 5 можно, например, после бесплатной регистрации. Proteus вместе с патчем можно найти в Сети.

AVR Studio 5

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

Запускаем программу, после некоторого «молчания» появляется окно:


В левом верхнем углу кликаем New Project…


Выбираем наверху AVR Assembler
В строке Name: пишем имя проекта (я написал Pracsis, вы можете Praxis или что то наподобие…)
В строке Location: путь и место хранения файлов проекта (в том числе файлы.asm и.hex)
Имя проекта введенное в строке Solution name: будет выводится в меню при старте (я эту строку не трогаю, чтобы не путаться)


кликаем OK
Появляется окно выбора микроконтроллера (Device Selection)


Выбираем контроллер (я выбрал ATtiny2313A)
кликаем ОК
Появляется станица редактора

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

Корпорация Atmel анонсировала новую полностью интегрированную среду разработки ориентированную на растущее сообщество пользователей, общей численностью более 100.000 для 8 — и 32-разрядных AVR ® микроконтроллеров (MCU) для встраиваемых приложений. Новый продукт Atmel AVR Studio 5 является расширенной версией популярной среды разработки Atmel с поддержкой всех 8 — и 32-разрядных AVR микроконтроллеров, что позволяет вести разработки значительно более эффективно, и осуществлять плавный переход между 8 и 32-разрядными микроконтроллерами AVR.

AVR Studio ® 5 делает редактирование и отладку исходного кода проще, сочетая редактор для написания кода, мастера для быстрого создания новых проектов, библиотеки готовых проектов (более 400), GNU C / C + + компилятор, мощный симулятор, и визуализированный интерфейс для всех AVR программаторов и внутрисхемных отладчиков. AVR Studio 5 объединяет в себе лучшие черты текущих версий AVR Studio4 для 8-битных и 32-разрядной версии AVR32 Studio в одной среде, которая охватывает все 8-и и 32-разрядные микроконтроллеры AVR. Она также дает пользователю легкий доступ к онлайн-документации, включая datasheet, руководство пользователя и примеры проектов. AVR Studio 5 также предусматривает подключение плагинов сторонних разработчиков.

Интегрированная в AVR Studio 5.0 Software Framework , библиотека в исходных кодах для 8-разрядных AVR XMEGA ® и 32-разрядных микроконтроллеров AVR UC3 с более чем 400 полных примеров приложений и полным набором драйверов для периферии и внешних компонентов, стеки для проводной и беспроводной связи, аудио декодирование, графический рендеринг, и математические библиотеки для операций с фиксированной и плавающей точкой позволяют ускорить разработку новых приложений, избавляя от необходимости писать до 50 процентов исходного кода в проекте.

“Программисты нуждаются в интегрированных, интуитивно понятных средствах разработки”, сказал директор по развитию AVR инструментальных средств и «Atmel AVR Studio 5 полностью соответствует этим требованиям, упрощая процесс разработки и позволяя инженерам-программистам погрузиться в новый проект очень быстро с полностью примеров в источниках.

«Atmel AVR Studio 5 можно описать в трех словах: интуитивная, простая и эффективная», сказал Ингар Фредриксен , старший директор по маркетингу продуктов AVR. «AVR Studio 5 и AVR Software Framework , в сочетании с отладчиком и стартовым набором для разработки, по-настоящему является полной платформой разработки, которая поможет разработчикам воплощать свои идеи чрезвычайно быстро. Эта платформа проста в использовании и специально разработана для удовлетворения потребностей наших клиентов AVR MCU разработчиков».

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

Системные требования:

Поддерживаемые операционные системы
. Windows XP (x86) with Service Pack 3 — all editions except Starter Edition
. Windows Vista (x86) with Service Pack 1 — all editions except Starter Edition
. Windows XP (x64) with Service Pack 2
. Windows Vista (x64) with Service Pack 1,
. Windows 7 (x86 and x64)
. Windows Server 2003 R2 (x86 and x64)

Требования к оборудованию:
. Computer that has a 1.6GHz or faster processor
. 1 GB RAM for x86
. 2 GB RAM for x64
. An additional 512 MB RAM if running in a Virtual Machine
. 3GB of available hard disk space
. 5400 RPM hard disk drive
. DirectX 9-capable video card that runs at 1024 x 768 or higher display resolution

Для работы с AVR Studio 4 необходимо само собой её установить. Если она уже установлена, то можете пропустить этот шаг.

Установка:
создаешь каталог c:/avr/ – тут будут лежать рабочие программы.
создаешь каталог например c:/works/ – тут будут лежать твои работы.
надо что бы были короткие пути, что бы не было проблем с ними.

Есть вообще AVRStudio5 но и AVRStudio4 пока вполне хватает.

Вся работа будет проходить в AVRStudio4, WinAVR нужна только из-за библиотеки AVR-GCC (Для того, что бы можно было писать на Си)
НО! первым надо установить именно WinAVR , иначе библиотека AVR-GCC не подцепится.

Тут думаю разберешься.
AVR-GCC для того, что бы писать на Си
Atmel Avr Assembler соответственно для ассемблера.

Начинать разбираться с МК лучше с нуля. А это значит с Ассемблера, значит создаешь тот, который Atmel AVR Assembler.

Потом выбирай микроконтроллер Atmega8.

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

немного про содержимое этого листа

“комментарии” – это текст, пропускаемый компилятором, при компиляции.
перед началом комментария должен стоять спец символ, пользуюсь символом; “точка с запятой”, есть еще “дабл сшеш” (//),
вот примеры комментариев

/* * Комментарий такого види(многострочный), * обычно используется для * сопроводительной информции * об исходном коде, т.е. * название, разработчик и т.д. */ NOP // Такой комментарий в основном используется для пояснения назначения команды, или куска кода SLEEP ; такой комментарий тоже как и предыдущий, можно использовать для пояснения (для заметок) в коде

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

MOV R16, R17 ; два параметра INC R16 ; один параметр SEI ; без параметров

MOV R16, R17 ; три байта INC R16 ; два байта SEI ; один байт

Видите связь размера команды с параметрами?

У каждого микроконтроллера свой ассемблер, хотя мнимоника у них похожа, т.е. команда MOV у мк одной серии будет выглядеть в машинном коде допустим 0x12 а у другого 0x55.
что бы при компиляции, скомпилировалось в нужном нам коде мы должны сказать компилятору, для какого мк у нас пишется программа.
это вообще выбирается при создании проекта.
По этому мы выбрали микроконтроллер Atmega8.

Но и тут не все. для облегчения нашей жизни, в AVRStudio4 есть набор констант, которые именуются вроде как “Макроассемблер”.

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

Include «m8def.inc» // командой.include, мы подгрузили файл m8def.inc ;и теперь нам станет легче;)

в самом начале кода, ставится таблица прерываний. Что это такое и как это работает, объясню в другой заметке. Но а пока, будем писать её так:

RJMP RESET ; Reset Handler RETI; RJMP EXT_INT0 ; IRQ0 Handler RETI; RJMP EXT_INT1 ; IRQ1 Handler RETI; RJMP TIM2_COMP ; Timer2 Compare Handler RETI; RJMP TIM2_OVF ; Timer2 Overflow Handler RETI; RJMP TIM1_CAPT ; Timer1 Capture Handler RETI; RJMP TIM1_COMPA ; Timer1 CompareA Handler RETI; RJMP TIM1_COMPB ; Timer1 CompareB Handler RETI; RJMP TIM1_OVF ; Timer1 Overflow Handler RETI; RJMP TIM0_OVF ; Timer0 Overflow Handler RETI; RJMP SPI_STC ; SPI Transfer Complete Handler RETI; RJMP USART_RXC ; USART RX Complete Handler RETI; RJMP USART_UDRE ; UDR Empty Handler RETI; RJMP USART_TXC ; USART TX Complete Handler RETI; RJMP ADC ; ADC Conversion Complete Handler RETI; RJMP EE_RDY ; EEPROM Ready Handler RETI; RJMP ANA_COMP ; Analog Comparator Handler RETI; RJMP TWSI ; Two-wire Serial Interface Handler RETI; RJMP SPM_RDY ; Store Program Memory Ready Handler

После этого идет уже сам код

RESTART: ; маркер инициализации MAIN: NOP ; маркер главного цикла RJMP MAIN

Но тут есть одна (точнее не одна, а много) особенностей.

Для удобства написания кода, для его понятности и для облегчения относительных переходов, нам подарили маркеры, как они выглядят? “RESET:” и “MAIN:” это маркеры, в их именах могут содержаться почти любые символы латинского алфавита и цифры. Маркеры не могут иметь имена функций и команд, допустим “NOP”.
Как к ним переходит? Допустим командой RJMP.

Так же, из Маркеров, можно сделать подпрограмму(процедуру), по завершению которой, мы вернемся туда, от куда её вызывали. Для вызова её, используем команду “RCALL (подпрограмма)”, а что бы вернуться из Подпрограммы(процедуры), нужно закончить её командой “RET”. У нас должен получиться такой код:

RESTART: MAIN: NOP RCALL PPP1 ; вызываем подпрограмму RJMP MAIN PPP1: NOP RET ; выходим из подпрограммы

Как работает команда “RCALL”, при её вызове, адрес из какого места её вызвали, помещается в СТЕК, а по вызове команды “RET”, извлекается из регистра “стек”. СТЕК нужно инициализировать.

Что бы нам работать с нашим мк, нужно его инициализировать. т.к. мк, это устройство универсальное, в нем есть много портов ввода/вывода, и периферийных устройств. таких как УСАПП, ШИМ, ЦАП, АЦП и т.д. Первым делом в инициализации мк нужно указать начало “стека”. Инициализацию мы проводим после маркера “RESET:”.

LDI R16,HIGH(RAMEND) OUT SPH,R16 LDI R16,LOW(RAMEND) OUT SPL,R16

Если бы мы не вводили команду.include “m8def.inc” в начале кода, то нам пришлось бы писать так:

LDI R16,0x04 OUT SPH,R16 LDI R16,0x5f OUT SPL,R16

Разница существенная, на мой взгляд.

СТЕК, это память магазинного типа: (последний вошедший, выходит первым).
Магазинного типа – это не супермаркет, а рожок от автомата. надеюсь все представили как в него заряжаются патроны и как они потом от туда извлекаются.
Нужно уделять очень большое внимание памяти СТЕК, т.к. любая незначительная ошибка в работе с ним, может привести к срыву стека. Это на столько важная тема, что я решил посветить ей целую тему и напишу её в отдельной заметке.

Таким образом у нас получился такой код:

Include «m8def.inc» RJMP RESET ; Reset Handler RETI; RJMP EXT_INT0 ; IRQ0 Handler RETI; RJMP EXT_INT1 ; IRQ1 Handler RETI; RJMP TIM2_COMP ; Timer2 Compare Handler RETI; RJMP TIM2_OVF ; Timer2 Overflow Handler RETI; RJMP TIM1_CAPT ; Timer1 Capture Handler RETI; RJMP TIM1_COMPA ; Timer1 CompareA Handler RETI; RJMP TIM1_COMPB ; Timer1 CompareB Handler RETI; RJMP TIM1_OVF ; Timer1 Overflow Handler RETI; RJMP TIM0_OVF ; Timer0 Overflow Handler RETI; RJMP SPI_STC ; SPI Transfer Complete Handler RETI; RJMP USART_RXC ; USART RX Complete Handler RETI; RJMP USART_UDRE ; UDR Empty Handler RETI; RJMP USART_TXC ; USART TX Complete Handler RETI; RJMP ADC ; ADC Conversion Complete Handler RETI; RJMP EE_RDY ; EEPROM Ready Handler RETI; RJMP ANA_COMP ; Analog Comparator Handler RETI; RJMP TWSI ; Two-wire Serial Interface Handler RETI; RJMP SPM_RDY ; Store Program Memory Ready Handler RESET: LDI R16,HIGH(RAMEND) OUT SPH,R16 LDI R16,LOW(RAMEND) OUT SPL,R16 RGMP RESET MAIN: NOP ; маркер главного цикла RJMP MAIN

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

Для правильного процесса отладки, необходимо задать эмулятору частоту, с которой будет работать МК, это делается только после компиляции и запуска отладки,
значит находим в панели меню “Build”, раскрываем её и видим “Build and Run”, после чего, мы увидим желтую стрелочку на против первой команды в нашем листинге кода. Теперь мы ищем в панели меню “Debug” и нажимаем “AVR Simulator Options”, открывается такое окно:

В котором мы можем поменять МК и его частоту, так же, на панели с права, мы видим некоторую информацию о нашем МК: его максимальную частоту, объемы памяти(EEPROM, RAM, FLASH). Теперь открываем даташит на Atmega8, на странице 203 (общий список регистров) и 205 (общий список команд) и приступай к написанию своей программы.
И запомни, не бойся экспериментировать с симулятором, он от этого не сломается!

AVR Studio 4 — новая профессиональная интегрированная среда разработки (Integrated Development Environment — IDE), предназначенная для написания и отладки прикладных программ для AVR микропроцессоров в среде Windows 9x/NT/2000. AVR Studio 4 содержит ассемблер и симулятор. Также IDE поддерживает такие средства разработки для AVR как: ICE50, ICE40, JTAGICE, ICE200, STK500/501/502 и AVRISP. В ближайшие месяцы будет расширен список поддерживаемых AVR Studio 4 микроконтроллеров и средств разработки. Обо всех обновлениях можно будет узнать на интернет сайте.

AVR Studio поддерживает COFF как формат выходных данных для символьной отладки. Другие программные средства третьих фирм также могут быть сконфигурированы для работы с AVR Studio.

Окно исходного текста программ

Ключевое окно в AVR Studio это окно исходного текста программы. Когда объектный файл открыт, автоматически создается окно исходного текста программ. В окне отображается код, который выполняется в отладочном окружении (эмуляторе или программном симуляторе) а текстовый маркер всегда находится на строке, которая будет выполнена в следующем цикле.

Выполнение программ и пошаговый режим

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

Просмотр регистров

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

Список доступных окон:

  • Watch window: Окно показывает значения определенных символов. В этом окне пользователь может просматривать значения и адреса переменных.
  • Trace window: Окно показывает хронологию программы, выполняемой в настоящее время.
  • Register window: Окно показывает содержимое регистров. Регистры можно изменять во время остановки программы.
  • Memory windows: Окна показывают содержимое памяти программ, данных, портов ввода/вывода и энергонезависимого ПЗУ. Память можно просматривать в HEX, двоичном или десятичном форматах. Содержимое памяти можно изменять во время остановки программы.
  • I/O window: Показывает содержимое различных регистров ввода/вывода:
  • EEPROM
  • I/O порты
  • Таймеры
  • и т.д.
  • Message window: Окно показывает сообщения от AVR Studio.
  • Processor window: В окне отображается важная информация о ресурсах микроконтроллера, включая программный счетчик, указатель стека, регистр статуса и счетчик цикла. Эти параметры могут модифицироваться во время остановки программы.

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

В AVR Studio включена поддержка отладочных средств фирмы Atmel:

  • Внутрисхемный эмулятор Atmel ICEPRO
  • Внутрисхемный эмулятор Atmel MegaICE
  • Внутрисхемный эмулятор Atmel AVRICE
  • Внутрисхемный эмулятор Atmel ICE200
  • Внутрисхемный эмулятор Atmel AsicICE
  • Внутрисхемный эмулятор Atmel ICE10
  • Внутрисхемный эмулятор Atmel ICE30

С AVR Studio также совместимы любые программаторы и отладочные средства, которые поддерживают микроконтроллеры фирмы Atmel.

Программное обеспечение:

AVR Studio 4.12 Service Pack 4 (сентябрь 2006)
Очередное обновление популярной интегрированной среды для проектирования со встроенным ассемблером и симулятором. Четвертый пакет обновления SP4 наследовал все новые возможности предыдущих обновлений SP1, SP2 и SP3. Обновлены программа, прошивка, руководство пользователя и список поддерживаемых микроконтроллеров у AVR Dragon. Также в пакет входят новые прошивки для отладочных средств JTAGICE MKII и STK500. Включена поддержка новых типов микроконтроллеров, в т.ч.: ATmega644P, ATmega329P, ATmega3290P, ATmega325P, ATmega3250P. Устранены ошибки в работе симулятора, ассемблера и JTAGICEmkII. Обратите внимание, что AVR Studio 4 SP3 и SP4 не могут работать в составе операционной системы Windows 95.
Интегрированная среда для проектирования AVR Studio 4.12 (45Mb Ноябрь 2005 г.)
AVR Studio 4.11 Service Pack 3 (27 MB, updated Май 2005 г.)
Интегрированная среда для проектирования AVR Studio 4.11 (41Mb Январь 2005 г.)
Интегрированная среда для проектирования AVR Studio 4.10 (30Mb Сентябрь 2004 г.)
Новика! AVR Studio 4.10 с обновленным ассемблером (версия 2 beta-5 (AVRASM2)), старая версия ассемблера AVRASM1 подключена по умолчанию. Обновлен симулятор AVR Studio, который теперь также поддерживает новые микроконтроллеры AVR ATmega165, ATmega649, ATmega325, ATmega3250, ATmega3290. Обновлена программная поддержка JTAGICE2, ICE50, STK500, AVRISP, JTAGICE2. Обновлен USB WinDriver с версии 6.03 на версию 6.22.
Интегрированная среда для проектирования AVR Studio 4.09 (28Mb апрель 2004 г.)
В AVR Studio 4.09 добавлена поддержка JTAGICE mkII. В сочетании с новой версией AVR Studio JTAGICE mkII является завершенным инструментальным средством для выполнения внутрикристальной отладки всех 8-разр. AVR RISC микроконтроллеров, содержащих для этой цели интерфейс JTAG или однопроводной интерфейс debugWIRE. В данную версию также добавлена поддержка новых микроконтроллеров, а также внесено несколько улучшений.
AVR Studio 4.08 SP1 (8 Мбайт, обновлено 2/04)
Это служебный выпуск AVR Studio 4, который требует предварительной инсталляции AVR Studio версии 4.08. Он добавляет поддержку симуляции и эмуляции (ICE50) нового семейства AVR -микроконтроллеров ATMega48. Полная информация об особенностях данного выпуска приведена во включенной документации, которая доступна из меню Help в AVR Studio.
AVR Studio 4.08 (26 Мбайт, обновлено 12/03)
AVR Studio 4.08 — интегрированная среда разработки (IDE), предназначенная для написания и отладки прикладных программ для AVR микропроцессоров в среде Windows 9x/NT/2000. Обновлены трассировщик, монитор стека и поддержка усовершенствованного USB для ICE40/50. Кроме того, имеется еще ряд дополнений.
12756 Kb AVR Studio V4.0
7163 Kb AVR Studio V3.56
1.31 Mb AVR LCD Visualizer версии 1.0 (обновлено 02/2004), общедоступная бета- версия.
Создание и изменение ЖКИ при помощи редактора, отладка и визуализация при помощи дополнений к программе AVR Studio. Обновление в реальном времени при работе с ICE50 и симулятором. Поддерживает ATmega169. Для установки требует наличие IDE AVR Studio версии 4.07 или более новой. Перед установкой необходимо удалить старые ЖКИ дополнения к программе.

Тег: avr — Avislab — сайт для палких паяльників


30.10.2014

Прошивка AVR микроконтроллеров с помощью Raspberry Pi
(на русском языке)

А чому не спробувати прошити мою ATmega за допомогою Raspberry Pi? Така думка стрельнула мені в голову, коли я зробив невеличку плату розширення для Raspberry Pi. Raspberry Pi має протокол SPI, тому це проблема виключно програмного плану. Я відразу встановив свого улюбленого Avrdude. Про Avrdude для Windows я вже писав у статті AVRDUDE Windows. Але стандартний Avrdude не знає про ноги SPI, тому, трохи покопавшись в Інтернеті, знайшов рецепт. Існує проект https://github.com/kcuzner/avrdude , в якому avrdude допиляли для Raspberry Pi. Raspberry Pi

06.11.2014

I2C Slave. Пример для AVR микроконтроллера Atmega
(на русском языке)

I2C Шина (TWI)

I2C — послідовна шина даних для зв`язку інтегральних схем, що використовує дві двонаправлені лінії зв`язку (SDA і SCL). Використовується для з`єднання низькошвидкісних периферійних компонентів. Назва є абревіатурою слів Inter-Integrated Circuit. TWI (Two Wire Interface) або TWSI (Two Wire Serial Interface) по суті та ж сама шина I2C, але використовує іншу назву з ліцензійних причин. I2C використовує дві двонаправлені лінії, підтягнуті до напруги живлення і керовані через відкритий колектор або відкритий стік — послідовна лінія даних (SDA, англ. Serial DAta) і послідовна лінія тактування (SCL, англ. Serial CLock). Стандартні напруги живлення +5 В або +3,3 В.

Корисно знати Схеми і прошивки

11.03.2014

Сегодня мы поговорим об архаичных, но все еще не вышедших со строя вещах — о стрелках. Точнее — о стрелочных приборах. Казалось бы, в наше время — время современных технологий такой устаревший способ отображения информации, как стрелочные приборы, уходит в прошлое. Но, как ни странно, иногда заменить стрелочного «динозавра» просто нечем. Если во время управления, каким либо транспортом или механизмом необходимо обеспечить быстрое считывание информации — стрелочный прибор незаменим. Для считывания цифровой информации человеческому мозгу требуется значительно больше времени, а иногда чрезмерное отвлечение от основного процесса управления может привести к потери контроля над ситуацией. Поэтому, на приборных досках автомобилей (и не только) «стрелка» будет жить долго, хотя постепенно и вытесняется графическими дисплеями, имитирующими стрелку. Если у Вас возникла необходимость отображать информацию графическим способом, а не цифровым, Вы можете столкнуться с некоторыми проблемами. Современные графические дисплеи могут «слепнуть» на ярком солнечном свете. Линейки светодиодов не решают проблему по той же причине. Остается старая добрая «стрелка». Как же можно реализовать механическую стрелку?

Корисно знати Схеми і прошивки

27.12.2012

AVRDUDE (http://www.nongnu.org/avrdude/) — мощная программа для прошивки микроконтроллеров Atmel серии AVR. Разработчик Brian S. Dean. Программа поддерживает множество программаторов. AVRDUDE кросплатформенная. Многих, особенно начинающих, пугает тот факт, что программа консольная, и использовать ее нужно с командной строки. И напрасно, ничего сложного в этом нет.

Большинство «оконного» ПО, которое я опробовал, было убогим. Кажущаяся простота графического интерфейса не позволяла в полной мере работать с микроконтроллером. Кроме того, для каждого программатора (железяки), требовалась своя программа-программатор. Часто случалось, что ПО программатора не поддерживает нужный мне микроконтроллер. Все это породило массу неудобств. Эти проблемы ушли после перехода на AVRDUDE. AVRDUDE поддерживает огромное количество программаторов, работающих по параллельному порту (LPT), последовательному порту, USB-программаторы. Теперь у меня один AVRDUDE на все 3 вида используемых программаторов (см. Программаторы микроконтроллеров AVR).

Корисно знати Початківцям

16.07.2012

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

Корисно знати Початківцям

18.08.2011

DS1302 — это микросхема реального времени. Она обеспечивает ход времени, даже когда основное устройство отключено от питания.

Основные характеристики:

  • — простота подключения к микроконтроллеру по трехпроводному интерфейсу.
  • — питание от 2 до 5.5 В.
  • — из внешних элементов часовой кварц 32768 Гц и батарейка резервного питания 3В (я использую RC2032). Батарейки хватает надолго, микросхема потребляет около 300 нА (наноампер)!
  • — считает секунды, минуты, часы, день месяца, месяц, год, день недели. Учитываются високосные года. Микросхема сможет работать до 2100года. Дальше не хватит счетчика лет. Это, несомненно, опечалило меня. 🙂
  • — отображение времени в 12 или 24 часовом режимах с отображением AM или PM
Схеми і прошивки

28.04.2011

Основными достоинствами символьных жидкокристаллических индикаторов (дисплеев) являются простота использования, не большая потребляемая мощность, рабочие напряжения 3..5 В, долговечность (до 15 лет непрерывной работы). На данный момент очень популярны ЖКИ компания Winstar. Не то чтобы популярны, соотношение цена/качество у них наиболее приемлемое. Winstar производить широкую линейку ЖКИ в том числе и графические индикаторы, но сегодня мы говорим о символьных.  (см. также Графический дисплей WG12864A)

Схеми і прошивки

28.03.2011

Мой брат занялся микроконтроллерами. У меня есть AVR-Easy, но, во-первых, я ее зажал :), во-вторых, она большая по габаритам. Ему я сделал небольшую отладочную плату под мега популярную ATMega8.  Специально, чтобы в кармане на работу носить и в свободное время под столом чего-то мудрить. В общем, ничего особенного, пустяшная штуковина, чего про нее писать!? Но настолько удачная получилась, что я и решил себе сделал как мобильный боевой вариант. Делалась под имеющиеся программаторы (AVR910 USB Programmer) Вот решил поделиться. Печатная плата здесь. Схему даже не рисовал.

P.S. Сергей Федоров прислал простую отладочную плату для Mega16 на борту RS-232, питание от программатора.

Початківцям Схеми і прошивки

24.02.2011

В Микроконтроллерах Atmel есть интерфейс UART. Фактически это тот же RS-232, но с другими логическими уровнями. Используя его подключим наш микроконтроллер к компьютеру.

Початківцям Схеми і прошивки

23.02.2011

Неболшой обзор используемых на практике программаторов для микроконтроллеров AVR. AVR ISP Prorgammer и USB программатор AVR / 89S совместимый с AVR910.

Початківцям Схеми і прошивки

21.02.2011

Одна из самых полезных книг. Очень подробные и понятные описания. Множество примеров на C. Краткое оглавление: Глава 1. Архитектура Микроконтроллеров AVR и PIC Глава 2. Компиляторы и средства разработки Глава 3. Язык С и директивы препроцессора Глава 4. Программные примеры для микроконтроллеров AVR Глава 5. Программные примеры для микроконтроллеров PIC Приложение А. Таблица символов ASCII Приложение Б. Преобразование из одной системы счисления в другую Приложение В. Система команд микроконтроллеров AVR Приложение Г. Система команд микроконтроллеров PIC Приложение Д. Библиотечные функции и макроопределения

Скачать

Книги про електроніку

21.02.2011

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

Скачать

Книги про електроніку

Программатор USBASP — Инструменты — AVR project.ru

  Решил заменить свою рабочую лошадку STK200+PonyProg, на нечто более современное, легко собираемое и обязательно поддерживающее подключение по USB. Выбор пал на хорошо зарекомендовавший себя программатор USBASP, мозгом которого служит микроконтроллер Atmega8 (так же есть варианты прошивки под atmega88 и atmega48) . Минимальная обвязка микроконтроллера позволяет собрать достаточно миниатюрный программатор, который всегда можно взять с собой, как флэшку. Еще одним плюсом программатора является то, что благодаря большой популярности он приобрел поддержку во многих средствах разработки, в том числе и в Bascom-AVR начиная с версии 1.11.9.6. И поэтому консольность программы, с которой он работал первоначально, перестала быть отпугивающим моментом для начинающих.
 

  Схема программатора USBASP под микроконтроллер Atmega8 в корпусе TQFP32 приведена ниже (обратите внимание, что распиновка микроконтроллера отличается от распиновки в корпусе DIP):

  Перемычка J1 применяется, в случае если необходимо прошить микроконтроллер с тактовой частотой ниже 1,5МГц. Кстати, эту перемычку вообще можно исключить, посадив 25 ногу МК на землю. Тогда программатор будет всегда работать на пониженной частоте. Лично для себя отметил, что программирование на пониженной скорости на доли секунды дольше, и поэтому теперь перемычку не дергую а постоянно шью с ней.

  Светодиод blue показывает наличие готовности к программированию схемы, red загорается во время программирования.
Контакты для программирования выведены на разъем IDC-06, распиновка соответствует стандарту ATMEL для 6-и пинового ISP разъема:

 

  На этот разъем выведены контакты для питания программируемых устройств, здесь оно берется напрямую с USB порта компьютера, поэтому нужно быть внимательным и не допускать кз.
Этот же разъем применяется и для программирования управляющего микроконтроллера, для этого достаточно соединить выводы Reset на разъеме и на мк (см. красный пунктир на схеме). В авторской схеме это делается джампером, но я не стал загромождать плату и убрал его. Для единичной прошивки хватит и простой проволочной перемычки.
Плата получилась двухсторонняя, размерами 45х18 мм.
 


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


Прошивка управляющего микроконтроллера
 

Прошивать, как я писал выше, можно с разъема программирования, соединив выводы Reset микроконтроллера (29 нога) и разъема. Прошивка существует для моделей Atmega48, Atmega8 и Atmega88. Желательно использовать один из двух последних камней, так как поддержка версии под Atmega48 прекращена и последняя версия прошивки датируется 2009 годом. А версии под 8-й и 88-й камни постоянно обновляются, и автор вроде как планирует добавить в функционал внутрисхемный отладчик. Прошивку под свой тип контроллера можно скачать ниже:

Для работы устройства необходимо настроить фьюзы на внешний кварц 12МГц. В PonyProg настройка фьюзов будет выглядеть следующим образом:

  

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

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

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

  Выбираем папку где лежат дрова и жмем Далее


  Мигом появится окно с предупреждением о том, что устанавливаемый драйвер не имеет цифровой подписи у мелкомягких:


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


 

  Все, теперь программатор готов к работе. Осталось выбрать программу, посредством которой будем работать с программатором.

USBASP и Bascom

  Как писал ранее, полную поддержку USBASP в Bascom-AVR сделали начиная с версии 1.11.9.6. Попалась тут мне страничка, иллюстрирующая, как можно подружить USBASP с более ранней версией компилятора, но тогда придется ставить avrdude.

  Настройка программатора для совместной работы с Bascom-AVR происходит в пункте меню Options-Programmer, в списке программаторов выбираем USBASP


Строка конфигурации Clock Frequency служит для выбора частоты работы программатора. Помнишь про джампер который необходимо замыкать когда нужно прошить микроконтроллер с частотой тактирования меньше 1,5 МГц? Так вот, в новой версии прошивки программатора реализавана возможность программно изменять частоту работы, эту фишку и использует Bascom. Можно выбрать частоту работы в диапазоне от 500Гц до 1,5МГц, по рекомендациям частота должна быть вчетверо меньше частоты работы прошиваемого микроконтроллера. Например, если требуется прошить контроллер с тактовой частотой 1МГц, нужно ставить частоту работы не более 250кГц или, для надежной работы, еще меньше. Я оставил в этом пункте автоопределение частоты.

Khazama AVR Programmer

Еще одна небольшая программа для работы с программатором USBASP. Мне она понравилась минимальным интерфейсом и кнопочками, срисованными с PonyProg =)
 

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


 Запись фьюзов в память мк, как можно догадаться, осуществляется при нажатии кнопки Write All.
Кнопка Save сохраняет текущую конфигурацию, а Load возвращает сохраненную.

 Эта фича помогает в случаях когда нужно прошить большое количество микроконтроллеров, не нужно будет каждый раз вручную выставлять галки при каждой прошивке МК.
 Кнопка Default предназначена для записи стандартной конфигурации фьюзов, такой, с какой микроконтроллеры идут с завода (обычно это 1МГц от внутреннего RC).
 !!!! Важно !!!! Как выяснилось, если использовать эту функцию биты Lock Bits необходимо выставлять вручную.

 

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

  Ниже можно скачать архив с прошивками и печатной платой, а так же программу Khazama:

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

UPD 26.01.13

Если появятся желающие приобрести программатор USBASP на заводской плате, записывайтесь в очередь;) и делайте предзаказ! Условия на форуме http://avrproject.ru/forum/11-69-1#1307


 

UPD 5.03.13

Программатор снова стал доступен для покупки! Условия и цена приобретения выложены здесь http://avrproject.ru/index/usbasp/0-41 

Karma-SAM3S. Как прошить ARM от Atmel. Ч1

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

В этом материале я как раз расскажу, как прошить микроконтроллер SAM3S4B с помощью загрузчика на примере платы Karma-SAM3S. Описанную процедуру можно будет применить и к остальным ARM`ам фирмы Atmel, хотя могут быть небольшие отличия.

Микроконтроллеры серии SAM3S имеют встроенный загрузчик, который позволяет записывать прошивку по USB или UART0 без применения дополнительного оборудования. Загрузчик хранится в постоянной памяти (ROM) и его нельзя стереть. 

Чтобы микроконтроллер запустил при старте загрузчик, нужно кратковременно нажать на кнопку ERASE (на время большее 200 мс), а затем сбросить микроконтроллер. Это можно сделать, дергая выключатель питания или с помощью кнопки RESET. Оба варианта дадут одинаковый результат — микроконтроллер очистит флэш память, сбросит бит, определяющий источник загрузки, и при следующем запуске загрузится из ROM.

Для загрузки прошивки по USB к тактовой частоте микроконтроллера SAM3S предъявляются определенные требования. Микроконтроллер должен тактироваться от кварцевого резонатора с частотой 11,289; 12,00; 16,00 или 18,432 МГц. При загрузке прошивки по UART0 никаких требований нет. 


На плате Karma-SAM3S установлен кварц с частотой 12 МГц. С таким кварцевым резонатором плата стабильно прошивается. 

Для начала нам нужно установить на компьютер одну из утилит, позволяющих загружать прошивку. На сегодняшний день мне известно только две таких утилиты — SAM-BA и BOSSA. 

SAM-BA — это официальная программа фирмы Atmel, которая поддерживает все их ARM микроконтроллеры — SAMA5, SAM3, SAM4, SAM7 и SAM9. Скачать SAM-BA можно на сайте Atmel, но предварительно нужно зарегистрироваться. Также на сайте есть описание SAM-BA.

BOSSA — это неофициальная программа, созданная каким-то энтузиастом. Список поддерживаемых микроконтроллеров у нее небольшой, но SAM3S4B она поддерживает. Скачать BOSSA можно здесь. На сайте автора есть подробное описание BOSSA.

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

Я попробовал обе программы и пока остановил свой выбор на BOSSA. Она занимает мало места, у нее простой интерфейс и она стабильнее работает. Но SAM-BA в любом случае нужно скачать, чтобы установить USB драйвер для микроконтроллера SAM3S4B. 

Далее речь пойдет о работе в ОС Windows. 

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

Подсоединяем плату Karma-SAM3S к компьютеру по USB (этот разъем на плате подписан). Подаем питание, кратковременно нажимаем кнопку ERASE, а затем RESET. Микроконтроллер запустит загрузчик, а операционная система обнаружит новое устройство и начнет поиск драйверов. 

Драйвера лежат в папке, куда была установлена программа SAM-BA. Например у меня путь к драйверам такой: C:\Program Files (x86)\Atmel\sam-ba_2.12\drv

В идеале операционная система сама найдет нужные драйвера и через некоторое время в диспетчере устройств в разделе порты появится AT91 USB to Serial Converter. Однако, скорее всего придется указывать путь вручную. 


Для загрузки прошивки через USB-UART преобразователь, установленный на плате Karma-SAM3S, нужно поставить драйвера для микросхемы CP2102. Их можно скачать с сайта производителя — SiLabs.


Когда драйвер установлен, можно запускать программу SAM-BA. 


При запуске SAM-BA появится окно, в котором нужно выбрать порт и тип платы. Если не знаете номер порта, то его можно посмотреть в диспетчере устройств. Тип платы нужно установить такой — at91sam3s4-ek.


После нажатия кнопки Connect должно появится основное окно программы SAM-BA. Если этого не произошло или открылось окно с предупреждениями — перезагрузите микроконтроллер и снова запустите SAM-BA.


Чтобы загрузить прошивку, на вкладке Flash кажите путь к файлу и нажмите на кнопку Send File. Обратите внимание файл прошивки имеет расширение bin. 


Когда прошивка будет загружаться, откроется окно Lock region(s), которое предложит установить Lock биты для защиты флэш памяти. Нажимаем нет. 


Когда загрузка завершится, запускаем скрипт Boot from Flash (GPNVM1), чтобы микроконтроллер запускался из флэш памяти, и нажимаем на плате кнопку Reset. 

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


Чтобы повторно записать прошивку в микроконтроллер, нужно закрыть программу SAM-BA, активировать загрузчик микроконтроллера и снова запустить ее. К сожалению, без перезагрузки SAM-BA не устанавливает связь с микроконтроллером. По-крайней мере я не понял, как это сделать и поэтому она мне и не нравится. 

Устанавливаем программу BOSSA и драйвера (описано выше). 

Подключаем плату Karma-SAM3S к компьютеру, используя один из USB разъемов. Активируем загрузчик микроконтроллера и запускаем программу BOSSA. 

Нажимаем кнопку Auto-Scan, чтобы BOSSA установила связь с загрузчиком микроконтроллера. Если это удалось, то внизу программы отобразится статус «Connected» и микроконтроллер, который определился, — «ATSAM3S4». Если связь не установилась, нужно сбросить микроконтроллер и снова нажать Auto-Scan. 

Также можно выбрать последовательный порт вручную. 

Далее указываем путь к прошивке (*.bin) и нажимаем Write. Начнется загрузка. 


По окончании загрузки программа выдаст информационное сообщение «Write completed successfully». Закрываем это окошко, а затем сбрасываем микроконтроллер кнопкой RESET. Все, микроконтроллер будет выполнять записанную в него программу. 

Для повторной записи прошивки нужно активировать загрузчик микроконтроллера и нажать в программе BOSSA кнопку Auto-Scan. Если BOSSA не подключится к загрузчику с первого раза, нужно сбросить его и снова нажать Auto-Scan. Как правило, со второго раза программа устанавливает связь. 

Описание платы Karma-SAM3S
Скачать SAM-BA для ARM
Скачать BOSSA для ARM
Скачать драйвер для CP2102

Учебное пособие по

Arduino — Промышленный и профессиональный подход

Embedded C Firmware Programming на Atmel AVR 8-битный микроконтроллер Atmega328p , Разработка прошивки на уровне регистров на Embedded C для GPIO, I2C, SPI, UART, таймер, PWM, ADC, память, прерывание и многое другое…

Key Points

  • ДВИГАЙТЕСЬ К УСПЕШНОМУ РАЗРАБОТЧИКУ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
  • ИСПОЛЬЗУЕМОЕ ОБЕСПЕЧЕНИЕ> ARDUINO UNO / NANO / MEGA
  • IDE USED> PROFESSIONAL GRADE БЫТЬ НИКАКИХ БИБЛИОТЕК ТРЕТЬИХ СТОРОН
  • ТАМ БУДЕТ НЕ СЛЕДУЮЩЕЕ КОДИРОВАНИЕ C
  • ВЫ ИЗУЧИТЕ АРХИТЕКТУРА СЛОЖНОГО ПРОГРАММИРОВАНИЯ
  • ВЫ ИЗУЧИТЕ 9000 ПРОФЕССИОНАЛЬНЫХ ПРОГРАММ ПРОФЕССИОНАЛЬНЫХ ПРОГРАММИРОВАНИЙ ИЗУЧИТЕ ОТЛАДКА И СОХРАНИТЕ СТОИМОСТЬ ОТЛАДЧИКА
  • ВЫ ИЗУЧИТЕ ПРОГРАММИРОВАНИЕ УРОВНЯ РЕГИСТРА
  • ВЫ НАУЧИТЕСЬ ЗАПИСАТЬ СОБСТВЕННЫЙ ПЕРИФЕРИЧЕСКИЙ ДРАЙВЕР YOU EXIMORY LEO ВЫ БУДЕТЕ РАЗРЕШЕНО НА СДЕЛАЙТЕ СОБСТВЕННЫМ ПРОЕКТ / ПРОДУКТ

Кто может пройти этот курс?

  • Школьники, студенты, специалисты и любители.
  • Любой, кто хочет погрузиться в программирование периферийных устройств микроконтроллера на уровне регистров с использованием встроенного C.
  • Любой, кто использует Arduino и хочет узнать о его работе.
  • Всем, кто хочет создавать проекты или продукты IOT / Embedded.

Краткое описание

Этот курс в доступных и понятных подробностях объясняет внутреннюю работу микроконтроллера AVR Atmega328p и его периферийных устройств. Большинство микроконтроллеров работают аналогично, поэтому то, что вы изучаете в этом курсе, можно легко использовать для других микроконтроллеров, таких как Atmega8, 16, 32, 2560, PIC, MSP, NXP и т. Д.После прохождения этого курса вы сможете разрабатывать свои собственные проекты и продукты с использованием AVR и аналогичных микроконтроллеров.
Мы будем кодировать и проводить лабораторные эксперименты для каждого периферийного устройства подробно и шаг за шагом, а также будем разрабатывать программные драйверы полностью с нуля, используя аппаратные регистры, используя информацию из таблицы данных и справочного руководства микроконтроллера.

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

  • Средняя зарплата разработчика микропрограмм 61 118 долларов США.
  • Используется ведущими отраслями в различных сферах бизнеса. Пример: Amazon, Intel Corporation, Microsoft, Microsemi Corporation, Samsung, LG, Bosch и т. Д.

Чем этот курс отличается от других курсов Arduino?

В этом курсе мы будем использовать оборудование Arduino, которое широко доступно, недорогое и надежное, но мы не будем использовать Arduino IDE или какие-либо из ее предварительно приготовленных библиотек, которые упрощены по конструкции и ниже профессиональных отраслевых стандартов.Скорее, мы будем разрабатывать собственное превосходное программное обеспечение с нуля, используя профессиональную Atmel Studio. В процессе мы узнаем, как использовать последовательный COM-порт для отладки оборудования Arduino, у которого нет собственного отладчика. Это сэкономит вам расходы на покупку внешнего отладчика, такого как ATMEL ICE. Я расскажу о таких важных темах, как прерывание, которое вы можете использовать для создания собственного планировщика, включающего различные стандартные протоколы связи.

Плюсы использования аппаратной платы Arduino

  • Arduino Uno / Nano / Mini имеет 8-битный микроконтроллер AVR AtMega328p, а Arduino Mega имеет 8-битный AVR AtMega2560 со всем необходимым оборудованием, необходимым для запуска и работы.
  • Очень дешевое оборудование.
  • Широко доступны по всему миру.
  • Нет необходимости в отдельном дорогом программном обеспечении, внутренний загрузчик позаботится о последовательном программировании.

Минусы использования программирования в стиле Arduino

  • Arduino IDE не является профессиональной.
  • Сторонние библиотеки.
  • Нет Обучение на уровне регистров.
  • Нет информации о внутренних и встроенных периферийных устройствах микроконтроллера, таких как GPIO, SPI, UART, TIMER и т. Д.
  • Не является отраслевым стандартом и никогда не рекомендуется для дизайна продукта.

Мое обещание

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

Учебная программа этого курса

  1. Введение в курс и приветствие
    1. Введение в курс и приветствие
    2. Мотивация к изучению микроконтроллера AVR
    3. Необходимое программное и аппаратное обеспечение
  2. Настройка программного и аппаратного обеспечения
    1. Почему Atmel Studio для программирования Arduino
    2. Установка Atmel Studio
    3. Установка драйверов Arduino
    4. Настройка Atmel Studio для прошивки Arduino UNO / NANO / MEGA
    5. Настройка Atmel Studio для использования USB ASP для прошивки
    6. Напишите первое тестовое приложение Blinky
    7. Прошейте приложение Blinky
    8. Викторина
  3. Введение во встроенные системы
    1. Что такое встроенные системы?
    2. Встроенная система и система общего назначения
    3. Пример встроенной системы
    4. Микропроцессор и микроконтроллер
    5. Жизненный цикл разработки встроенных систем
    6. Викторина
  4. Архитектура AVR и Atmega328p
    1. Микроконтроллер AVR
    2. Обзор архитектуры AVR
    3. Спецификация Atmega328p
    4. Конфигурация контактов и мультиплексирование ввода-вывода
    5. Выполнение и работа ядра процессора AVR
    6. Архитектура памяти AVR
    7. Системные часы AVR
    8. Внутреннее прерывание и внешнее прерывание
  5. Порты ввода-вывода и лаборатория программирования
    1. Концепции GPIO
    2. Регистры GPIO
    3. Программирование GPIO
    4. Интерфейс переключателя / кнопки
    5. Интерфейс 7-сегментного светодиодного дисплея
    6. Светодиодный индикатор хода
    7. Интерфейс ИК-отражающего модуля / датчика
    8. Клавиатура I nterfacing
    9. Интерфейс светодиодной матрицы
    10. Файл библиотеки GPIO
  6. Таймер, счетчик, ШИМ и лаборатория программирования
    1. Таймер 0
    2. Таймер 1
    3. Таймер 2
    4. Использование таймера для системной задержки
    5. ШИМ светодиода Управление
    6. Управление двигателем PWM
    7. Интерфейс зуммера и создание музыки
    8. Пример захвата входного сигнала
    9. Интерфейс серводвигателя
    10. Пример прерывания
    11. Файл библиотеки таймера 0
  7. Лаборатория связи и программирования SPI
    1. Концепция SPI
      1. SPI
      2. Описание регистра SPI
      3. Программирование SPI
      4. Файл библиотеки SPI
      5. Вопросы и ответы SPI
    2. Лаборатория связи и программирования UART
      1. Концепция UART
      2. Описание регистра UART
      3. Программирование UART
      4. Файл библиотеки 9 UART9 UART как SPI
      5. UART Вопросы и ответы
    3. Лаборатория связи и программирования I2C или TWI
      1. Концепция I2C
      2. Описание регистра I2C
      3. Программирование I2C
      4. Файл библиотеки I2C
      5. I2C
      6. 4 Аналоговые вопросы и ответы 909 Компаратор
        1. Аналоговый компаратор
        2. Пример
      7. Лаборатория АЦП и программирования
        1. Концепция АЦП
        2. Описание регистра АЦП
        3. Программирование преобразования АЦП
        4. Пример подключения потенциометра к ШИМ
        5. Пример прерывания датчика температуры LM
        6. Файл библиотеки АЦП
      8. Программирование памяти
        1. Программирование EEPROM
        2. Программирование флэш-памяти
      9. Модули и аппаратное обеспечение
        1. Датчик освещенности
        2. Датчик температуры
        3. Атмосфера IC Датчик давления или интерфейс барометра
        4. ИК / фото прерыватель
        5. Ультразвуковой датчик или дальномер
        6. Датчик наклона / гироскоп
        7. Интерфейс акселерометра
        8. Интерфейс ЖК-дисплея 16 × 2
        9. PCD8544 Интерфейс Nokia GLCD
        10. Интерфейс TFT
        11. TFT Дисплей Интерфейс двигателя
        12. Bluetooth
        13. Интерфейс Wi-Fi
        14. NRF24L01 Интерфейс
        15. Интерфейс SD-карты
        16. Термистор
        17. Интерфейс микрофона
        18. Датчик эффекта Холла
        19. Интерфейс RFID / NFC
        20. Интерфейс GPS
        21. Модуль интерфейса GSM
        22. 12
        23. Интерфейс реле
      10. Расширенные темы
        1. Многопроцессорный режим
        2. Режимы ожидания
        3. Емкостное касание

      Пололу — 9.Обновление прошивки

      Программа, работающая на USB AVR Programmer (прошивка), может быть обновлена ​​с исправлением ошибок или новыми функциями.

      Версии прошивки
      • Версия 1.00 , выпущена 02.06.2009: Это оригинальная прошивка для программиста. Все программаторы, поставлявшиеся с Pololu до 17 декабря 2009 г., поставлялись с этой версией.
      • Версия 1.01 , выпущенная 17 декабря 2009 г .: Эта версия содержит два исправления ошибок, связанных с последовательным портом TTL программатора.Программисты, которые поставлялись с Pololu в период с 18 декабря 2009 г. по 29 февраля 2012 г., поставлялись с этой версией.
      • Версия 1.03 , выпущена 22 декабря 2010 г .: Эта версия прошивки инвертирует управляющие сигналы последовательного порта TTL так, что 0 В соответствует 1, а 5 В соответствует 0.
      • Версия 1.04 , выпущена 29 апреля 2011 г .: В этой версии прошивки исправлена ​​ошибка, из-за которой, если сумма минимального измеренного целевого VDD и максимально допустимого диапазона целевого VDD превышает 8160 мВ, программист ошибочно думает, что AVR не получает должного питания и отказывается его программировать.В этой версии также устранена проблема с дополнительными выходами управляющих сигналов RTS и DTR на линиях A и B.
      • Версия 1.05 , выпущенная 07.07.2011: Эта версия прошивки добавляет поддержку AVR с 256 КБ флэш-памяти и увеличивает время ожидания программирования с 350 мс до 1400 мс.
      • Версия 1.06 , выпущена 16 сентября 2011 г .: Эта версия прошивки добавляет поддержку AVR Studio 5.0 путем изменения подписи программиста с «AVRISP_2» на «STK500_2».
      • Версия 1.07 , выпущенная 29 февраля 2012 г .: Эта версия прошивки добавляет поддержку AVR Studio 5.1 и более поздних версий, сообщая целевое напряжение по запросу.
      • Версия 1.08 , выпущенная 28 апреля 2016 г .: Эта версия прошивки устраняет проблему, которая не позволяет программисту работать с macOS 10.11 или новее.
      Специальные модифицированные версии прошивки

      Эти специальные модифицированные версии микропрограмм позволяют программисту выглядеть как один виртуальный COM-порт вместо составного устройства с двумя виртуальными COM-портами и собственным интерфейсом USB.Эти версии микропрограмм не поддерживают последовательный порт TTL, SLO-область или утилиту настройки. Эти версии были предоставлены для поддержки Mac OS X 10.6 или более ранней версии.

      • Специальная модифицированная версия 1.01nc , выпущенная 9 декабря 2010 г .: Эта версия основана на стандартной версии микропрограммного обеспечения 1.01.
      • Специальная модифицированная версия 1.02nc , выпущенная 21 декабря 2010: эта версия очень похожа на 1.01nc, но в ней улучшена поддержка старых версий Mac OS X.
      • Специальная модифицированная версия 1.06nc , выпущенная 16 сентября 2011 г .: Эта версия основана на стандартной версии микропрограммного обеспечения 1.06.
      • Специальная модифицированная версия 1.07nc , выпущенная 29 февраля 2012 г .: Эта версия основана на стандартной версии микропрограммного обеспечения 1.07.
      Определение версии прошивки

      Вы можете определить версию прошивки, выполнив следующие действия.

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

      1. Дважды щелкните на записи «Pololu USB AVR Programmer» в списке «Pololu USB Devices».
      2. На вкладке «Подробности» выберите свойство «Идентификаторы оборудования» в раскрывающемся списке.
      3. Первое отображаемое значение должно быть примерно USB \ VID_1FFB & PID_0081 & REV_0101 & MI_04 .Номер после REV_ — это код вашей версии. Если код ревизии «0001», значит, у вас версия микропрограммы 1.00. В противном случае версия вашей прошивки определяется путем вставки точки в середине кода версии. Например, код редакции «0107» соответствует версии прошивки 1.07, а код редакции «0101» соответствует версии прошивки 1.01.

      Чтобы определить версию прошивки программиста в Linux: Если вы видите только одно устройство с именем, совпадающим с именем / dev / ttyACM * появляется при подключении программатора к компьютеру, значит, у вас специальная модифицированная версия прошивки.Если вы видите два таких устройства, значит, у вас одна из стандартных версий прошивки, и вы можете определить точный номер версии, выполнив следующие действия:

      1. Выполните следующую команду: lsusb -v -d 1ffb: 0081 | grep bcdDevice
      2. Это должно вывести строку с числом. Этот номер является кодом редакции. Если код версии «0.01», значит, у вас версия микропрограммы 1.00. В противном случае версия вашей прошивки такая же, как и код версии.

      Чтобы определить версию прошивки программиста в Mac OS X: Если при подключении программатора к компьютеру вы видите только одно устройство с именем, совпадающим с именем /dev/tty.usb* , значит, у вас специальная модифицированная версия прошивки. Если вы видите два таких устройства, значит, у вас одна из стандартных версий прошивки, и вы можете определить точный номер версии, выполнив следующие действия:

      1. Выполните следующую команду: ioreg -p IOUSB -n «Программатор Pololu USB AVR» | grep bcdDevice
      2. Это должно вывести строку с числом.Если номер 1, значит у вас версия прошивки 1.00. Если число находится между 257 и 511, значит, у вас версия микропрограммы 1. x , где x равно числу минус 256. Например, если число 263, значит, у вас версия микропрограммы 1.07. Если номер 264, значит у вас версия прошивки 1.08.
      Обновление прошивки

      Чтобы обновить прошивку программатора, выполните следующие действия:

      1. Если вы изменили какие-либо настройки программатора в утилите конфигурирования или с помощью PgmCmd , запишите свои текущие настройки, потому что процесс обновления прошивки сбросит настройки.
      2. Загрузите желаемую версию прошивки здесь:
      3. Переведите ваш программатор в режим загрузчика. Если вы используете Windows и у вашего программатора стандартная прошивка, это можно сделать, нажав кнопку «Запустить загрузчик» в нижнем левом углу утилиты настройки.

        Если вы не можете использовать кнопку «Start Bootloader» по какой-либо причине (например, вы используете другую операционную систему, вы установили специальную модифицированную микропрограмму или ваша микропрограмма была повреждена во время попытки обновления), вам потребуется использовать панели загрузчика программиста, чтобы перевести его в режим загрузчика.Для этого сначала отключите все от вашего программатора. Замкните две колодки загрузчика, выделенные ниже, прикоснувшись к ним проводом, отверткой или другим токопроводящим инструментом. Пока колодки закорочены, подключите программатор к USB. Это может занять несколько попыток. Вы можете перестать закорачивать контакты после того, как программатор подключен к USB.

      Пэды загрузчика Pololu USB AVR Programmer.

      1. Когда программатор перейдет в режим загрузчика, он появится на вашем компьютере как новое устройство под названием «Загрузчик Pololu pgm03a».
        • Windows 10, Windows 8, Windows 7, Vista, Linux и Mac OS X: Драйвер для загрузчика будет установлен автоматически, и вы сможете перейти к следующему шагу.
        • Windows XP: Когда отображается «Мастер нового оборудования», выполните шаги 4–6 в Разделе 3.a, чтобы заставить драйвер работать.
      2. После того, как драйверы загрузчика установлены правильно, зеленый светодиодный индикатор должен мигать в виде двойного сердечного ритма, а в списке «Порты (COM и LPT)» диспетчера устройств вашего компьютера в Windows должна быть запись для загрузчика. .
      3. Используйте программу терминала (например, Br @ y Terminal или screen ) для подключения к виртуальному последовательному порту загрузчика. В Windows вы можете определить имя порта загрузчика (например, COM5), заглянув в Диспетчер устройств. В Linux вы можете определить имя порта (например, / dev / ttyACM0 ), запустив dmesg . В Mac OS X вы можете определить имя порта (например, /dev/tty.usbmodem00022331 ), запустив ls /dev/tty.usb* . Вы можете использовать любую скорость передачи данных.
      4. Введите в программу терминала следующие строчные буквы, чтобы отправить их загрузчику: fwbootload . После отправки каждого письма загрузчик должен отображать версию этого письма в верхнем регистре. После того, как вы закончите вводить эту последовательность, вы должны увидеть «FWBOOTLOAD» в качестве выходных данных загрузчика в вашей программе терминала, и желтый светодиод программатора должен гореть.
      5. Теперь отправьте строчные буквы « s ». Загрузчик потратит несколько секунд на стирание текущей прошивки и настроек, а затем вернет заглавные буквы S .Не отключайте программатор от компьютера после этого момента, пока обновление не будет завершено.
      6. Теперь отправьте содержимое загруженного файла обновления прошивки в загрузчик. Файл обновления прошивки представляет собой текстовый файл (ASCII), поэтому вы можете открыть его в текстовом редакторе (например, в блокноте), скопировать все это и затем вставить в свою программу терминала. В терминале Br @ y есть кнопка «Отправить файл», которую вы можете использовать.
      7. Во время отправки файла загрузчик отправит обратно символы периода («….»). Этот процесс займет около 5 секунд. Когда обновление прошивки завершено, загрузчик должен отправить обратно вертикальную черту («|») и включить красный светодиод.
      8. Теперь вы можете отключить программатор, снова подключить его к компьютеру и использовать новую прошивку.

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

      8086 Поддержка — Как мне записать новую прошивку в Cluster Triple?

      Управление тройным кластером осуществляется с помощью ATmega328P (или ATmega328PB), IC можно перепрограммировать с помощью стандартного программатора ISCP или Raspberry Pi. Если вы регулярно программируете AVR, вы можете пропустить большую часть этого документа, но, пожалуйста, помните, что НЕ изменяйте предохранители, так как вы можете в конечном итоге «сломать» микросхему, требуя ее удаления и перепрограммирования с помощью параллельного программатора.

      В этом руководстве объясняется, как использовать Raspberry Pi для записи обновленной прошивки в Cluster Triple.

      Чтобы запрограммировать Cluster Triple, следуя этому руководству, вам понадобится Raspberry Pi с Raspbian (или дистрибутивом на основе Raspbian) с 40-контактным разъемом, пятью перемычками (гнездо-гнездо) и источниками питания для Pi и Cluster Triple и т. Д.

      Подключите провода между Cluster Triple и Raspberry Pi, как показано в таблице ниже.

      Тройной кластер Raspbrrry Pi (физический / BCM)
      1 / MISO 12 / BCM18
      2 / 3v3 Нет соединения
      3 / SCK 18 / BCM24
      4 / MOSI 16 / BCM23
      5 / RST 32 / BCM12
      6 / ЗЕМЛЯ 6 / ЗЕМЛЯ

      Физические контакты на Cluster Triple и Raspberry Pi можно увидеть ниже (распиновка Pi GPIO из распиновки.xyz).

      После подключения у вас должно получиться что-то вроде этого.

      После того, как вы установили проводку между Pi и Cluster Triple, убедитесь, что все вычислительные модули были удалены из Triple, включите Cluster Triple через порт «PWR», отсоедините все кабели от порта «USB» на Triple, включите Пи.

      Войдите в Pi и установите необходимое программное обеспечение Git (для загрузки прошивки) и Avrdude (для программирования).

        sudo apt-get -y install git avrdude  

      Загрузите микропрограмму ClusterCTRL.

        git clone https://github.com/burtyb/ClusterCTRL.git  

      Если вы ранее не добавляли программаторы, используемые ClusterCTRL, в файл avrdude.conf, их можно добавить, запустив.

        sudo bash -c "cat ClusterCTRL / clustertriple-1.0 / avrdude.conf >> /etc/avrdude.conf"  

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

      Установка готовой прошивки

      Для просмотра доступных на данный момент файлов прошивки.

        ls ClusterCTRL / прошивка /  

      Файлы пронумерованы с указанием версии в начале, затем типа платы и версии аппаратного обеспечения. Вы ДОЛЖНЫ выбрать прошивку, соответствующую имеющемуся у вас оборудованию, например 1.2_clustertriple-1.0.hex для Cluster Triple v1.0. Установка неправильной прошивки может привести к блокировке устройства ClusterCTRL. В случае сомнений сначала спросите на форуме.

      Дважды проверьте проводку и, как только вы будете готовы, запрограммируйте AVR (например, заменив FIRMWARE файлом прошивки .hex, который будет записан «… flash: w: ClusterCTRL / firmware / 1.2_clustertriple-1.0.hex»).

        sudo avrdude -D -c pi_1 -p atmega328p -U flash: w: ClusterCTRL / firmware / FIRMWARE  

      Если вы видите подпись устройства «avrdude: подпись устройства = 0x1e9516 (вероятно, m328pb)», значит, ваш Cluster Triple имеет ATmega328pb и его необходимо запрограммировать с помощью другой команды.

        sudo avrdude -D -c pi_1 -p atmega328pb -U flash: w: ClusterCTRL / firmware / FIRMWARE  

      Затем вы должны увидеть, что AVR программируется, через несколько секунд вы должны увидеть «avrdude done. Thank you.». Теперь вы можете отсоединить кабель PWR от Cluster Triple, удалить перемычки, а затем заменить вычислительные модули и подключиться как обычно.

      Сборка и установка прошивки

      Установите программное обеспечение для компиляции прошивки для AVR

        apt-get install gcc-avr avr-libc  

      Перейдите в каталог с имеющимися у вас устройствами ClusterCTRL.

        компакт-диск ClusterCTRL / clustertriple-1.0 /  

      Скомпилируйте прошивку с помощью make.

        марка  

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

        ...
      ...
      avr-objcopy -j .text -j .data -O ihex firmware.bin firmware.hex
      ../src/checksize firmware.bin 32768 2048
      ПЗУ: 7450 байт (данные = 74)
      RAM: 144 байта  

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

        судо -i
      компакт-диск ~ pi / ClusterCTRL / clustertriple-1.0 /  

      Теперь вы можете программировать IC

        программа make  

      Затем IC обнаруживается (ATmega328p / ATmega328pb) и программируется. Если вы видите какие-либо ошибки, проверьте / опубликуйте их на форуме.

      Введите exit, чтобы вернуться к пользователю «pi».

        выход  

      Теперь вы можете отсоединить кабель PWR от Cluster Triple, удалить перемычки, а затем заменить вычислительные модули, подключиться и включить питание как обычно.

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

      с использованием режима DFU

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

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

      Варианты обновления прошивки

      Разработка загрузчика с нуля — нетривиальное занятие. Разработчикам необходимо проанализировать свое флеш-пространство, чтобы несколько приложений могли сосуществовать. Затем им необходимо разработать способ переноса скомпилированного двоичного файла на микроконтроллер без использования инструмента программирования. Это требует от них либо разработки своего протокола связи, либо увеличения сложности системы за счет добавления внешней памяти для хранения новых изображений. Они также могут увеличить объем внутренней памяти микроконтроллера.

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

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

      DFU стал настолько распространенным, что некоторые поставщики микроконтроллеров, такие как STMicroelectronics, даже включают программное обеспечение, необходимое для выполнения обновлений, жестко закодированных в их ПЗУ. Те, кто этого не делает, часто предоставляют пример кода о том, как поддерживать DFU.

      Выбор микроконтроллера с поддержкой DFU

      Самый простой способ поддержать DFU — выбрать микроконтроллер, в ПЗУ которого уже включен DFU, например микроконтроллеры STMicroelectronics STM32. Из них разработчикам было бы наиболее интересно поэкспериментировать с устройствами на узле обнаружения STM32 IoT и наборе обнаружения STM32F429.

      Рис. 1. Узел обнаружения STMicroelectronics STM32 IoT основан на ядре ARM ® Cortex ® -M4, на котором работает микроконтроллер STM32L475, который включает возможности режима DFU для обновлений прошивки. Это конкретное устройство предназначено для использования в качестве узла Интернета вещей. (Источник изображения: STMicroelectronics)

      Узел обнаружения Интернета вещей STM32 — это недорогая плата для разработки, предназначенная для использования в качестве узла датчиков Интернета вещей. Плата включает в себя несколько различных интерфейсов для подключения платы, таких как Wi-Fi и Bluetooth.Интересно то, что встроенный STM32L475 предоставляет разработчикам возможность тестировать и использовать возможности DFU на устройстве, предназначенном для подключения к Интернету.

      Для разработчиков, которые просто хотят протестировать DFU на обычном устройстве, которое было бы автономным, STM32F429 Discovery Kit — это хорошо известный недорогой комплект для разработки микроконтроллеров серии STM32F4. Давайте обсудим, как разработчик будет тестировать DFU на этих микроконтроллерах.

      Рисунок 2: Комплект STMicroelectronics STM32F429 Discovery основан на ядре ARM ® Cortex ® -M4.MCU этой недорогой платы для разработки также включает в себя возможности режима DFU для обновлений прошивки. (Источник изображения: STMicroelectronics)

      Простой пример DFU

      Доступ к

      DFU осуществляется по-разному на каждом микроконтроллере. В качестве простого примера рассмотрим, как разработчик обновит свою прошивку на устройстве, на котором работает MCU STM32L475.

      Как упоминалось ранее, микроконтроллеры STM32 включают в себя загрузчик DFU, встроенный в их ПЗУ. Чтобы получить доступ к этому загрузчику, разработчику необходимо заземлить один из контактов BOOT во время запуска MCU.Контакты BOOT управляют режимом загрузки MCU, например, загрузкой с флэш-памяти, RAM или, в нашем предпочтительном случае, режимом DFU USB.

      Подготовка приложения к загрузке с помощью DFU не требует от разработчика дополнительных действий. Коллекция компиляторов GNU (GCC), наряду со многими другими наборами инструментов, поддерживает создание файла DFU при компиляции приложения. Единственная уловка для разработчика здесь — определить, где хранится этот файл: как и в любом типичном приложении, в папке отладки или объектов находится файл.dfu можно найти.

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

      Существует несколько различных инструментов, которые разработчик может использовать для переноса своего приложения на свой микроконтроллер с помощью DFU. Общий инструмент командной строки, который можно использовать, — это dfu-util. Он доступен как для Linux, так и для Windows ® в виде пакета программного обеспечения с открытым исходным кодом. Если разработчик работает с набором инструментов STM, он может воспользоваться преимуществами приложения STMicroelectronics DfuSe (рисунок 3).

      Рис. 3. Инструмент STMicroelectronics DfuSe можно использовать для программирования файла DFU, который создается компилятором, таким как GCC, и загружается в микроконтроллер с поддержкой DFU.(Источник изображения: Beningo Embedded Group)

      DfuSe — это утилита с графическим интерфейсом Windows, которая обнаруживает любое устройство STM32, которое было включено в режиме DFU и подключено через USB к компьютеру. Разработчики могут получать такую ​​информацию, как запрограммированные идентификаторы поставщика и продукта. Если флеш-пространство не было должным образом защищено, они могут даже скопировать содержимое памяти MCU и сохранить его на компьютере с помощью окна «Действия по загрузке».

      При использовании DfuSe разработчик обычно использует только разделы Upgrade или Verify Action.В этой области разработчик может выбрать свой файл приложения DFU, а затем нажать кнопку обновления. Затем DfuSe будет автоматически координировать процесс обновления прошивки до тех пор, пока весь файл не будет успешно загружен в MCU. Затем разработчик может подтвердить, что изображение было успешно получено. После проверки контакты BOOT могут быть возвращены в их конфигурацию по умолчанию, такую ​​как загрузка для прошивки, а затем выбирается режим «Leave DFU» для загрузки и выполнения обновленной прошивки.

      Использование DFU на устройствах без поддержки DFU

      Тот факт, что микроконтроллер не включает загрузчик DFU в ПЗУ, не означает, что разработчик все еще не может использовать возможности DFU.DFU — это класс USB, который поддерживается многими стеками USB. Это означает, что разработчик может так же легко добавить возможность DFU в свои платформы приложений и при этом выполнить обновление DFU.

      Например, AT32UC3A3 от Microchip Technology не имеет встроенного режима DFU (рисунок 4). Разработчик может следовать простой заметке по применению, в которой описывается, как работает DFU, и как разработчик должен настроить свой микроконтроллер для правильной поддержки DFU.

      Рис. 4. Встраиваемая оценочная плата 32-разрядного AVR микроконтроллера AT32UC3A3 UC3-A3 XPLD AVR®32 не включает в себя встроенный DFU, но может иметь добавленный код USB фреймворка, который включает функцию обновления микропрограммы DFU.(Источник изображения: Microchip Technology)

      Советы и приемы по обновлению прошивки

      Обновление прошивки на месте не обязательно должно происходить только с микроконтроллера с поддержкой DFU. Разработчик может решить, что альтернативный подход к обновлению прошивки необходим или более практичен. В этих обстоятельствах разработчику следует иметь в виду несколько советов относительно процесса обновления прошивки. К ним относятся:

      • Используйте контрольную сумму или хэш для проверки приложения, которое будет записано в память микроконтроллера.
      • Выберите микроконтроллер с достаточным объемом памяти для хранения резервной копии прошивки, чтобы, если что-то пойдет не так, можно было откатить версию прошивки.
      • Убедитесь, что если микроконтроллер имеет встроенный флэш-загрузчик, конечный пользователь не может случайно запустить его.
      • Убедитесь, что все программные загрузчики скомпилированы и оптимизированы по размеру.
      • Заблокируйте периферийное устройство флэш-памяти, чтобы приложение не могло быть прочитано из памяти и перепроектировано.
      • Всегда проверяйте, что указатель стека, таблица векторов и регистры счетчика программ установлены на соответствующее значение приложения.
      • Рассмотрите возможность использования альтернативных методов обновления, таких как обновления методом перетаскивания с помощью USB-MSD, как показано на плате KL46Z Freedom Board (рис. 5).

      Рис. 5. Плата NXP Semiconductor KL46Z Freedom Board — это недорогая плата для разработки, которая по умолчанию не поддерживает DFU. Разработчики могут использовать альтернативные методы обновления, такие как USB MSD, когда новый образ прошивки перетаскивается во внутреннюю память.(Источник изображения: NXP Semiconductor)

      Заключение

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

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

      Отказ от ответственности: мнения, убеждения и точки зрения, выраженные различными авторами и / или участниками форума на этом веб-сайте, не обязательно отражают мнения, убеждения и точки зрения Digi-Key Electronics или официальную политику Digi-Key Electronics.

      USB крошечный

      USBtiny

      USBtiny

      Обзор

      USBtiny — это программная реализация низкоскоростного протокола USB для микроконтроллеры Atmel ATtiny. Конечно, это также будет работать на Серия ATmega. Программное обеспечение написано для AVR с тактовой частотой 12 МГц. На этой частоте каждый бит на шине USB занимает 8 тактов, и с помощью множества уловок можно декодировать и закодировать USB осциллограммы программным обеспечением. Драйвер USB требует от 1250 до 1350 байты флеш-памяти (исключая дополнительные идентификационные строки), в зависимости от конфигурации и версии компилятора и 46 байт ОЗУ (без учета пространства стека).Интерфейс C состоит из 3-5 функций, в зависимости от комплектации.

      Реализация

      USB использует два дифференциальных сигнала данных, D + и D-, которые обычно дополнительный. Однако об окончании пакета сигнализирует вытягивание оба сигнала низкие. Данные не передаются напрямую по шине USB, это сначала кодируется NRZI. Это означает, что бит «0» кодируется как бит изменение, и бит «1» кодируется как отсутствие изменения бита. После 6 битов «1» «битовая вставка» имеет место, чтобы принудительно изменить сигнальные линии USB.

      Программное обеспечение управляется прерываниями: запуск пакета USB прерывание. Обработчик прерывания синхронизируется с байтом синхронизации, удаляет кодировку NRZI и битовую вставку и сохраняет упакованные в один из двух буферов RAM. Используются два буфера, так что следующий пакет может быть получен во время обработки текущего. В зависимости от типа пакета ответ может быть отправлен обратно в упакованном виде. сразу в обработчике прерывания.

      Остальная часть драйвера USB написана на C.Функция usb_poll () должен вызываться периодически для опроса входящих пакетов. Только единственная конечная точка поддерживается на данный момент. Стандартные запросы на управление напрямую обрабатываются драйвером USB. Другие запросы НАСТРОЙКИ: перенаправляется пользовательской функции usb_setup (). Поддержка больших ответы и запросы управления OUT не являются обязательными, см. usbtiny.h.

      Чтобы использовать драйвер USB в собственном приложении, вам необходимо настроить макросы в usbtiny.h и предоставляют функцию usb_setup () для обработки УСТАНОВКА контрольных пакетов.При желании вам необходимо предоставить функции usb_in () и usb_out (). Ваш код должен вызвать инициализацию функция usb_init () при запуске программы и usb_poll () при обычном интервалы. Тип устройства AVR и команда загрузки должны быть настроен в верхней части Makefile.

      Другие проекты USB

      Это программное обеспечение было вдохновлено двумя аналогичными проектами USB для AVR, особенно второй:

      Код IgorPlugUSB и более ранние версии кода obdev имели ограничение, что сигнал D + должен быть подключен к биту 0 ввода / вывода порт, в дополнение к входу прерывания.Это означает, что для устройств Как и ATtiny2313, для управления шиной USB требуются три контакта ввода-вывода. Одна из причин, по которой я написал USBtiny, заключалась в том, чтобы иметь больше свободы в выборе Контакты ввода / вывода для сигналов D + и D- USB. Единственное ограничение заключается в том, что оба сигнала должны быть на одном и том же порте ввода-вывода. Когда вы выбираете контакт для D +, который также может генерировать прерывание, только два контакта ввода / вывода требуется. Более поздние версии кода obdev также удалили это ограничение. Прерывание от смены вывода намеренно не используется, поэтому что он остается доступным для других целей.Еще одно улучшение — это необязательный более быстрый расчет CRC, который использует таблицу поиска для расчета 4 бита за раз.

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

      USBtinyISP проект — это внутрисхемный программатор AVR на базе USBtiny, и доступен как комплект.

      Улучшенная версия этого программатора AVR называется USB µISP доступно на Тинди.

      Оборудование

      AVR должен синхронизироваться с внешним кристаллом 12 МГц. Для ATtiny2313, это означает, что нужно перепрограммировать младший байт предохранителя, например, до 0xef. Также рекомендую включить схему БПК, когда возможно. Для ATtiny2313 это означает программирование высокого предохранить байт до 0xdb (уровень BOD равен 2,7 В).

      Сигналы данных USB указаны при напряжении 3,3 В. Самый простой способ для этого нужно использовать 3.Источник питания 3В для АРН. Тем не мение, управление сигналами USB с напряжением 5 В в большинстве случаев тоже работает, что может быть более удобным, когда вам нужно подключиться к 5V периферийные устройства. Согласно спецификации USB, устройство не должно быть поврежденным сигналами 5 В. Я запустил AVR и шину USB на 5V, и пока не сталкивался с какими-либо проблемами, но у меня есть отчеты ПК и ноутбуков, которые не работают с сигналами 5 В. В этом случае, вы можете уменьшить напряжение сигналов данных USB, добавив стабилитрон 3V6 диоды от сигналов данных к земле.

      USBtiny преобразователь SPI

      Мое первое приложение USBtiny — это USB to SPI (последовательное программирование). Интерфейс) конвертер. Сигналы SPI подключены к гнезду DB-25. разъем, чтобы преобразователь можно было подключить к моему AVR параллельно программист порта. Поскольку наиболее важные сигналы параллельного порта подключены к разъему DB-25, то же оборудование (с разными микропрограммное обеспечение) может использоваться для управления другими устройствами с параллельным портом. Что Это также причина, по которой я подключил сигнал ACK к выводу INT1.Ниже приведена схема USB-интерфейса к моему параллельному порту. программист.

      Мой программатор параллельного порта AVR следует bsd дизайн от Брайана Дина. В целях безопасности я использовал серию резисторы в выходных сигналах. Устройство Atmel питается от линии передачи данных D1-D3 через резисторы 220 Ом. D0 используется для управления светодиодом. Вот версия схемы в формате ASCII:

      DB25 мужской ATtiny2313
      --------- ----------
      18 GND ---------------------- + ---- 10 GND
       2 D0 ---- 330 ---- светодиод ---- +
       3 D1 ---- 220 --- +
       4 D2 ---- 220 --- + -------------- 20 В постоянного тока
       5 D3 ---- 220 --- +
       7 D5 ---- 1K ------------------- 1 / СБРОС
       8 D6 ---- 680 ------------------ 19 SCK
       9 D7 ---- 1K ------------------- 17 MOSI
      10 ACK --------------------------- 18 MISO
       

      Схема USBtiny может получать питание через диод на выводе 14 разъема Разъем DB-25 для перепрограммирования ATtiny2313 в системе.Для этого требуется переходный кабель между другим программатором SPI и штекер DB-25 (подробности см. в README).

      Вот изображения преобразователя, подключенного к программатору параллельного порта, и крупный план схемы, встроенной в корпус DB25 (нажмите, чтобы увеличить):

      Битовая передача сигналов SPI через USB оказалась очень медленной. Получить разумные скорости программирования, я переместил алгоритм SPI в AVR. Это означает, что вы можете отправить 32-битную команду SPI через один USB-порт. пакет.Кроме того, вы можете читать или записывать до 255 байтов из / в флэш-память или EEPROM за одну передачу управления.

      В дистрибутив входит патч для avrdude-5.4, который добавляет поддержка управления этим конвертером SPI. Имя программиста «усбтины». Вы можете использовать опцию -B или команду «sck», чтобы указать минимальный период SCK в микросекундах (диапазон: 1..250, по умолчанию: 10). Встроенная поддержка USBtiny была добавлена ​​в avrdude версии 5.5.

      USBtiny LIRC-совместимый ИК-приемник и ЖК-контроллер

      Второе приложение USBtiny — приемник для инфракрасного пульта ДУ. элементы управления, которые можно использовать с Пакет LIRC.Прошивка хранит тайминги меток / пробелов с TSOP1738 ИК-декодер в буфере, который опрашивается драйвером устройства LIRC. Как наглядный обратная связь, светодиод мигает при получении сигнала. Как дополнительная (дополнительная) функция, к PORTB подключается ЖК-дисплей 2×16. Вы можете управлять дисплеем через шину USB. Ниже представлена ​​схема схемы. Понижающий резистор на PB3 предотвращает зависание при инициализации ЖК-дисплея. код, когда к PORTB не подключен ЖК-дисплей. Вы можете отключить ЖК-код с помощью установка макроса LCD_PRESENT в main.c до 0.

      Я принял протокол «IgorPlug-USB», так что существующий LIRC драйвер устройства «igorplugusb» можно использовать без изменений. Тем не менее, патчи для lirc-0.8.0 и lirc-0.8.2 включены которые повышают надежность.

      Вот изображение прототипа на макете (нажмите, чтобы увеличить):

      Программатор USB AVR и интерфейс SPI

      В этот выпуск включено третье приложение под названием «usbtinyisp». Это модифицированная версия конвертера SPI. приложение, адаптированное для использования в Программатор USBtinyISP AVR.Код работает как для устройств v1.0, так и для v2.0.

      Шаблон приложения USBtiny

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

      Инструменты

      Программное обеспечение было разработано в системе Linux. Помимо стандартных такие инструменты, как GNU make, вам понадобятся AVR-версии gcc, binutils и glibc для сборки кода: в системе Debian / Ubuntu вы можете apt-get следующие пакеты:

      • gcc-avr
      • binutils-avr
      • avr-libc

      Чтобы загрузить код в AVR, я использую avrdude с параллельным портом. программист.

      Сначала я использовал gcc-3.4.3 с параметром -Os, который генерирует разумный компактный код. К сожалению, более новые версии, такие как gcc-4.1.0 сгенерировали примерно на 10% больше кода, и в результате код приложения в 2К больше не влезло. Чтобы он подошел, мне пришлось удалить необязательный строки поставщика и устройства, отменив определение USBTINY_VENDOR_NAME и Макросы USBTINY_DEVICE_NAME. К счастью, генерация кода улучшилась. в более поздних версиях, таких как gcc-4.3.4.

      Схемы были созданы с помощью gschem из пакета geda-gschem.Преобразование в Postscript выполняется с помощью сценария, вызывающего gschem. не интерактивно.

      Хост-программа

      В дистрибутив входит модуль Python usbtiny.py, который определяет класс USBtiny, который можно использовать для связи с Прошивка USBtiny. Этот класс используется тестовыми скриптами.

      Модуль usbtiny.py использует оболочку Python для libusb который создается Swig. С помощью этого модуля вы можете управлять устройством USBtiny всего за несколько строк Python код.

      Лицензия

      Программное обеспечение USBtiny лицензировано в соответствии с условиями GNU General. Общественная лицензия, опубликованная Free Software Foundation, либо версия 2 лицензии или (по вашему выбору) любая более поздняя версия.

      Скачать

      webtag_net_streefland_avr_usbtiny

      Программа прошивки avr Полные руководства по загрузке и обновлению прошивки на вас … обновлено 21 ноября 2021 г.



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

      программа прошивки avr

      Загрузите новую версию программного обеспечения и обновите прошивку последней версии:

      • Версия последнего обновления: 02.01.2020
      • Страна: Все
      • Размер загрузки: 134 МБ
      • Языковой пакет: английский, китайский
      • Версия: 5.1.11

      Загрузите прошивку и обновите программное обеспечение прямо сейчас!

      Скачать и обновить прошивку для продуктов: прошивка android rabatt aktionen s und hologramme wiesnernews, официальная прошивка gpsdo в 2 решениях, официальная прошивка gp zte mf927u 368030b0218bd mf927uv1 0 1b01 без, обновить прошивку, как вернуть openwrt по ссылке tp, прошивка android контроллера mimd hsy 021, .

      Посмотреть видео Как обновить прошивку программы avr?

      СКАЧАТЬ PDF


      изменяемых инструментов | Ambika — Установка прошивки

      Прошивка материнской платы / голосовых карт прошивкой

      В этом разделе объясняется, как прошить прошивку Ambika с помощью AVR. программист — если строите с нуля (комплекты идут с предварительно запрограммированными чипами).Это также полезно, если вы собираетесь изменить код.

      Вариант 1: создайте код и загрузите его с помощью avrdude

      Код прошивки размещен на github, в контроллере и голосовая карта справочников. Необходимые инструменты: python 2.5, GNU make, avrdude и avr-gcc версии 4.3.3 (если вы используете другую версию, вы можете необходимо убедиться, что размер кода голосовой карты меньше 31744 байта и размер кода материнской платы менее 61440 байт). Некоторые пути к этим инструменты должны быть отредактированы в avrlib / makefile.мк

      Для сборки кода материнской платы (включая загрузчик MIDI / SD) и прошивки его, подключите программатор к материнской плате и используйте:

      сделать bootstrap_controller Чтобы собрать код голосовой карты (включая загрузчик) и прошить его, подключите программатор на голосовую карту и используйте:

      Вариант 2: установите готовые двоичные файлы с avrdude

      Загрузите следующие файлы:

      Подключите программатор к материнской плате. Введите следующие команды в терминале / командной строке:

        avrdude -B 100 -V -p m644p -c avrispmkII -P usb -e -u -U efuse: w: 0xfd: m
      -U hfuse: w: 0xd2: m -U lfuse: w: 0xff: m -U блокировка: w: 0x2f: m
        
        avrdude -B 1 -V -p m644p -c avrispmkII -P usb -U
      вспышка: w: ambika_controller.шестнадцатеричный: i -U
      flash: w: ambika_controller_boot.hex: i -U блокировка: w: 0x2f: m
        

      Подключите программатор к голосовой карте. Введите следующие команды в терминал / командная строка:

        avrdude -B 100 -V -p m328p -c avrispmkII -P usb -e -u -U efuse: w: 0xfd: m
      -U hfuse: w: 0xde: m -U lfuse: w: 0xff: m -U блокировка: w: 0x2f: m
        
        avrdude -B 1 -V -p m328p -c avrispmkII -P usb -U
      flash: w: ambika_voicecard.hex: i -U flash: w: ambika_voicecard_boot.hex: i
      -U eeprom: w: ambika_voicecard_eeprom_golden.шестнадцатеричный: i -U замок: w: 0x2f: m
        

      Обратите внимание, что во всех этих командах вам нужно будет заменить:

      • avrdude по пути к вашей локальной установке avrdude (для пример C: \ WinAVR \ bin \ avrdude в Windows).

alexxlab

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

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