Программатор USB ISP для AVR: Ещё один шаг в сторону от ардуинонизации. Самостоятельная сборка программатора AVRProg Avr программаторы для win 7

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


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


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


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




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

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


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

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




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

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

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

Программа обновлена до версии 08.06.2010.
Автор UniProf не покладая рук работает над улучшением своей программы, делая ее еще лучше. Версия программы от 08.06.2010 значительно лучше шьет микроконтроллеры. Наблюдаемые в предыдущей версии частые сбои при программировании без галочки «тормоз» остались в прошлом. Все остальное, что нам так нравиться в UniProf, осталось на месте.

Честно говоря, по началу, я решил использовать для прошивки микроконтроллеров программу AVRDUDE («дудка»). AVRDUDE мощная программа, заслуживающая уважения – умеющая работать с огромным количеством программаторов, с кучей настроек и довольно широко используемая для AVR микроконтроллеров. Программа не имеет своего «GUI» (работает с командной строки) и я собирался писать батники под каждую прошивку, чтобы в «один тык» прошивать контроллер. Но, немного поразмышляв, пришел к выводу:
— программа должна быть простой и доступной – чтобы с ней мог разобраться даже человек ни разу не работавший с микроконтроллерами (ну вот такой я идеалист:));
— была небольшой, портативной, со своим ГУИем, визуально отображала все этапы программирования, поддерживала микроконтроллеры используемые в блоге.
К сожалению, под эти требования AVRDUDE не подходит.
Зато подходит другая программа — UniProf-универсальный программатор для AVR . Программа имеет определенные недостатки, но они компенсируются простотой и доступностью. Кроме того, UniProf умеет работать с нашими LPT и COM программаторами. Поэтому я решил сделать общий пост-обзор программы UniProf, а позже отдельно опишу программирование через LPT и COM порт. Итак …

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

Начнем ознакомление.
вмещает в себя весь функционал программы. Вам не придется лазить по меню – все делается в «один тык». Программа имеет свою справку (нажимаем F1) в которой все подробно описано. Интерфейс UniProf интуитивно понятен, но давайте пройдемся по элементам окна.
Главным элементом является окошко PROGRAM. В нем (в ячейках таблицы) отображаются прочитанные или записываемые значения ячеек памяти контроллера. Если убрать галочку PROGRAM окошко скроется. Также есть галочка EEPROM для показа или скрытия окна EEPROM памяти контроллера (в большинстве случаев EEPROM нам не нужен – убираем галочку).

Верхний ряд кнопок (слева на право)

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

Проверка (верификация) памяти контроллера со значениями в окошках. Отличия обозначаются звездочками. (После записи верификация производится автоматически – поэтому проверять не нужно).

Проверка контроллера на чистоту . У «чистого» контроллера все ячейки памяти содержат 0xFF, что и проверяется.

Установка FUSE битов. Внимательно установите галочки как на картинке прилагаемой к каждой прошивке.
Важно! До прошивки FUSE битов обязательно установите галочку «тормоз» это уменьшит риск их неправильной записи.

Низкоуровневая команда. Лучше не трогайте.

Очистка (Erase) контроллера. Перед каждым программированием делайте очистку кристалла.

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

«osccal» — чтение калибровочных байт контроллера. Нам не нужно.

F1-помощь – вызов встроенной справки.

Следующие две кнопки отладка в контроллере – нам не нужно.

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

Чекбоксы под кнопками.

Ставим как на картинке . Первый показывает прочитанные или готовые для записи в контроллер байты. Второй для принудительной записи 0хFF в пустую ячейку. Третий — инвертирование линий COM порта (при использовании буферной микросхемы в программаторе). Синеньким будет светиться название подключенного контроллера. Далее — вкл/выкл окошка EEPROM. Красненьким показывается системная частота.
Важно! Если кликать по красному программа повторно засинхронизируется с контроллером. Нажимайте, на всякий случай, до начала программирования.

Другие элементы окна.

Этими галочками убираются лишние кнопки (чтоб не путались). Ставим как на картинке.

Очень важно! Нужный чекбокс. В старой версии программы были определенные проблемы с надежностью программирования без этого чекбокса. В новой версии программы эта проблема решена! Но если при записи или чтении происходят ошибки — программа сразу честно признается в этом. Если у Вас выдается – ставьте галочку «тормоз» и все запишется без проблем! Только медленней. При записи фьюзов «тормоз» обязателен! Не надо рисковать.

Можно указать какую область прожечь – ставим «Все!».

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

Еще есть «горячие клавиши».

F2 Установка задержки записи, нормально = 6. Если ошибки — попробуйте увеличить (? какого либо эффекта не наблюдается).

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

Gray -,+ Уменьшить-увеличить шрифт циферок в окошках Flash и EEPROM — это может быть полезно при изменении размеров окна.

Esc – отмена текущего действия.

Есть еще, но не очень нужные – читайте встроенный хелп.

UniРrof можно скачать здесь:
- Программатор для AVR. Смотрим avr.nikolaew.org

P.S. Все равно со временем заюзаем AVRDUDE — мощная вещь!

(Visited 48 833 times, 11 visits today)

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

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

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

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

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

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

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

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

Узнаем что такое ISP-интерфейс, разберемся с недорогим и удобным программатором USB ISP. Рассмотрим принципиальные схемы простейших программаторов для AVR микроконтроллеров с использованием COM и LPT портов компьютера. Данной информации вполне хватит чтобы прошить большинство моделей AVR микроконтроллеров не только в Linux, но и в других ОС.

Интерфейс внутрисистемного программирования ISP

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

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

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

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

В готовых устройствах программатор подключается к микроконтроллеру посредством интерфейса ISP (In System Programming) - интерфейс внутрисистемного программирования. ISP интерфейс представляет собою несколько проводников по которым поступает тактовый сигнал и данные для связки программатора с микроконтроллером.

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

Рис. 4. ISP интерфейс на плате.

Назначение пинов в ISP интерфейсе:

  1. VCC - плюс питания, как правило +5В;
  2. GND - минус питания, земля (Ground);
  3. MOSI - вход данных (Master Out Slave In);
  4. MISO - выход данных (Master In Slave Out);
  5. SCK - тактовый сигнал (Serial Clock);
  6. RST - дла подачи сигнала сброса (Reset).

Для внутрисхемного программирования микроконтроллера достаточно всего 4 пина, поскольку питание микроконтроллера может осуществляться от самой схемы где он установлен.

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

Программатор USB ISP ASP

Для работы с AVR чипами я приобрел недорогой USB ISP программатор по цене примерно 10$. Такое устройство есть сейчас в продаже во многих отечественных и зарубежных интернет-магазинах, так что с покупкой проблем не должно возникнуть.

Рис. 5. USB ISP - программатор со шлейфом для внутрисхемного программирования AVR микроконтроллеров фирмы ATMEL.

Данный программатор безопасен в использовании, имеет небольшие размеры и поддерживается большинством программ для прошивки микроконтроллеров AVR. USB ISP работает под операционными системами Linux, Mac OS X и Windows. Для Linux никаких драйверов устанавливать не нужно, после подключения программатора к USB порту устройство сразу же определится и будет готово к использованию.

Ниже приведу распиновку коннекторов программатора USB ISP - она нам потом пригодится при подключении к микроконтроллеру.

Рис. 6. Расположение пинов на разъеме USB ISP (распиновка).

Рис. 7. Расположение контактов в гнездах коннектора подключенного к программатору USB ISP.

Что делать если нет возможности купить программатор USB ISP ? - можно программировать микроконтроллеры используя несложные самодельные программаторы что подключаются к COM или LPT порту, но лучше самому изготовить USB ISP при этом один раз запрограммировав микросхему-микроконтроллер для него простым самодельным программатором через COM или LPT порт.

Рис. 8. Принципиальная схема самодельного программатора USB ASP ISP.

Подробную информацию по изготовлению USB ASP, а также печатные платы, драйвера и прошивку для микроконтроллера можно найти на официальном сайте: http://www.fischl.de/usbasp/

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

Программатор с использованием COM-порта

Этот программатор еще называют "программатором Громова", в честь того кто придумал эту схему, создателя программы Algorithm Builder (графическая среда для программирования AVR под Windows используя алгоритмический язык) - Г.Л. Громова.

Данный программатор позволяет программировать AVR чипы используя COM порт компьютера - интерфейс RS232. Для сборки такого программатора потребуется минимум деталей - 3 диода, 7 резисторов, разъем DB-9 или DB-25(в зависимости от того какой ответный разъем установлен у вас в компьютере) и коннектор ISP для подключения к микроконтроллеру (или же просто несколько проводников к чипу). Диоды в схеме можно использовать любые маломощные.

Рис. 9. Принципиальная схема программатора AVR микроконтроллеров через COM порт компьютера.

Для полноты информации ниже приведу распиновку портов RS-232 для вариантов DB-9 и DB-25.

Рис. 10. RS232 - COM Port, DB-9 расположение выводов.

Рис. 11. RS232 COM Port DB-25 - расположение выводов на разъемах.

Программатор с использованием LPT-порта

Как мы знаем, LPT порт компьютера предназначен для подключения локального принтера (Local Printer Port), но тем не менее его часто используют для подключения различных устройств и самоделок. В данном случаем мы можем его использовать для программирования AVR микроконтроллеров, собрав для данной цели очень простую схему что приведена ниже.

Рис. 12. Принципиальная схема программатора для AVR микроконтроллеров с использованием LPT порта компьютера.

Как видим, схема еще проще чем в варианте с , здесь нам нужны всего лишь 4 маломощных резистора и разъем (папа, со штырьками) для подключения к LPT порту компьютера.

Рис. 13. Расположение пинов для разъемов LPT-порта.

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

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

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

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

Для прошивки AVR чипов под Windows с использованием данных COM и LPT программаторов нужна программа UniРrof от Николаева, которая представляет собою универсальный программатор для AVR (avr.nikolaew.org).

ВНИМАНИЕ! Будьте предельно внимательны и осторожны при сборке и использовании программаторов с использованием COM или LPT порта компьютера, простой ошибкой можно запросто подпалить эти порты. Для нормальной работы таких программаторов нужно стараться использовать по возможности максимально короткие проводники от разъема к схеме программатора и микроконтроллеру. Микропроцессор компьютера желательно чтобы имел частоту не более 1-2 ГГц, а в качестве ОС для программирования чипов желательно использовать Win2000 или WinXP.

Также важно знать что переходники USB-RS232 (USB-COM Port) скорее всего не будут работать с программатором Громова, заработают возможно только те у которых стоят более новые микросхемы, так что лучше искать машину с родным COM-портом.

Заключение

Программаторы что рассмотрены в статье - это всего лишь несколько наиболее доступных и простых решений из большого списка программаторов для AVR: USBTinyISP, AVR-Doper, AVR vusbtiny, AVRISP-MkII, программаторы на FTDI и другие.

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

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

На макетной плате metaboard очень удобно собрать ISP программатор для AVR микроконтроллеров AVRProg . Схема очень простая, исходный код программатора открыт и доступен для двух вариантов программатора - есть версия USBasp и версия AVR-Doper . Схема программатора собирается прямо на макетном поле платы metaboard. Прошивку (версию программатора) можно легко поменять через USB бутлоадер, прошитый в плате metaboard.

[Возможности программатора AVRProg ]

1. На программаторе имеются два сокета-кроватки для установки программируемых микроконтроллеров AVR в DIP-корпусах на 8, 20 и 28 ножек, включая популярные ATTiny25/45/85, ATTiny2313, ATMega8, ATMega48/88/168/328 (8-ножечные AVR вставляются в 20-пиновый сокет).

2. Для программируемых микроконтроллеров генерируется тактовая частота 1 МГц (для тех микроконтроллеров, фьюзы которых установлены в расчете на работу с внешней тактовой частотой или с внешним кварцевым резонатором).

3. Схема программатора очень проста и удобна для самостоятельной сборки в домашних условиях.

4. Для схемы этого программатора (AVRProg на макетной плате metaboard) портировано две версии firmware - USBasp и AVR-Doper . Ожидается в будущем также портирование AVRminiProg . Ссылки на закачку firmware см. в .

5. Отдельный 10-пиновый коннектор ISP с цоколевкой, совместимой со стандартной 10 pin ISP (стандартные цоколевки разъемов ISP можно посмотреть в ), предназначен для внутрисхемного программирования микроконтроллеров AVR (а также как порт отладочного вывода в варианте AVR-Doper, см. далее). На этот коннектор выведено напряжение питания 5 вольт для программируемой платы, которое можно подключить установкой перемычки JP5 (см. принципиальную схему программатора), тактовая частота 1 МГц и сигналы приема-передачи отладочного UART.

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

Чтобы максимально упростить схему (и, соответственно, облегчить самостоятельную сборку программатора), из неё исключены преобразователи уровней, которые в общем случае обычно устанавливают для согласования логических уровней программатора и программируемой по ISP схемы, так как напряжение питания схемы программатора может отличаться от напряжения питания программируемого устройства (см. вариант подключения таких преобразователей уровня в ). Это означает, что программатор AVRProg и программируемое через ISP коннектор SV1 устройство должны по возможности питаться от приблизительно одного и того же уровня напряжения (около 5 вольт). В схему добавлены резисторы R1..R7, последовательно включенные в цепь цифровых сигналов, которые несколько смягчают (но не устраняют полностью) проблему с разностью логических уровней. Эти резисторы ограничивают максимальный ток и предотвращают повреждение программируемого устройства и программатора, которые питаются от разных напряжений. Благодаря этим резисторам и наличию в AVR защитных диодов производится некоторое преобразование уровня сигналов 1MHZ , RESET , MOSI , MISO , SCK , RXD , TXD , так что должно быть возможным программирование по ISP устройств, запитанных напряжением 3.3 вольта.

Кроме того, имеется возможность дополнительной подачи питания +5 вольт на программируемое устройство. Подача питания активируется установкой перемычки JP5. Имейте в виду, что в схеме программатора AVRProg отсутствует защитное ограничение тока, подаваемого на программируемое устройство. Конечно, за исключением того случая, когда программатор сам питается от USB, и контроллер USB компьютера имеет такую защиту. Никогда не устанавливайте перемычку JP5, если программируемое по ISP устройство питается от собственного источника напряжения и если напряжение питания программируемого устройства (подключенного через ISP SV1) отличается от +5V!

В схеме программатора использовался 10 pin ISP "старого стиля" (кроме такой ISP цоколевки имеются также и более удобные 6 pin ISP коннекторы), так как на его ножки выведены дополнительные сигналы (которые в оригинальной 10 pin ISP цоколевке подключены на GND). Это три дополнительные сигнала, которые Вы можете использовать для своих нужд в программируемом устройстве, если необходимо:

X1MHZ - тактовая частота 1 МГц. Может использоваться для оживления "брикнутых" чипов, которые рассчитаны на работу с внутренним RC-генератором, но у которых по ошибке неправильно установлены фьюзы на использование внешнего кварца или тактового генератора. Без подачи внешней тактовой частоты или подключения кварца запрограммировать такие AVR невозможно, тут как раз и может пригодиться внешний тактовый сигнал 1 МГц.

XRXD - вход последовательного порта, который может принимать вывод отладочных данных от программируемого устройства. Такая возможность поддерживается в версии firmware AVR-Doper. Все, что передает через UART отлаживаемое устройство (аппаратный UART есть почти в любом микроконтроллере AVR), может быть отображено в окне терминала, подключенного на виртуальный USB COM-порт AVR-Doper. Эта возможность упрощает написание и отладку программного обеспечения в программируемом по ISP устройстве на микроконтроллере AVR. Чтобы задействовать такую возможность, нужно аппаратный выход TXD порта UART программируемого AVR подключить к сигналу XRXD (выв. 10 ISP-коннектора SV1), а также использовать в отлаживаемом firmware макросы отладочного вывода (в библиотеках WinAVR это макрос DBG , можно также использовать printf , перенаправленный на UART).

XTXD - выход последовательного порта, который может передавать произвольные данные пользователя к программируемому устройству. Такая возможность поддерживается в версии firmware AVR-Doper. Все, что печатается в окне терминала (подключенного на виртуальный USB COM-порт AVR-Doper), будет передано на вход UART отлаживаемого устройства (аппаратный UART есть почти в любом микроконтроллере AVR). Это используется реже, чем отладочный вывод по XRXD (через макрос DBG или оператор printf), однако такая возможность также упрощает написание и отладку программного обеспечения в программируемом по ISP устройстве. Например, можно подавать в отлаживаемое устройство текстовые команды прямо из окна терминала. Чтобы задействовать такую возможность, нужно аппаратный вход RXD порта UART программируемого AVR подключить к сигналу XTXD (выв. 8 ISP-коннектора SV1).

Напряжение питания на программируемые чипы AVR, устанавливаемые в сокеты-кроватки IC1 и IC2, подается от двух ножек микроконтроллера платы metaboard PC3 и PC4 (выводы 4 и 5 коннектора JP3). Порты PC3 и PC4 запрограммированы, как выходы, и их выходного тока достаточно для прямого питания установленного в сокет программируемого микроконтроллера (специально используются два порта, подключенные параллельно - для увеличения нагрузочной способности выхода). Если на PC3 и PC4 выдана лог. 1, то питание на программируемый микроконтроллер подано. Это состояние также индицирует свечение красного светодиода, подключенного к выводу 1 коннектора JP3 (управляется программно ножкой порта PC0). Если на PC3 и PC4 выдан лог. 0, то программируемый микроконтроллер обесточен (при этом светодиод погашен), и его можно свободно вынимать из сокета, не опасаясь какого-нибудь электрического повреждения.

[Сборка программатора ]

Чтобы можно было установить коннектор ISP SV1, нужно выпаять коннектор питания JP4 платы metaboard (если он был установлен). Никаких других особенностей сборка не имеет, просто соедините все провода, руководствуясь принципиальной схемой - примерно так, как показано на фотографии. Разноцветные провода применены просто для наглядности, чтобы было проще разобраться в разводке разных сигналов. Правильно собранная схема начинает работать сразу и не требует никакой отладки.

Многие компоненты на схеме AVRProg не обязательны для установки. Например, если Вам не нужны сокеты-кроватки и нужен только ISP, то сокеты IC1 и IC2 можете не устанавливать и не распаивать. Или, например, если Вам не нужна возможность ISP-программирования, то можете не устанавливать ISP-коннектор SV1, при этом также не нужны резисторы R1..R7 и перемычка JP5.

Далее описаны отличия в работе двух вариантов firmware программатора - USBasp и AVR-Doper. Оба варианта легко загружаются в память чипа с помощью USB-бутлоадера и программы Khazama AVR Programmer (см. ), поэтому у Вас всегда есть возможность легко перепрошить любую нужную версию программатора. Для активизации бутлоадера должна быть установлена перемычка JP6 Upload, и при подключенной по USB к компьютеру плате metaboard нужно нажать кнопку S1 Reset (перемычка JP6 и кнопка S1 установлены изначально на плате metaboard). После этой нехитрой процедуры на компьютере появится USB-устройство USBasp (если нет драйвера, то система Windows запросит его. Драйвер возьмите из пакета по ссылке ). USB-устройство бутлоадера USBasp (USB бутлоадер эмулирует программатор USBasp) может принимать команды от оболочки программатора Khazama AVR Programmer. С помощью программы Khazama AVR Programmer в память чипа metaboard можно записать любой из двух вариантов firmware программатора - USBasp и AVR-Doper (описание работы с этим firmware см. далее). Варианты готовых прошивок firmware (и USBasp, и AVR-Doper) доступны по ссылке .

[USBasp ]

Скачайте по ссылке пакет архива и возьмите из него бинарник (HEX-файл) с соответствующим именем файла. В имени файла указан тип прошивки (USBasp или AVR-Doper), тип используемого в metaboard микроконтроллера (одинаково подходят как ATmega168PA, так и ATmega328P) и тактовая частота кварца (обычно используется кварц на 16 МГц, но возможны также частоты 12 , 15 , 16.5 , 20 МГц). Прошейте бинарник в память чипа с помощью USB-бутлоадера платы metaboard и программы Khazama AVR Programmer (выберите в ней чип платы metaboard и). Не обращайте внимания на предупреждения о невозможности поменять тактовую частоту ISP - USB бутлоадер максимально упрощен и не поддерживает обработку команды установки частоты ISP (для бутлоадера это не нужно).

После того, как firmware USBasp записано в память чипа платы metaboard, переподключите по USB плату metaboard с собранным программатором, и программатор USBasp готов к работе. Для работы с программатором AVRProg в варианте USBasp может использоваться та же самая программа Khazama AVR Programmer (версии не ниже 1.7.0) или утилита командной строки avrdude .

Вариант USBasp мне понравился меньше, чем вариант AVR-Doper, так как в этом firmware есть недоработки, связанные с отсутствием поддержки смены тактовой частоты ISP (оболочка Khazama AVR Programmer выдает сообщения об ошибке, но программатор все же работает). Кроме того, для некоторых чипов не поддерживаются фьюзы (fuses), как, например, для чипа ATmega328P. Несколько лучше обстоит дело с avrdude, но работа с этой утилитой не очень удобна, как как это все-таки утилита командной строки, а не GUI. Однако для пакетной работы (когда нужно автоматизировать потоковое программирование большого количества устройств) утилита avrdude может оказаться самым лучшим выбором. Для работы с avrdude выбирайте протокол usbasp.

[AVR-Doper ]

Прошивается firmware варианта AVR-Doper точно так же, как описан процесс для USBasp, просто из архива нужно взять другой файл прошивки (в имени которого упоминается AVR-Doper). Этот вариант, на мой взгляд, заслуживает большего уважения, так как представляет поддержку протокола STK500 компании Atmel (этот протокол стал стандартом de-facto, благодаря популярности платформы AVR и инструментальных средств для него). Протокол STK500 поддерживается AVR Studio , поэтому вариант AVR-Doper будет отлично работать совместно с оболочкой программатора AVRprog среды программирования AVR Studio. Это очень удобно для пользователей AVR Studio и открывает широкие возможности для программирования чипа (нет проблем с поддержкой фьюзов на некоторых AVR, как в случае с Khazama + USBasp). Для работы с avrdude выбирайте протокол STK500.

При работе в среде AVR Studio запустите утилиту программатора AVRprog и в начальном диалоге выберите вариант программатора STK500. Внимание: утилита AVRprog предложит перезалить firmware программатора, откажитесь от этого, нажав кнопку "Нет". В остальном работа с утилитой программатора не имеет особенностей и не заслуживает отдельного описания. См. также обзор работы с AVRprog AVRStudio по ссылке .

[Как устанавливать программируемые микросхемы в сокеты ]

Программирование DIP8 Программирование DIP20 Программирование DIP28

ATtiny25/45/85 ATtiny2313A-PU ATmega8, ATmega48/88/168/328

[Компиляция исходного кода USBasp и AVR-Doper ]

Поскольку доступен исходный код firmware программатора AVRProg metaboard (для версий USBasp и AVR-Doper), его можно доработать для своих нужд, перекомпилировать и перепрошить с помощью бутловадера в память чипа metaboard. В частности, в версии USBasp можно добавить поддержку команд смены тактовой частоты ISP.

В исходном коде USBasp и AVR-Doper есть одинаковая ошибка, которая связана с неправильным управлением портом индикационного светодиода LED1 (выбор порта не соответствует принципиальной схеме). В исходном коде, который Вы можете скачать по ссылке , эта ошибка исправлена.

Компиляция осуществляется просто, одинаково для версий USBasp и AVR-Doper. Для компиляции у Вас должен быть установлен пакет WinAVR. Распакуйте исходный код firmware в отдельную папку. Перейдите в корневой каталог проекта, где находится файл makefile , и выполните в командной строке друг за другом две команды: make clean и make metaboard . После этого в корневом каталоге проекта появится файл main.hex , который является двоичным файлом прошивки firmware программатора. Именно его нужно залить с помощью USB бутлоадера в память чипа платы metaboard.

Макетная плата metaboard может использоваться с микроконтроллерами ATmega168PA и ATmega328P. И для ATmega168PA, и для ATmega328P подходит прошивка программатора, скомпилированная для ATmega168PA. Имейте в виду, что прошивка, скомпилилированная для ATmega328P, не работает (почему - пока не разобрался). Если у Вас используется в metaboard кварцевый резонатор не на 16 МГц, а на другую частоту (12, 15, 16.5 или 20 МГц), перед компиляцией отредактируйте в makefile макроопределение F_CPU .

1 . Оригинальный исходный код firmware программатора USBasp, портированного на metaboard AVRProg (внимание: этот код содержит ошибки, используйте лучше исходный код по ссылке ). См. Download в конце статьи (закачивайте avrprog-metaboard-1.1.zip или более свежую версию).
2 . Оригинальный исходный код firmware программатора AVR-Doper, портированного на metaboard AVRProg (внимание: этот код содержит ошибки, используйте лучше исходный код по ссылке ).
3 . .
4 . Цоколевки коннекторов ISP .
5 . Программа Khazama AVR Programmer и драйвер USB для USBasp (операционная система Windows) . Для работы с USBasp-версией программатора AVRProg устанавливайте Khazama версии 1.7.0 или более свежую!
6 .