Девайсы
Статьи
Контакты

Прошивка микроконтроллеров AVR

В связи с возникновением вопросов по прошивке и установке фьюзов при сборке устройств, описанных в других статьях сайта, я решил описать, как сам прошиваю данные микроконтроллеры (далее МК). Статья написана для людей, не имеющих опыта работы с МК семейства AVR.

Для прошивки контроллера понадобится программатор и программное обеспечение для ПК. Программатор представляет собой электронное устройство, обеспечивающее физическую связь компьютера с МК. К компьютеру программатор подключается через порты USB, LPT или COM. МК к программатору подключается по интерфейсу SPI непосредственно вне схемы, либо внутрисхемно, через соответствующие разъёмы ISP на плате (для внутрисхемного программирования). Программатор для AVR на данный момент наиболее целесообразно приобретать в Китае, через соответствующие магазины. В частности, наиболее распространены программаторы AVRASP, которые подключаются к ПК через порт USB. Стоимость их составляет в среднем 2$.
Но программатор не сложно собрать и самому. Наиболее просты программаторы, использующие COM или LPT порты. Я начинал с программатора под LPT, известного как STK200/300, он довольно прост и имеет микросхему, выполняющую роль "буфера", предохраняющую порт компьютера от повреждения. По соответствующему запросу в поисковике, найдется множество статей по его сборке. С данным программатором работают многие программы, я пользовался PonyProg2000.

Следующим простым программатором AVR, но уже с USB интерфейсом был PROTTOSS AVR910USB (им я пользуюсь до сих пор). Данный программатор сделан на базе МК ATmega8, который сам требует прошивки. На сайте автора программатора имеются все необходимые файлы и схема. Для работы с данным программатором я использую программу AvrOspII. Ниже представлен мой вариант разводки платы программатора и платы-адаптера для некоторых контроллеров.



Рисунок 1 - Разводка платы программатора и платы-адаптера под ATmega16, ATmega8, ATtiny2313



Рисунок 2 - Плата программатора и его внешний вид

Прошивка контроллера с помощью AVR910 в AvrOspII

Программу AvrOspII можно скачать по ссылке. После установки нужно проверить её настройки. Для этого необходимо знать номер COM-порта, к которому подключен программатор. Этот COM-порт является "виртуальным" и появляется в списке устройств при подключении программатора к USB-порту, при этом должен быть установлен драйвер, идущий в "связке" с программатором AVR910. После подключения заходим в диспетчер устройств, номер будет указан в скобках, напротив названия устройства (рис. 3).



Рисунок 3 - Отображение программатора в списке диспетчера устройств

Запускаем AvrOspII, заходим во вкладку Configure и указываем номер порта. Здесь же указываем протокол AVR911 при работе с программатором AVR910 (рис. 4).



Рисунок 4 - Конфигурация программы

Далее подключаем программатор (вместе с МК) к компьютеру. Подключать и отключать МК от программатора желательно со снятым питанием последнего во избежание возможной порчи МК. Переходим во вкладку Program, нажимаем кнопку Auto Detect, программа считает сигнатуру с МК и автоматически определится его марка. Если всё правильно настроено и собрано, то в результате нажатия кнопки получим примерно следующее окно (рис. 5).



Рисунок 5 - Окно программирования контроллера

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



Рисунок 6 - Процесс программирования памяти

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



Рисунок 7 - Результат успешной записи и верификации

Далее необходимо запрограммировать конфигурационные fuse-биты контроллера. Для этого открываем вкладку Fuse bits и жмём кнопку Read, при этом считаются установленные биты. В соответвтвии с техническими требованиями, устанавливаем биты путем установки крестиков в соответвтвующих строках. Fuse-биты управляют внутренней аппаратной частью МК, и задают такие параметры как, например: источник тактового сигнала (CKSEL); активацию делителя тактовой частоты (CKDIV8); параметры внутреннего "супервизора", предназначенного для сбрасывания МК при снижении напряжения VCC ниже определенного уровня (BODLEVEL) (он не является полноценным супервизором, но в некоторых случаях помогает). В программе AvrOspII установленный в строке крестик означает активацию параметра, записанного в этой строке. Например, установленный крестик в строке "Divide clock by 8 internally [CKDIV=0]" означает, что будет активирован внутренний делитель тактовой частоты, а бит CKDIV8 будет установлен в "0", то есть запрограммирован. Во вкладку "Lock bits" не лезем, если не знаем назначение битов. С их помощью можно запретить последующее программирование и считывание памяти МК.



Рисунок 8 - Окно установки fuse-битов

Для записи fuse-битов жмем кнопку Program, после чего производим верификацию, нажатием кнопки Verify. Если биты записаны без ошибок (так, как были установлены пользователем), то в журнале появится соответвтвующая запись.



Рисунок 9 - Результат успешной записи fuse-битов

На этом программирование контроллера и установка fuse-битов завершены. Для подробной информации по МК, их фьюзам, смотрите datasheet'ы.



Комментарии




Добавление комментария
Имя:
E-mail:
Сообщение:
0