Как сделать универсальный USB-программатор для микроконтроллеров AVR своими руками. Какие возможности предоставляет программатор AVR-Doper. Как собрать и настроить программатор на базе платы AVR-USB-MEGA16. Какое программное обеспечение поддерживает работу с AVR-Doper.
Возможности и преимущества программатора AVR-Doper
AVR-Doper — это клон популярного программатора STK500, разработанного компанией Atmel для программирования микроконтроллеров семейства AVR. Программатор AVR-Doper обладает рядом важных возможностей и преимуществ:
- Поддержка режимов программирования ISP и HVSP
- Совместимость с протоколом STK500
- Питание и обмен данными через USB-интерфейс
- Возможность программирования широкого спектра микроконтроллеров AVR
- Поддержка популярными средами разработки (AVR Studio, CodeVisionAVR, BASCOM-AVR и др.)
- Открытый исходный код прошивки
Каковы основные режимы работы программатора AVR-Doper? Программатор поддерживает два основных режима:
![](/800/600/https/jogjarobotika.com/3208-thickbox_default/usbasp-donwloader-atmega8-dip-for-atmel-avr-controllers.jpg)
- ISP (In-System Programming) — стандартный режим для программирования большинства микроконтроллеров AVR
- HVSP (High Voltage Serial Programming) — режим для программирования микроконтроллеров с заблокированным доступом через ISP
Аппаратная реализация программатора AVR-Doper
Программатор AVR-Doper может быть реализован в двух вариантах — облегченном (только ISP) и полном (ISP + HVSP). Рассмотрим подробнее оба варианта.
Облегченный вариант AVR-Doper (только ISP)
Для реализации облегченного варианта программатора потребуется:
- Плата AVR-USB-MEGA16
- Микросхема 74HC126N
- Разъем ISP
- Несколько резисторов и перемычек
Схема сборки достаточно проста и не требует особых навыков. Основные элементы схемы:
- Микросхема 74HC126N для согласования уровней сигналов
- Перемычка JP1 для переключения питания программируемого устройства
- Резисторы R17 и R19 для измерения напряжения питания
- Коннектор SV1 ISP для подключения программируемого устройства
Полный вариант AVR-Doper (ISP + HVSP)
Полный вариант программатора дополнительно включает:
![](/800/600/https/forum.cxem.net/uploads/monthly_2016_09/schematics.jpg.bddbab5a6a8e21c7d397a17305388df8.jpg)
- Преобразователь напряжения для режима HVSP
- Транзисторные ключи
- Сокеты для микросхем в корпусах DIP8 и DIP14
Какие основные отличия полного варианта от облегченного?
- Наличие дополнительной платы с преобразователем напряжения и сокетами
- Поддержка режима HVSP для восстановления «убитых» микроконтроллеров
- Возможность программирования микросхем напрямую через сокеты
Программное обеспечение для работы с AVR-Doper
Программатор AVR-Doper поддерживается широким спектром программного обеспечения для разработки под микроконтроллеры AVR. Рассмотрим основные варианты:
AVR Studio
AVR Studio предоставляет наиболее полный набор возможностей для работы с программатором AVR-Doper:
- Выбор типа микроконтроллера и режима программирования
- Программирование flash и eeprom памяти
- Настройка фьюзов и битов защиты
- Калибровка внутреннего тактового генератора
- Измерение напряжения питания программируемого чипа
CodeVisionAVR
CodeVisionAVR предоставляет базовый набор операций для программирования микроконтроллеров через AVR-Doper. Однако в некоторых версиях наблюдались проблемы со стабильностью работы.
![](/800/600/https/radiotrack.wordpress.com/wp-content/uploads/2011/02/avr910skematik.png)
BASCOM-AVR
BASCOM-AVR имеет удобную оболочку для работы с программатором, которая включает:
- Программирование flash и eeprom памяти
- Настройку фьюзов
- Простой hex-редактор для навигации по данным прошивки
avrdude
avrdude — это консольная утилита, которая поддерживает работу с AVR-Doper в режиме USB HID. Основные преимущества avrdude:
- Кроссплатформенность (работает на Windows, Linux, FreeBSD)
- Высокая скорость работы в режиме USB HID
- Возможность автоматизации процесса программирования через скрипты
Настройка и использование программатора AVR-Doper
Для корректной работы программатора AVR-Doper необходимо выполнить несколько шагов по его настройке:
- Установить драйвер устройства в операционной системе
- Выбрать правильный COM-порт в настройках программного обеспечения
- Настроить режим работы программатора (USB CDC или USB HID)
Какие основные этапы настройки программатора в Windows?
- Подключение программатора к USB-порту компьютера
- Установка драйвера avrdoper.inf
- Определение номера виртуального COM-порта в Диспетчере Устройств
- Настройка программного обеспечения для работы с выбранным COM-портом
Практические аспекты использования AVR-Doper
![](/800/600/https/taggsm.ru/image/cache/data2021/foto_2022_63930c369152b-1024x768.jpg)
- Перед программированием убедитесь в правильности выбора типа микроконтроллера
- При использовании режима HVSP соблюдайте осторожность при работе с высоким напряжением
- Регулярно проверяйте обновления прошивки программатора для устранения возможных ошибок
Какие основные преимущества дает использование AVR-Doper по сравнению с заводскими программаторами?
- Низкая стоимость при самостоятельном изготовлении
- Возможность модификации и доработки под свои нужды
- Поддержка широкого спектра микроконтроллеров AVR
- Совместимость с популярным программным обеспечением
Перспективы развития проекта AVR-Doper
Проект AVR-Doper продолжает развиваться усилиями сообщества разработчиков. Некоторые перспективные направления развития включают:
- Добавление поддержки новых микроконтроллеров AVR
- Оптимизация скорости работы программатора
- Улучшение совместимости с различными операционными системами
- Расширение функциональности для поддержки отладки через debugWIRE и JTAG
Каковы основные преимущества открытой архитектуры проекта AVR-Doper?
![](/800/600/https/i.pinimg.com/originals/c8/a9/e1/c8a9e1efc96c5fe89a0baf18d6878039.gif)
- Возможность адаптации программатора под специфические задачи
- Быстрое исправление ошибок и добавление новых функций
- Обмен опытом и знаниями в сообществе разработчиков
- Потенциал для создания производных проектов на базе AVR-Doper
Делаем простой USB программатор USBTinyISP / Блог им. Ghost_D / RoboCraft. Роботы? Это просто!
Очень многие люди, начиная свое знакомство с микроконтроллерами, испытывают трудности с инструментом для их программирования. И это реально может охладить творческий пыл. Да что там говорить, я и сам после сборки своего первого Arduino долго пытался «вдохнуть» жизнь в «железяку». Здесь очень хорошо описаны мучения. Конечно, самый простой вариант «5 проводков» — это здорово! Но, в моем окружении (как я понимаю, и у многих) дома, на работе в компах и ноутбуках напрочь отсутствует LPT-порт! Да и COM-порт становиться достаточно редкой «экзотикой». Что же делать? Естественно, на сцене появляется вездесущий USB.![](/800/600/http/s007.radikal.ru/i301/1110/19/b9c016ff7e63.jpg)
Да и к тому же, как говорит мой хороший друг: «Это не наш метод. Мы сделаем сами, пусть по выходу окажется и в два раза дороже!».
Спешу обрадовать, что затраты на изготовление — мизерные. Самые дорогие компоненты — это Attiny2313 (примерно 2$) и разъем USB.
Итак, приступим. Нам нужен программатор который максимально прост и относительно дешев, подключается по USB, и при этом, поддерживается всеми современными ОС (LINUX, WINDOWS, MAC OSX) через программу avrdude. Изначально я рассматривал для повторения самый «примитивный» вариант. Дальнейшие поиски меня привели к — USBTinyISP!!! Стремясь к компактности, я выбрал для «клонирования» версию 1 (без буферной микросхемы). Ниже схема программатора.
Схема осталось оригинальной, за исключением перемычки для программирования (мне эта «фишка» абсолютно не нужна). А вот печатку я переделал под свои нужды.
(Номиналы деталей можно увидеть в SprintLayout при наведении курсора на нужный элемент)
Нам понадобится:
— кусок текстолита 63х33 мм
— МК Attiny2312 с колодкой под нее
— Разъем USB (тип B)
— Разъем 10х2 (как он правильно называется ???? Не знаю..)
— 4 резисторa 1.5 кОм (smd, маркировка 152)
— 1 резистор 1.5кОм (выводной 0.125Вт)
— 2 резисторa 33 Ом (smd, маркировка 330)
— 1 резистор 10к (smd, маркировка 103)
— 2 стабилитрона на 3.6В
— 2 конденсатора 22 pF (smd)
— 1 конденсатор 0.1 мF (smd)
— 2 светодиода (зеленый и красный)
— кварц на 12Mhz
— электролитический конденсатор 100x16V
— самовосстанавл. предохранитель (я выпаял из старой мат. платы). Если нету, можно поставить перемычку (на www.ladyada.net/ так и сделали).
— два штырька для перемычки
Естественно, ЛУТ.
После ЛУТа
После травления:
Мой любимый сплав Розе
Паяем SMD элементы
Теперь перемычки и оставшиеся элементы
Готово!
Небольшое лирическое отступление. Давным давно, в 2000-х годах у меня один приятель жаловался со сложностями в поиске НОРМАЛЬНОЙ работы (он работал водителем). Дело в том, что у него был на тот момент очень маленький стаж вождения :). Чувствуете подвох? На нормальную работу без стажа не берут. Стажа нет, потому что на работу не берут… И так замкнутый круг.
Так и в нашем случае, для изготовления программатора нужно запрограммировать контроллер… т.е. нужен программатор. Слава богу, это нужно проделать всего один раз. Выходов несколько:
— берем пиво и навещаем приятеля с программатором 🙂
— ищем компьютер с LPT-портом и паяем «5-проводков»
— нету LPT, но есть COM? Прекрасно, делаем программатор Громова!
— есть люди, предлагающие свои услуги по прошивке МК за небольшую «денюжку»
— другие варианты
У меня ситуация более, чем шикарная — у меня уже был программатор AVR910. Так, что вся процедура заняла не более минуты. «Прошиваем» МК с помощью AVRDUDE. (Все необходимое для этого сложено в архив и находиться в каталоге
avrdude.exe -p t2313 -c avr910 -P COM12 -U flash:w:usbtinyisp_(v.1).hex -U hfuse:w:0xdf:m -U lfuse:w:0xef:m
Кому менее повезло и пришлось прибегнуть к «5 проводкам» (кстати, официально он называется DAPA):
avrdude.exe -p t2313 -c dapa -U flash:w:usbtinyisp_(v.1).hex -U hfuse:w:0xdf:m -U lfuse:w:0xef:m
вот, вариант когда программатор USBTinyISP используется для прошивки себе подобного, а-ля «овечка Долли»:
avrdude.exe -p t2313 -c usbtiny -U flash:w:usbtinyisp_(v.1).hex -U hfuse:w:0xdf:m -U lfuse:w:0xef:m
Почему вариант с AVRDUDE более предпочтителен для начинающих? При выполнении вышеприведенных команд сразу же прошиваются и нужные фьюзы, т.е. ухера.. «убить» микроконтроллер достаточно сложно.
Итак, устанавливаем на плату свежепрошитый микроконтроллер. Еще раз советую проверить изготовленную плату на качество пайки, отсутствие «коротышей» и тому подобных неприятностей. И только если ВЫ на 100% уверены, подключаем наш программатор к разьему USB. После сообщения об обнаружении нового оборудования (речь идет о Windows), ставим как обычно драйвера. Они сложены в архиве в папке usbtinyisp w32 driver v1.12.
Проверяем, что все хорошо, заглянув в список оборудования:
Если Вам удалось увидеть такую же картинку, то поздравляю! Все готово. У Вас теперь есть USB программатор для AVR!!!
Не знаю как Вы, но мне ОЧЕНЬ захотелось сразу же опробовать изделие в действии. А давайте прошьем бутлодер в Ардуино.
Запускаем Arduino IDE, [Сервис]->[Программатор]->[USBTinyISP]
Жмем [Сервис]->[Записать загрузчик]
Буквально проходит 7 секунд, мерцание красного светодиода на программаторе… и ОПА!!! Все готово. Получите, распишитесь 🙂
А теперь небольшой БОНУС, расширяющий область применения нашего программатора. А именно, маленький адаптер для DIP корпусов наиболее распространеных AVR контроллеров. Мне приходилось иметь дело с ATTiny13/45 — 8 ножек, Attiny 2313 (тут смайлик)- 20 ножек, Atmega 8/48/168 — 28 ножек. За основу берем схему соединения колодок (схема откуда-то из инета):
Для простоты я не использовал сигналы тактирования XT1. (Для всяких неприятных случаев, у меня есть собранный FUSE Doctor :)) И еще, я не ставил на адаптер колодку под Atmega16 (DIP-40). Пока у меня не возникало необходимости в программировании таких контроллеров.
Ну, если осилили изготовление программатора, то сделать такой адаптер — вообще плевое дело!
Кстати, некоторые неиспользуемые контакты я просто-напросто удалил, во избежание ненужного контакта 🙂
Приклеиваем (для удобства) соответствующие надписи:
И вот, все в сборе, программатор и адаптер! Пользуйтесь на здоровье.
Весь материал (печатку, прошивку, драйвера и фото) для повторения можно забрать одним архивом тут.
Статья посвящена клону программатора STK500. Протокол STK500 разработан изначально фирмой Atmel, и поэтому описанный программатор принимается как «родной» большинством популярных программ — AVR Studio, CodeVisionAVR, BASCOM-AVR, avrdude. Программатор может быть изготовлен в двух вариантах — «облегченном», в этом случае он работает как стандартный ISP-программатор, и «полном», в этом случае дополнительно поддерживается возможность программирования чипа «высоковольтным» методом (HVSP), позволяющим восстанавливать чипы AVR (в данной версии программатора имеются сокеты для чипов с 8 и 14 ножками), брикнутые неправильной установкой фьюзов. Программатор работает на основе исходников программатора AVR-Doper (см. ссылки [2]), который был изначально рассчитан на микроконтроллер ATmega8. Портирование программатора AVR-Doper на макетную плату AVR-USB-MEGA16 (микроконтроллер ATmega32) позволило решить проблему «курицы и яйца» (т. е. чем запрограммировать программатор) — благодаря наличию в макетной плате AVR-USB-MEGA16 бутлоадера USBasp. Программатор питается и обменивается данными с компьютером через подключение по USB. Протокол USB обрабатывается программно, с помощью популярной библиотеки V-USB. Далее для краткости я буду называть описываемый программатор просто как AVR-Doper. Для начала несколько слов о возможностях AVR-Doper — чем он хорош и что умеет. — HVSP позволяет использовать ножку RESET для ввода и вывода (I/O), что особенно полезно для чипов, у которых мало ножек — с 8 и 14 выводами. AT90CAN128, AT90CAN128 Automotive, AT90CAN32, AT90CAN32 Automotive, AT90CAN64, AT90CAN64 Automotive, AT90PWM1, AT90PWM2, AT90PWM216, AT90PWM2B, AT90PWM3, AT90PWM316, AT90PWM3B, AT90PWM81, AT90S1200, AT90S2313, AT90S2323, AT90S2343, AT90S4433, AT90S8515, AT90S8535, AT90USB1286, AT90USB1287, AT90USB162, AT90USB646, AT90USB647, AT90USB82, ATmega103, ATmega128, ATmega1280, ATmega1280R212, ATmega1280R231, ATmega1281, ATmega1281R212, ATmega1281R231, ATmega1284, ATmega1284P, ATmega1284PR231, ATmega1284RZAP, ATmega128A, ATmega128RZAV, ATmega128RZBV, ATmega16, ATmega161, ATmega162, ATmega163, ATmega164A, ATmega164P, ATmega164P Automotive, ATmega164PA, ATmega165, ATmega165P, ATmega165PA, ATmega168, ATmega168 Automotive, ATmega168A, ATmega168P, ATmega168PA, ATmega169, ATmega169A, ATmega169P, ATmega169P Automotive, ATmega169PA, ATmega16A, ATmega16HVA, ATmega16M1, ATmega2560, ATmega2560R212, ATmega2560R231, ATmega2561, ATmega2561R212, ATmega2561R231, ATmega256RZAV, ATmega256RZBV, ATmega32, ATmega323, ATmega324A, ATmega324P, ATmega324P Automotive, ATmega324PA, ATmega325, ATmega3250, ATmega3250A, ATmega3250P, ATmega325A, ATmega325P, ATmega325PA, ATmega328, ATmega328P, ATmega328P Automotive, ATmega329, ATmega3290, ATmega3290A, ATmega3290P, ATmega329A, ATmega329P, ATmega329PA, ATmega32A, ATmega32C1 Automotive, ATmega32HVB, ATmega32M1, ATmega32M1 Automotive, ATmega32U4, ATmega406, ATmega48, ATmega48 Automotive, ATmega48A, ATmega48P, ATmega48PA, ATmega64, ATmega640, ATmega644, ATmega644A, ATmega644P, ATmega644P Automotive, ATmega644PA, ATmega644PR231, ATmega644R212, ATmega645, ATmega6450, ATmega6450A, ATmega6450P, ATmega645A, ATmega645P, ATmega649, ATmega6490, ATmega6490A, ATmega6490P, ATmega649A, ATmega649P, ATmega64A, ATmega64C1 Automotive, ATmega64M1, ATmega64M1 Automotive, ATmega64RZAPV, ATmega64RZAV, ATmega8, ATmega8515, ATmega8535, ATmega88, ATmega88 Automotive, ATmega88A, ATmega88P, ATmega88PA, ATmega8A, ATtiny11, ATtiny12, ATtiny13, ATtiny13A, ATtiny15L, ATtiny167, ATtiny2313, ATtiny2313A, ATtiny24, ATtiny24 Automotive, ATtiny24A, ATtiny25, ATtiny25 Automotive, ATtiny26, ATtiny261, ATtiny261 Automotive, ATtiny261A, ATtiny28L, ATtiny4313, ATtiny43U, ATtiny44, ATtiny44 Automotive, ATtiny44A, ATtiny45, ATtiny45 Automotive, ATtiny461, ATtiny461 Automotive, ATtiny461A, ATtiny48, ATtiny84, ATtiny84 Automotive, ATtiny85, ATtiny85 Automotive, ATtiny861, ATtiny861 Automotive, ATtiny861A, ATtiny88, ATtiny88 Automotive Короче говоря, программируется все, что шевелится. [ISP — облегченный вариант AVR-Doper] Для облегченного варианта программатора (поддерживающего только ISP) необходимо собрать на макетном поле платы AVR-USB-MEGA16 следующую схему: Коротко о назначении элементов схемы: 1. Микросхема 74HC126N нужна для согласования уровней сигналов при раздельном питании программируемого устройства и программатора. Больше никаких особенностей схема не имеет, все тупо и просто. Внешний вид собранного программатора: Назначение установленных на плату деталей: JP1 Power переключает тип питания программируемого устройства (см. описание принципиальной схемы). 12-выводный коннектор мама у нижнего края платы пока никуда не подключен. Он предназначен для расширения функционала программатора — добавления возможности HVSP. Правильно собранный и прошитый (с помощью встроенного в макетную плату bootloader-а USBasp) программатор никакой наладки не требует и начинает работать сразу. Внимание! Чтобы правильно работал ADC для измерения напряжения, нужно не забыть выпаять резистор R3 платы AVR-USB-MEGA16 (т. к. используется внутренний источник опорного напряжения 2.56 вольт). Программатор AVR-Doper в «боевом положении» — считывается память flash у микроконтроллера ATmega32, установленного на макетной плате AVR-USB-MEGA16. [Установка AVR-Doper в операционной системе Windows] Процесс несложный, разберем его по шагам. 1. Снять перемычку JP3 USB HID (если она установлена). Программатор у нас будет работать в режиме USB CDC (виртуальный COM-порт), этот режим работает по стандартному протоколу STK500, что позволит использовать программатор в большинстве популярных IDE для программирования AVR (AVR Studio, CodeVisionAVR, BASCOM-AVR и др.). [HVSP — полный вариант AVR-Doper] Этот вариант схемы немного сложнее, но зато он поддерживает сразу 2 режима программатора STK500 — ISP и HVSP. Схема взята почти один-в-один с оригинального варианта, с минимальными переделками — поменял силовой транзистор преобразователя на MOSFET, и добавил индикационный светодиод REG_LED LED1, показывающий нагрузочный режим регулятора напряжения преобразователя (устанавливать этот светодиод необязательно). Схема состоит из двух частей — PARTA и PARTB. Часть PARTA целиком собрана на макетной плате AVR-USB-MEGA16 и почти полностью повторяет схему облегченного варианта AVR-Doper, так что облегченный вариант можно легко допаять, подключив коннектор-маму JP4. Часть PARTB собрана на отдельной подсоединяемой плате и содержит преобразователь напряжения, транзисторные ключи и сокет для подключения программируемых микросхем в корпусах DIP8 и DIP14. Схема никаких особенностей не имеет и наладки не требует — правильно собранная, начинает работать сразу. На фото показан внешний вид дополнительной платы PARTB и программатор в сборе. Два маленьких коннектора ISP и JTAG на макетной плате AVR-USB-MEGA16 используются только для жесткости — как механическое крепление платы PARTB. Самое сложное в изготовлении было найти дроссель (в описании сказано, что подойдет любой 0.3 .. 3 мГн). Я поступил просто — взял готовый дроссель от материнской платы с ферритовым сердечником (внимание: кольцевой, тороидальный сердечник не подойдет), замерил его индуктивность, снял обмотку, при этом посчитав витки. Далее просто намотал новую обмотку на требуемую индуктивность подходящим проводом (индуктивность катушки прямо пропорциональна квадрату числа витков, поэтому рассчитать количество витков просто). У меня получился отличный дроссель на 1.7 мГн (216 витков эмалированного провода диаметром 0.12 мм). Сверху надел термоусадочную трубку и прогрел феном (воздушный поток 150 градусов Цельсия). В режиме HVSP программатор работает в несколько раз быстрее, чем в режиме ISP (с чем связано — не знаю, наверное с особенностью протокола). Кроме того, есть полный доступ к фьюзам, позволяющим использовать ножку RESET чипа как порт ввода/вывода, что весьма полезно, если для разработки устройства на микроконтроллере Вам не хватает ножек. [Программное обеспечение для AVR-Doper] Как я уже упоминал, выбор программного обеспечения богатый — как минимум AVR Studio, BASCOM-AVR и кроссплатфоменный avrdude. Сначала ничего не хотел про это писать, все вроде и так понятно, но потом все-таки решил сделать краткий обзор. Фаворит, ИМХО, среди всех программ — оболочка программатора AVR Studio. У CodeVisionAVR наблюдались глюки — после обращения к программатору программа отказывалась видеть программатор до его перетыкания в USB. Неплохая программная оболочка у программатора в BASCOM-AVR — есть возможность навигации по данным прошивки (простейший HEX-редактор). Для постоянно повторяющихся операций лучше всего подойдет консольная программа avrdude. Все программы объединяет необходимость перед первым использованием программатора выбрать в настройках его тип (STK500 или AVRISP) и настроить COM-порт, к которому подключен программатор. Особых трудностей это не вызывает — все делается в соответствующем меню настроек, а номер COM-порта легко узнать через Диспетчер Устройств. AVR Studio Набор возможностей программы впечатляет. Есть доступ к всем режимам программирования, фьюзам, битам защиты, имеется настройка частот SCK ISP и частоты тактирования чипа CLK, считывание уровня напряжения питания чипа, калибровка встроенного тактового генератора и проч. Бегло рассмотрим возможности программы, пробежавшись по закладкам. Первая закладка Main позволяет выбрать из выпадающего списка тип программируемого чипа, выбрать режим программирования (ISP или HVSP), полностью стереть чип, прочитать его сигнатуру. Есть также возможность установить частоту тактов SCK ISP, выбрав её из ряда частот. Закладка Program позволяет программировать flash и eeprom чипа (для этого есть кнопки Program и система выбора файла), сверить память чипа с файлом (кнопки Verify), а также скидывать в hex-файл содержимое памяти (кнопки Read). Можно также сохранить состояние фьюзов и бит защиты в файл формата ELF, а также записать фьюзы и биты защиты данными из ELF-файла. Переход на закладку Fuses автоматически считывает состояние перемычек, и показывает их в виде чекбоксов и в HEX-формате. В этом окне можно перемычки записывать, проверить, прочитать. Закладка LockBits позволяет манипулировать битами защиты. Принцип работы и возможности тут те же самые, что и для закладки Fuses. Закладка Advanced позволяет считывать или менять калибровочные данные для внутреннего тактового генератора RC. Закладка HW Settings позволяет узнать напряжение питания программируемого чипа, а также установить тактовую частоту генератора CLK. Генератор применяемого для чипа, у которого нет кварца, либо если по каким-то причинам у чипа не работает тактовый генератор. Тактовая частота CLK выводится на ножку 3 разъема SV1 ISP программатора AVR-Doper. Я обычно этот сигнал не использую. Закладка HW Info позволяет получить информацию по железу и прошивке программатора AVR-Doper. Сюда заглядывать нет особой необходимости. Закладка Auto позволяет делать групповые заранее настроенные операции с чипом, которые доступны на других закладках. Я этой возможностью почти никогда не пользуюсь. CodeVisionAVR Тут писать особо нечего, набор операций простейший. Приведу только несколько скриншотов. К сожалению, моя версия CodeVisionAVR сильно глючила, и работать с ней было почти невозможно. BASCOM-AVR Из особенностей программы обращает на себя внимание то, что попасть в оболочку программатора невозможно, пока не открыт любой проект, хотя бы и новый, совершенно пустой. Оболочка довольно тормознутая при обмене с программатором, зато работает без глюков, и есть прогресс длительных операций. avrdude Программатор AVR-Doper поддерживается консольной утилитой avrdude в режиме USB HID, начиная с версии 5.3 (более ранние версии требуют патча и перекомпиляции). Утилита работает и под Windows, и под *nix (Linux, FreeBSD). Для Windows avrdude можно скачать в составе пакета WinAVR. Версия avrdude, с которой я экспериментировал, была 5.5 (версию можно узнать командой avrdude -v). Для работы с avrdude нужно установить перемычку JP3 USB HID и переподключить USB-интерфейс программатора. Для проверки работоспособности программатора можно ввести команду avrdude -c stk500v2 -P avrdoper -p atmega32 (для чипа atmega32): А вот пример сохранения памяти flash в файл на диске c:\001.hex: В режиме USB HID программатор работает намного быстрее, чем в режиме USB CDC с программами AVR Studio и BASCOM-AVR. Поэтому для часто повторяющихся операций лучше всего выбрать avrdude. Имеется также написанная для avrdude графическая оболочка avrdude-gui.exe. Еще пробовал программатор AVR-Doper с программой CrossStudio/CrossWorks AVR 1.3. Программатор определяется и работает, однако подробно не тестировал, поскольку опыта работы с CrossStudio/CrossWorks у меня нет. [Словарик терминов] AVR популярное семейство микроконтроллеров компании Atmel. Разделяется на подгруппы AVR Classic, AVR Tiny и AVR Mega. Последние два семейства самые современные и как правило поддерживают технологию аппаратной отладки debugWIRE через ножку RESET, либо отладку через JTAG. firmware программное обеспечение для микроконтроллера. Обычно термин применяется отдельно от термина software, чтобы подчеркнуть, что программа работает не на PC, а в «железячном» устройстве. fuses фьюзы, перемычки. Под этим термином понимаются энергонезависимые настройки (т. е. сохраняющиеся между выключениями питания), влияющие на потребительские свойства микроконтроллера AVR. Например, фьюзами может быть запрограммирован тип тактового генератора (кварцевый или внутренний), включение по умолчанию сторожевого таймера, коэффициент деления тактовой частоты и многие другие опции. ISP аббревиатура In System Programming. Означает возможность записи программы firmware в чип (микроконтроллер) прямо на плате, на которой чип установлен. HVSP аббревиатура High Voltage Serial Programmer — программатор, поддерживающий программирование чипа повышенным напряжением. STK200 название уже несколько устаревшего протокола (разработан Atmel) обмена данными с программатором. STK500 название популярного открытого протокола (разработан Atmel) обмена между программатором и компьютером, к которому программатор подключен. Протокол работает поверх подсоединения программатора через стандартный COM-порт (обычный, или виртуальный, работающий через USB). брикнутый чип микроконтроллер, приведенный в нерабочее (и непрограммируемое через ISP) состояние. Восстановить такой чип можно только через HVSP. [Ссылки] 1. STK200-совместимый программатор, собранный на базе макетной платы AVR-USB-MEGA16. |
USBasp программатор AVR микроконтроллеров делаем сами
В инете сказано, что USBasp — один из наиболее простых для повторения AVR USB программаторов. + требует минимум внешних компонентов, имеет несколько готовых вариантов разводки печатной платы и оболочек для программирования, а также может работать под Linux и MacOS.То что нужно! Делаем )))
Процесс изготовления
1. Нашел схемку программатора на контроллере Mega8. Требуется минимум навестных элементов
2. Модифицировал печатную плату под свой корпус. Пришлось немного попотеть, чтоб впихнуть в корпус от сплиттера в одну линейку и МК, и USB-разъем и IDC-10. Результат превзошел мои ожидания )
3. Переносим рисунок с чудо-бумаги на плату. Дорожки немного расплылись — не беда. Исправим это с помощью иголки (булавки, или еще чего острого).
4. Процесс травления уже позади. Плата промыта и просушена.
5. Стираем растворителем тонер — получаем готовые дорожки для будущего устройства
6. Далее слесарно-монтажные работы — пилим, сверлим, точим, лудим (последовательность выбирайте сами)
7. Получилась компактная плата, пока еще без элементов.
8. Пичкаем плату нужными элементами. Пока без светодиодов и разъем IDC-10 слишком длинный (торчит из корпуса)
9. Выпаиваем Г-образный IDC-10 разъем. Вместо оплетки для лужения (и прочих премудростей) использовал обычный многожильный провод. Получилось аккуратно и быстро )))
10. Припаиваем SMD-компоненты. Вид со стороны дорожек. Все делалось паяльником на 60Вт с жалом 5мм в диаметре. Таким нужно еще наловчиться…
11. Не все резисторы получилось перевести на SMD. Вид со стороны компонентов.
Как видно, контроллер — USB — IDC-10 плотно расположены… Кварц взял обычный, благо высота корпуса позволяет.
12. А вот и корпус, куда будет помещен программатор. Очень полезная штука )
13. Устройство благополучно внедрено в «шкурку сплиттера». Компактно вышло.
14. Размер платы по сравнению с 5 рубленными «монетками»
16. Конечный итог…
Доработанная печатная плата USBasp программатора: СКАЧАТЬ в формате Lay [13,91 Kb] (cкачиваний: 408)
Программирование микроконтроллера Mega8
1. Прошиваем микроконтроллер с помощью этого программатора:
Простой LPT программатор AVR микроконтроллеров (5-ть проводков)
Заливаем файл прошивки под названием «usbasp.atmega8.2007-10-23.hex» из архива в конце статьи…
Подключаем к программатору адаптер для программирования микроконтроллеров.
Данные для самостоятельного изготовления можно взять здесь…
Печатная плата адаптера в формате lay для Sprintlayout [12,78 Kb] (cкачиваний: 672)
При подключении USB будет постоянно светиться зеленый (красный) светодиод
Установка драйвера для USBasp
1. Можно было запрограммировать и в самом USBasp программаторе, подключив к нему простой программатор согласно распиновке. Если все собрано и запрограммировано верно, то устройство при подключении к ПК определится и «попросит» установить двайвер.
2. На что ему вежливо ответим выбрав папку со скаченными и разархивированными двайверам
3. Драйвера успешно установятся, если схема собранна верно и МК тоже прошит верно.
4. В диспетчере устройств определится программатор как: LibUSB-Win32 Device.
Радуемся, и тестируем )
Проверка работоспособности программатора
1. В качестве програмки использовал avrdude в оболочке Sinaprog1.5.5.10.
Можно использовать и приложенное к архиву оболочкуUSBASP_AVRDUDE_PROG
Для проверки доступа к Attiny13A привожу пошагово такую инструкцию. Контроллер опознан, можно заливать прошивку в Attiny13A .
Необходимые данные для повторения устройства находятся в этом архиве:
Прошивка, программа, печатка, драйвер [992,87 Kb] (cкачиваний: 1258)
Всем удачи!
06-01-2011 Описание Этот простой AVR программатор позволит вам безболезненно загружать программы в формате hex в большинство AVR микроконтроллеров от ATMEL, не жертвуя своим бюджетом и временем. Он более надежен, чем большинство других простых доступных AVR программаторов, и на его сборку уйдет гораздо меньше времени. AVR программатор состоит из внутрисхемного последовательного программатора (с разъемом) и маленькой печатной платы с DIP панелькой, в которую вы можете поместить свой микроконтроллер и быстро его запрограммировать. Вы также можете использовать этот программатор только как внутрисхемный, с помощью которого можно легко программировать AVR микроконтроллер, не извлекая его из устройства. Весь AVR программатор собирается из широко распространенных компонентов и умещается в корпусе разъема COM порта. Печатная плата с DIP панелькой позволяет вставлять в нее 28-выводной AVR микроконтроллер ATmega8 в корпусе DIP, но вы можете изготовить печатные платы для микроконтроллеров в любых других корпусах. Этот программатор совместим с популярным ПО PonyProg, которое показывает вам ход процесса прошивки в виде шкального индикатора статуса. Внутрисхемный последовательный программатор AVR |
После программирования появится окно «Write successful», показывающее, что AVR микроконтроллер был запрограммирован и теперь готов к использованию.
- Проверяйте монтаж и подключение к целевому микроконтроллеру.
- ну в этой схеме нет ничего военного и изготовлять ее не надо а включил ком порт лоника в комп и вперед,правда в моем еще по ком порту стоит буфер чтобы случайно не сжечь.А что касаеться по пользованию прогой пони -забыли про одно из главного сказать-про фьюзы.ведь неправильно установишь и микросхема залочиться
- ком порт устарел. если есть только usb то работу с контроллерами можно считать оконченой даже не начав???? usb-com ни кто в сети не предлогает.а если и предлогают то в схеме как раз стоит контроллер. если уж собирать самому то с нуля. а не так как сейчас многие делают, заказал конструктор, напихал в дырки элементов,запаял,и всё.таких гениев на службе хватает. а подойдёш к такиму с вопросом он и толком знать не знает. а ведь хочется знать подробно.
- Ну конечно никто (пишется слитно!) не предлАгает. Поскольку куча готовых микросхем есть в типовом включении — мостов USB-COM на 5В и 3.3В питания. Но шибко грамотные граждане естественно об этом не знают. Про AVR910-аналог от Проттоса тоже не знают, в котором МК по USB виртуальный COM-порт изображает и программирует по ISP. Например. У буржуев тоже куча аналогичных конструкций. И описаний подробных конечно нет — это же искать надо. А хочется сразу готовенького — нажал на одну кнопку и все-все на блюдечке с голубой каемочкой. А может лучше уроки учить?
- много уважаемый SergeBS этот форум не для орфографических ошибок и тем более не для поучений о том что оно есть. тут помощи и совета просят у людей которые знают и сталкивались с той или иной проблеммой. а то что есть готовое и можно купить и не напрягаться это конечно круто. P.S тем не менее спасибо ВАМ за участие в проблемме. И ОТДЕЛЬНОЕ ЗА ОЧЕНЬ ПРИГОДИВШИЕСЯ ПОУЧЕНИЯ. буржуям привет, а то что у них до?рена чего есть этого то я и знать не мог. куда нам крестьянам.
- Угу. Типа «крютые», которые как хотят так и пишут. Причем «проблемму» и сформулировать не могут. Сопли типа:»хачу чавой-то знать, а чаво — ня знаю самм» — не в счет.:)
- Вы ещё не знаете из чего всё это делается… На китайской барахолке детали для ваших схем продают на вес килограммами и никакие стандарты качества к таким деталям не имеют отношения. Покупайте только фирменные товары в соответствующих фирмах.
- Заказываю в Интернет-магазинах (российских). Пока (тьфу * 3) на брак/халтуру и т.п. не налетал.
- Здравствуйте! Всех с наступающим Новым Годом! 🙂 Собрал программатор для AVR по указанной схеме (проверял 3 раза все). Но понипрог 2000 отказывается видеть и программировать контроллер ATMega168-20PU — выдает ошибку device missing or unknown device (-24). Использовал стабилитроны КС407Г, Транзистор КТ3102АМ и диод КД522Б. Кварц у меня был на 4.032 МГц. Питание от L7805. Перед возникновением ошибки успевают придти сервисные сообщения, которые я мониторю с помощью Advanced Serial Port Monitor, но там только включение и выключение Break в процессе записи. Никакие данные не уходят. Настраивал ПониПрог2000 все по инструкции. Шаг за шагом. С чем эта ошибка может быть связана? Нужно ли подсоединять 22 ножку к земле и 20 к питанию (аналоговые земля и питание)? Почему не используется чип-селект (SS ножка 16 контроллера)? Спасибо за помощь!
- Я собрал этот программатор и использовал:
Резисторы — указанных номиналов
Транзистор — KT3102ГМ
Диод h58 это аналог 1N4148
Стабилитроны — BZX55C 5.1 вольта
Также кварц на 4Мгц и 2 керамических конденсатора на 22 пФ, но я не думаю что они обязательны т.к. использование кварца внутренний/внешний мы устанавливаем программируемыми битами, с завода микрухи запрограммированы использовать внутрений кварц(если я не ошибся)
Внешнее питание от +5В обязательно.Я подключил от БП того же ПК с которого заливал прошивку.
Диод h58 (такая маркировка на присутствует на корпусе этого диода) на просторах интернета говорят что это аналог 1N4148.
У меня всё работает, ПониПрог 2000 успешно залила прошивку в ATmega8.
Фото
View post on imgur.com
http://i.imgur.com/gCzAuzA.jpg - Посоветую один из проектов avr mk ii clone, на базе либы и примера от lufa. Контроллер at90usb168 обычно идет с бутлоадером, позволяющим после сборки залить прошивку через usb без внешнего программатора. Поддерживает все нынешние avr, включая xmega и новые тиньки, pdi/tpi протокол. Работает с avrstudio и dude, разные прошивки для них. Исходники открыты, шишки отработаны. Например, для новых студий достаточно инкрементить версию fw в настройках прошивки. Собирается прошивка под winavr. Мой вариант в этой теме, от 12 года. С фоточкой. http://m.radiokot.ru/forum/viewtopic…rt=700&t=26417
- Здраствуйте.собрал этот прогроматор для прошивки ATtiny 2313 все работае прог.читаем МК без проблем но вот такая проблема атор схемы для которой я прошиваю МК написал что первый раз можно прошивать без внешнего кварца,но при этом сперва заливать прошивку МК,а потом менять Fuse короче я залил прошивку,встала нормально,потом поменял Fuse и нажал Write но после таго как я нажал Write вылезла вот это Device missing or unknown device (-24) и после этого больше МК не читаеться в чом может быть проблема
- это обратно я подскажите пожалуста попробывал прошить ATtiny 2313 с внешним
кварцем ипоставил 2 конденсатора,кварц на 8 МГц,подк. прогром.он прочитал МК
открыл прошивку в пони выставил Fuse какие надо вот это заводские
View post on imgur.com
а вот такие надо прошитьView post on imgur.com
но еще что я заметил в заводских стоит одна галочка которую нельзя убрать называеться SPIEN ,а какие надо прошить там нет этой галочки ну ладно дальше продолжу свою проблему после таго как я откры прошивку и выставил Fuse как на второй картинке я нажал READ DEVICE пошол процес прошивки и в завершении вышло вот этоView post on imgur.com
потом я закрыл пони и открыл снова и нажал прочитать МК и получил вот это Device missing or unknown device (-24) такое же что я прошивал без внешнего кварца,выше описанное,и после этого этот МК больше не читался кто может сказать в чом дело,что я зделал не так Просто уже 3 МК убил большое спасибо прото я в этом новичок - У меня эта ошибка вылазила только когда я внешнее питанее не подключал, ну естественно у тебя в схеме могут быть ошбки, может ты не на ту микруху пони прог настроил(но маловероятно ведь прошивка залилась я сам новичёк.) SPIEN – фьюз, который разрешает работу МК по интерфейсу SPI. Все микроконтроллеры выпускаются с уже установленным битом SPIEN. Считается опасным фьюзом…
- Fuse-бит SPIEN установлен по умолчанию в микроконтроллерах AVR (режим внутрисхемного программирования) и с помощью PonyProg его убрать не получится. Да и вообще его лучше не трогать… Установив и запрограммировав Fuse-биты как на последней картинке, вы настроили мк на работу от внешнего кварца 8 Мгц, отключили внутренний делитетель тактовой частоты на 8 и включили Brown-Out Detector (модуль контроля питания) с уровнем 2.7 В. И после этого программатор микроконтроллер не увидел, поэтому логично было бы подать на микроконтроллер внешнее питание (не от PonyProg) и попробовать прочитать его снова. PS: Конечно, если изначально все было сделано корректно (тип микроконтроллера в программаторе ри программировании был выбран правильно и Fuse-биты были правильно установлены)
- спасибо за ответ просто я прошил на 3 МК нету прошивку и теперь прогром.не видет их и мне надо их перешить и я всегда подовал внешние питание при прошивки но пони всеравно его не видит,но МК работает,я вставлял ее на прибор для кокого я ее прошивал все три рабочие,но мне надо туда другие залить Я спросил у автора схемы для которой я их прошивал как их перешить он мне сказал что если с внешним кварцем неопределяеться то надо еще внешний генератор тактовой частоты делать и подовать сигнал на МК XTAL 1 и тогда прогром. увидет МК если кто может кинте не сложную схемку внешний генератор тактовой частоты сколько гуглил не чего чот не нашол или может кто другой способ а Fuse мне обезателно надо было помннять как на второй картинке потомучто с заводскими работать не будет спасибки за помощь
- Спасибо за статью! Отличный адаптер. Работает шустро, без ошибок. Я первым делом под LPT порт спаял, не было под рукой COM штекера. Дак LPT порт сгорел на первой же заливке. Пришлось бежать за COM штекером в магаз. Так же рекомендую спаять фьюз доктора — очень полезная штука. Я первый-же кристал так отфьюзил, казалось что он выпустил свою душу (синий дымок), а нннет! — Дохдур фьюз его моментально вернул к жизни. Вот и выходит: этот адаптер + док фьюз = полноценный параллельный программатор.
- После «синего дымка» ни один доктор его бы к жизни не вернул. А «Доктор фьюз» — да, наверное, иногда может быть полезным. Но почти всегда удается обойтись и без него, нужно только затактировать МК не от кварца, а от внешнего генератора…
- А вот мне посчастливилось, при первом же конфигурировании фьюзов, захлопнуть так, что ни один генератор не спасёт. Я не знал, что бывают 2 варианта отображения фьюзов: Прямой (исторический, канонический) и инвертированный (интуитивно удобный). Вот я и выставил в каноническом галки с фото инвертированного. Кстати, PonyProg, оперирует фьюзами в инвертированном представлении.
- Читать всем:
Еще одним несложным, в плане изготовления, является COM программатор. При условии использования альтернативного режима COM порта Bitbang, отпадает необходимость в преобразовании интерфейса RS232 COM порта в SPI, необходимый для программирования. Остается только привести уровни сигналов COM порта (-12В, +12В) к необходимым (0, +5В). Это и делает
схема COM программатора для AVR микроконтроллеров:
Данная схема программатора достаточно распространена и известна как программатор Громова. Название пошло от автора программы Геннадия Громова, который и предложил такую схему.
Чтобы собрать программатор Громова нам нужно следующее:
Диоды КД522, КД510, 1N4148 или им подобные. Резисторы можно использовать любые, какие найдете. В качестве шлейфа можно использовать IDE шлейф. При подключении шлейфа, для более устойчивой работы программатора, каждый «сигнальный» провод должен чередоваться с «земляным» проводом. Это позволит уменьшить уровень помех наводимых в линиях и за счет этого увеличить длину программирующего провода. Длина шлейфа должна быть в пределах 50 см. Еще нужен разъем для подключения к программируемому устройству.
Для внутрисхемного программирования Atmel рекомендует стандартные разъемы:
Если Вы планируете серьезно заняться микроконтроллерами, сделайте разъемы стандартными. Для разового программирования устройства я рекомендую использовать на программаторе (такими разъемами к материнской плате подключаются кнопки и светодиоды корпуса компа — именно их я и взял) и штырьки PLS «папы» на плате. Это позволяет максимально упростить разводку платы устройства, так как штырьки для программатора устанавливаются в непосредственной близости возле ножек микроконтроллера. Ножки MOSI, MISO, SCK у микроконтроллеров AVR всегда расположены вместе, поэтому для них можно применить строенный разъем. Отдельно делаем подключение для «земли»-GND и «сброса»-Reset.
Собрать COM программатор не составит труда:
Я сознательно не даю печатной платы под этот программатор, так как схема проста и возня с разводкой и травлением платы просто себя не оправдывает.
Для того чтобы наш COM программатор заработал нужна , к которой мы подключим программатор и для микроконтроллера.
— Так как режим Bitbang нестандартный для COM порта компьютера, то возможны сбои в работе (хотя у меня такого не было). Особенно это касается ноутбуков. Как вариант решения этой проблемы можно рекомендовать «поиграться» настройками COM порта (скорость, биты данных, варианты управления потоком, величины буфера …).
— Отдельный разъем для «земли» желательно подключить первым, чтобы уравнять потенциалы «земли» программируемого устройства и компьютера. Для тех, кто не знает, если у Вас компьютер включен в обычную розетку, без заземляющего контакта, то в виду особенности фильтра блока питания компьютера, на корпусе компьютера всегда присутствует потенциал в 110В.
Заключение:
— COM программатор Громова простой и надежный. Я не перестал пользоваться им даже собрав USB программатор (если какой либо микроконтроллер перестает программироваться USB программатором я обязательно перепроверю его на программаторе Громова).
— Так как программатор Громова собран на пассивных элементах он не требует для себя питания. Мало того, из-за паразитного питания, микроконтроллер можно запрограммировать вообще не подключая к нему источника питания! Хотя так программировать я не рекомендую, но сам факт интересен.
— Для пользователей Algorithm Builder есть приятный бонус! Этот программатор можно использовать для внутрисхемной отладки кристалла (программный JTAG).
В данной статье мы опишем „шаг за шагом” этапы изготовления 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 вольт
- Указание работы программатора с помощью светодиода
Перед началом работы, стоит ознакомиться с последовательностью всех выполняемых действий, а именно:
- Выбор схемы/рисунка печатной платы
- Перенос рисунка печатной платы на фольгированный стеклотекстолит
- Травление печатной платы в растворе хлорного железа
- Сверление отверстий
- Монтаж элементов (пайка)
- Программирование Atmaga8 программатора
- Подключение программатора к компьютеру
- Установка драйверов – Windows XP, Windows 7
- Выбор программы с поддержкой 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.
Робот своими руками — Простой программатор AVR. AVRDUDE.
Для того чтобы запрограммировать («прошить») микроконтроллер, необходим программатор. Программатор представляет собой программно-аппаратный комплекс, состоящий непосредственно из устройства, связывающего микроконтроллер с компьютером, и программы, которая этим устройством управляет. Программатор заносит подготовленную для микроконтроллера программу в его память.
Наиболее распространенным способом программирования для AVR является внутрисхемное программирование (функция ISP — in-cirсuit serial programming) через коммуникационный интерфейс SPI. Этой возможностью обладают все микроконтроллеры AVR, кроме Tiny11 и Tiny28. Данный режим удобен тем, что позволяет программировать AVR, расположенный в готовом устройстве, то есть вам не нужно вытаскивать микроконтроллер из платы каждый раз, когда вы хотите его перепрограммировать.
Интерфейс SPI (Serial Peripheral Interface) представляет собой 3 линии: SCK, MISO и MOSI.
SCK (SPI ClocK)
Тактовый сигнал, который программатор формирует на линии SCK.
MOSI (Master Out, Slave In — вход ведомого, выход ведущего)
Линия передачи данных от программатора (ведущий), к программируемому
микроконтроллеру (ведомый). Во время каждого импульса на линии SCK
передается один бит от программатора к программируемому
микроконтроллеру по линии MOSI.
MISO (Master In, Slave Out — выход ведомого, вход ведущего)
Линия передачи данных от программируемого микроконтроллера (ведомый) к
программатору (ведущий). По каждому импульсу на линии SCK передается
один бит от микроконтроллера к программатору по линии MISO.
Для обеспечения нормальной связи по трем SPI линиям необходимо соединить общую землю (GND) на программаторе и программируемом устройстве.
Для входа и нахождения в режиме последовательного программирования используется линия сброса (RESET). Она должна удерживаться в активном состоянии (низкий уровень) во время программирования AVR. Также при стирании чипа на линии RESET должен быть сформирован импульс в конце цикла стирания.
Кроме того, может использоваться вывод контроллера XTAL1 для тактировки контроллера программатором при отсутствии кварцевого резонатора.
При программировании AVR программатор всегда функционирует как ведущее устройство, а микроконтроллер как ведомое.
Программная часть |
В интернет можно найти множество программ, работающих с теми или иными типами устройств для программирования микроконтроллеров AVR. Большинство из этих программ совершенно бесплатны.
AVRDUDEВ состав пакета WinAVR входит мощная утилита AVRDUDE. Она позволяет загружать программы и данные в память микроконтроллера, а также считывать их оттуда. AVRDUDE использует SPI-интерфейс. Существуют версии для Windows и Linux. Первоначальный код был написан Брайеном Дином (Brian S. Dean) и имел название avrprog.
AVRDUDE может использоваться через командную строку, чтобы читать или записать все типы памяти кристалла, или при помощи графического интерфейса. Использование AVRDUDE из командной строки удобно для полного программирования всей памяти кристалла, в то время как графический интерфейс полезен для исследования содержания памяти, изменения отдельных байтов EEPROM, fuse и lock битов и т.д.
AVRDUDE поддерживает множество типов программирующих устройств, работающих как через интерфейс параллельного (LPT) порта, так и через последовательный (COM) порт, и может быть сконфигурирован для использования практически с любым LPT-устройством.
AVReAl
Предназначен для программирования
AVR с использованием SPI-интерфейса. Отличается простотой использования
и поддерживает несколько основных типов популярных простых
программаторов, подключаемых к параллельному порту (LPT). Существуют
версии для DOS и Windows (существует версия и для Linux). Во всех
вариантах запускается только из командной строки с необходимыми
ключами, графический интерфейс отсутствует. Написан Александром
Редчуком. Сайт программы: http://ln.com.ua/~real/avreal/
Поддерживает полтора десятка популярных LPT-программаторов, в том числе самых простых. Осуществляет программирование кристалов через SPI. Имеет удобный графический интерфейс, переведенный на русский язык. Автор Bonny Gijzen. Свободно распространяется в Интернете на сайте http://www.ic-prog.com/. PonyProg
Свободная GNU-утилита с открытым исходным кодом для программирования Flash-микросхем с последовательным доступом. PonyProg написан Клаудио Ланконелли (Claudio Lanconelli) и существует в Windows и Linux версиях. Имеет поддержку русского языка. Может использовать стандартный последовательный порт (COM) или параллельный (LPT) порт. Поддерживает ряд популярных программаторов.
Аппаратная часть |
Схема простого программатора AVR Разъем, подключаемый к параллельному порту ПК, показан со стороны пинов |
Схема получила свое название от отладочных плат Atmel для быстрого начала работы с микроконтроллерами AVR. Если вы хотите, чтобы ваш программатор почти в точности соответствовал классическому программатору STK200, то следует поставить перемычку для определения программатора программным обеспечением (для AVRDUDE не обязательно). Перемычка должна соединять выводы 2-12.
Следует обратить внимание, что схема не имеет промежуточного буфера и не имеет гальванической развязки по отношению к параллельному порту, поэтому во избежание вывода из строя параллельного порта подключать и отключать кабель следует при выключенном питании на плате, где установлен контроллер. Кроме того, когда программатор подключен к параллельному порту, следует избегать короткого замыкания его выводов.
Настройка AVRDUDE |
В Windows 2000 и Windows XP запрещена прямая работа с параллельным
(LPT) портом, поэтому для нормальной работы AVRDUDE необходимо
установить драйвер giveio.sys. Для установки этого драйвера зайдите в папку WinAVR\bin и запустите файл install_giveio.bat (удалить драйвер из системы можно, запустив файл remove_giveio.bat).
В Windows 98 никаких специальных настроек не требуется.
Универсальный программатор для микроконтроллеров AVR и PIC. Радиотехника, электроника и схемы своими руками. Схемы и материалы
USBasp — простой внутрисхемный USB-программатор для микроконтроллеров Atmel AVR. Программатор построен на микроконтроллере ATMega88 (или ATMega8) и содержит минимум деталей. Программатор использует свой USB-драйвер, никакие специальные USB контроллеры не нужны.
Особенности программатора:
— работа под любой платформой: Windows, Linux и Mac OS X
— какие-либо специальные компоненты или smd не нужны
— скорость программирования до 5 кБ/сек
— SCK-джампер позволяет программировать низкоскоростные контроллеры (
— в планах: последовательный интерфейс (например для отладки)
Схема программатора
Схема предназначена для программирования только 5В кристаллов. В других случаях, уровни должны быть преобразованы!
Заливка прошивки
Т.к. в схеме программатора используется микроконтроллер, то его необходимо предварительно прошить. Для этого подключите другой рабочий программатор и установите джампер J2, для активации функции обновления прошивки.
Прошейте программатор при помощи прошивки: «bin/firmware/usbasp.atmega88.xxxx-xx-xx.hex» или «bin/firmware/usbasp.atmega8.xxxx-xx-xx.hex»
Необходимо будет установить фьюзы для подключения внешнего кварца
# TARGET=atmega8 HFUSE=0xc9 LFUSE=0xef
# TARGET=atmega48 HFUSE=0xdd LFUSE=0xff
# TARGET=atmega88 HFUSE=0xdd LFUSE=0xff
Установки джамперов
J1 — источник питания (от USB, либо внешний источник). Будьте аккуратнее, т.к. схема не содержит какой-либо защиты от КЗ.
J2 — обновление прошивки (сам себя обновлять не может!). Установленный джампер позволяет программировать контроллер программатора другим рабочим программатором.
J3 — если программируемый МК низкоскоростной
Установка драйверов под Windows
Подключите программатор USBasp к USB. Windows найдет устройство и попросит указать драйвер, укажите ему папку «bin/win-driver». Windows установит драйвер.
Теперь можно запустить avrdude, к примеру:
1. Войти в терминальный режим, МК: AT90S2313: avrdude -c usbasp -p at90s2313 -t
2. Записать main.hex в flash-память МК ATmega8: avrdude -c usbasp -p atmega8 -U flash:w:main.hex
Сборка их исходников (под Linux)
Компиляция прошивки:
1. Установите GNU toolchain для микроконтроллеров AVR (пакеты avr-gcc, avr-libc)
2. Войдите в директорию firmware/
3. Выполните команду «make main.hex»
4. Прошейте «main.hex» ATMega(4)8. Например при помощи uisp или avrdude (используйте
Makefile с опцией «make flash»). Для прошивки установите джампер J2 и подключите USBasp к рабочему программатору.
Также нужно установить фьюзы для работы от внешнего кварца (используйте Makefile
с опцией «make fuses»).
Компиляция avrdude:
ПО AVRDUDE поддерживается программатором USBasp начиная с версии 5.2.
1. Установите пакет libusb: http://libusb.sourceforge.net/
2. Скачайте последнюю версию avrdude: http://download.savannah.gnu.org/releases/avrdude/
3. cd avrdude-X.X.X
4. Сконфигурируйте:
./bootstrap
./configure
5. Компиляция:
make
make install
Фото программатора USBasp
Программы для работы с программатором
AVRDUDE — поддерживается USBasp начиная с версии 5.2
BASCOM-AVR — поддерживается USBasp начиная с версии 1.11.9.6
Khazama AVR Programmer — Windows XP/Vista GUI приложение для USBasp и avrdude
Раз решено было собрать миниатюрный программатор, то перерисовал схему под микроконтроллер Atmega8 в корпусе TQFP32 (распиновка микроконтроллера отличается от распиновки в корпусе DIP):
Перемычка J1 применяется, в случае если необходимо прошить микроконтроллер с тактовой частотой ниже 1,5МГц. Кстати, эту перемычку вообще можно исключить, посадив 25 ногу МК на землю. Тогда программатор будет всегда работать на пониженной частоте. Лично для себя отметил, что программирование на пониженной скорости на доли секунды дольше, и поэтому теперь перемычку не дёргаю, а постоянно шью с ней.
Стабилитроны D1 и D2 служат для согласования уровней между программатором и USB шиной, без них работать будет, но далеко не на всех компьютерах.
Светодиод blue показывает наличие готовности к программированию схемы, red загорается во время программирования. Контакты для программирования выведены на разъем IDC-06, распиновка соответствует стандарту ATMEL для 6-ти пинового ISP разъема:
На этот разъем выведены контакты для питания программируемых устройств, здесь оно берется напрямую с USB порта компьютера, поэтому нужно быть внимательным и не допускать кз. Этот же разъем применяется и для программирования управляющего микроконтроллера, для этого достаточно соединить выводы Reset на разъеме и на мк (см. красный пунктир на схеме). В авторской схеме это делается джампером, но я не стал загромождать плату и убрал его. Для единичной прошивки хватит и простой проволочной перемычки. Плата получилась двухсторонняя, размерами 45х18 мм.
Разъем для программирования и перемычка для снижения скорости работы программатора вынесены на торец устройства, это очень удобно
Прошивка управляющего микроконтроллера
Итак, после сборки устройства осталось самое важное — прошить управляющий микроконтроллер. Для этих целей хорошо подходят друзья у которых остались компьютеры с LPT портом:)
Простейший программатор на пяти проводках для AVR
Микроконтроллер можно прошивать с разъема программирования, соединив выводы Reset микроконтроллера (29 нога) и разъема. Прошивка существует для моделей Atmega48, Atmega8 и Atmega88. Желательно использовать один из двух последних камней, так как поддержка версии под Atmega48 прекращена и последняя версия прошивки датируется 2009 годом. А версии под 8-й и 88-й камни постоянно обновляются, и автор вроде как планирует добавить в функционал внутрисхемный отладчик. Прошивку берем на странице немца. Для заливки управляющей программы в микроконтроллер я использовал программу PonyProg. При программировании необходимо завести кристалл на работу от внешнего источника тактирования на 12 МГц. Скрин программы с настройками fuse перемычек в PonyProg:
После прошивки должен загореться светодиод подключенный к 23 ноге микроконтроллера. Это будет верный признак того, что программатор прошит удачно и готов к работе.
Установка драйвера
Установка велась на машину с системой Windows 7 и никаких проблем не возникло. При первом подключении к компьютеру выйдет сообщение об обнаружении нового устройства, с предложением установки драйвера. Выбираем установку из указанного места:
Выбираем папку где лежат дрова и жмем Далее
Мигом появится окно с предупреждением о том, что устанавливаемый драйвер не имеет цифровой подписи у мелкомягких:
Забиваем на предупреждение и продолжаем установку, после небольшой паузы появится окно, сообщающее об успешном окончании операции установки драйвера
Все, теперь программатор готов к работе.
Khazama AVR Programmer
Для работы c программатором я выбрал прошивальщик Khazama AVR Programmer. Замечательная программка, с минималистичным интерфейсом.
Она работает со всеми ходовыми микроконтроллерами AVR, позволяет прошивать flash и eeprom, смотреть содержимое памяти, стирать чип, а также менять конфигурацию фьюз-битов. В общем, вполне стандартный набор. Настройка фьюзов осуществляется выбором источника тактирования из выпадающего списка, таким образом, вероятность залочить кристалл по ошибке резко снижается. Фьюзы можно менять и расстановкой галок в нижнем поле, при этом нельзя расставить галки на несуществующую конфигурацию, и это тоже большой плюс в плане безопасности.
Запись фьюзов в память мк, как можно догадаться, осуществляется при нажатии кнопки Write All. Кнопка Save сохраняет текущую конфигурацию, а Load возвращает сохраненную. Правда я так и не смог придумать практического применения этих кнопок. Кнопка Default предназначена для записи стандартной конфигурации фьюзов, такой, с какой микроконтроллеры идут с завода (обычно это 1МГц от внутреннего RC).
В общем, за все время пользования этим программатором, он показал себя с наилучшей стороны в плане стабильности и скорости работы. Он без проблем заработал как на древнем стационарном пк так и на новом ноутбуке.
Скачать файл печатной платы
в SprintLayout можно по этой ссылке
С развитием компьютерной техники, с каждым разом становится все меньше и меньше компьютеров оснащенных COM и LPT портами. Это в свою очередь вызывает затруднения, в частности у радиолюбителей, связанные с сопряжением средств программирования микроконтроллеров с персональным компьютером.
В данной статье приведено описание USB программатора для микроконтроллеров AVR, который можно собрать своими руками. Построен он на микроконтроллере Atmega8 и способен работать от USB разъема компьютера. Данный программатор совместим с STK500 v2.
Описание USB программатора
USB программатор построен на плате, сделанной из одностороннего фольгированного стеклотекстолита . На плате есть 2 перемычки: одна расположена под разъёмом SPI, вторая перемычка расположена неподалеку от того же разъема.
После того как все детали будут запаяны нужно прошить микроконтроллер Atmega8 прошивкой приведенной в конце статьи. Фьюзы, которые необходимо выставить при программировании микроконтроллера Atmega8, должны выглядеть следующим образом:
- SUT1 = 0
- BOOTSZ1 = 0
- BOOTSZ0 = 0
- CKOPT = 0
- SPIEN = 0
Необходимо напомнить, что в некоторых программах фьюзы выставляются противоположно этому. Например, в программе CodeVisionAVR необходимо проставить галочки напротив вышеперечисленных фьюзов, а в программе PonyProg наоборот.
Программирование Atmega8 через LPT-порт компьютера
Самый быстрый и дешевый способ запрограммировать Atmega8 – применить LPT-программатор для AVR. Подобная схема приведена ниже.
Питание микроконтроллера осуществляется от простого стабилизатора напряжения 78L05. В качестве оболочки для программирования можно использовать программу UniProf.
При первом включении программы и при не подключенном контроллере, нажав кнопку «LPTpins», необходимо настроит выводы LPT-порта следующим образом:
В момент запуска UniProf, она автоматом определяет вид микроконтроллера. Загружаем в память UniProf прошивку Atmega8_USB_prog.hex, отклоняем подключение файла EEPROM.
Выставляем следующим образом фьюзы (для программы UniProF), нажав кнопку «FUSE»:
Для запоминания установок нажимаем все три кнопки «Write». Затем нажав на «Erase» предварительно очищаем память прошиваемого микроконтроллера. После этого уже жмем на «Prog» и дожидаемся завершения прошивки.
Настройка USB программатора
После того как наш микроконтроллер прошит, его необходимо установить в плату USB программатора. Далее подключаем программатор к USB порту компьютера, но пока питание не подаем.
Настройка порта:
Настройка терминала:
Настройка ASCII:
Теперь после всех проделанных процедур, подаем питание на USB программатор. Светодиод HL1 должен промигать 6 раз и затем светится постоянно.
Для проверки связи USB программатора с компьютером 2 раза нажимаем клавишу «Enter» в программе HyperTerminal. Если все в порядке мы должны увидеть следующую картину:
Если это не так проверяем еще раз монтаж, особенно линию TxD.
Далее вводим версию программатора 2.10, так как без этого программатор не будет работать с программами «верхнего уровня». Для этого вводим «2» и нажимаем «Enter», вводим «а» (английская) и нажимаем «Enter».
USB программатор способен распознавать подключение программируемого микроконтроллера. Выполнено это в виде контроля «подтяжки» сигнала Reset к источнику питания. Этот режим включается и выключается следующим образом:
- «0», «Enter» — режим выключен.
- «1», «Enter» — режим включён.
Изменение скорости программирования (1МГц):
- «0», «Enter» – максимальная скорость.
- «1», «Enter» – сниженная скорость.
На этом подготовительная работа завершена, теперь можно попробовать прошить какой-нибудь микроконтроллер.
(скачено: 1 203)
Когда-то давно пару лет назад, в очередной раз пересмотрел подшивку како-го радиотехнического журнала и задумался: а не пора ли осваивать микроконтроллеры? С этим проблем не было, литературы много, примеров достаточно. Изучил матчасть, написал свою первую ПРОГРАММУ. Потом начались поиски того, чем эту программу запихнуть в контроллер, тоесть программатора. Нужна была схема простая, чтоб собрать из того, что под рукой и надежная, без глюков так сказать. После долгих поисков выбор пал на схему программатора из журнала «РАДИО» №10 2007г. ст. 31. Описывать эту схему не стану, для желающих в архиве есть оригинал статьи. Скажу лишь, что схема отлично работала, шила все подряд без проблем, только почему-то иногда вилетал МАХ232 (заменил 3 шт., может бракованые попались). Тот программатор подарил коллеге и решил собрать себе такой-же, но у меня не оказалось еще одного управляемого стабилизатора K78R12C, опять начались поиски замены… В результате родилась вот такая схема, это результат «скрещивания» журнальной схемы и фирменного программатора SI-PROG:MAX232 заменил на более быстродействующий ST232, управляемый стабилизатор заменил обычным 7812 и транзисторным ключем после него, транзисторы — ВС547, все остальные детали — по рекомендациям из оригинальной статьи. Также добавил отдельную подключаемую плату с панельками для разных типов контроллеров (так как в основном юзаю РІС-и, то плата пока только под них, а если нужно прошить AVR — то проводочками:-)). Монтируется все это на вот такой плате:
А это сменная плата для ПИК-ов и микросхем памяти:
Из панелек все неиспользуемые контакты удалить, чтобы не сверлить много лишних отверстий. Вот фото собраной платы:
Программатор собрал в поляцком корпусе, который обозначается Z50, собственно под него и проектировалась плата, ниже несколько фото:
На фото видно в корпусе трансформатор питания, я его потом выкинул, так как он оказался слабоват (сделал светодиодную подсветку передней панели из сверхярких светодиодов, и трансформатор не осилил:-). Сейчас используется внешний блок питания 15В, и током до 1А. Программатор работает с программами PonyProg, Si-prog, WinPic800. Используя для управления программу PonyProg следует выбрать в соответствующем ее окне программатор SI Prog I/O и задать инверсию сигналов в соответствии с таблицей 1, для программ Si-Prog и WinPic 800 следует выбрать программатор JDM Programmer, а инверсию сигналов задать в соответствии с таблицами 2 и 3.
Программатор своими руками. Программатор для PIC своими руками :: SYL.ru
Вот есть микроконтроллер, есть написанная программа. Что ещё нужно? Программатор! Ведь без помощи аппаратуры, которая сможет записать последовательностью сигналов процесс, который хочет реализовать человек, сложно будет что-то сделать. А как здорово сделать программатор своими руками!
Также здесь вы найдете описание программаторов и из другого семейства – АВР, но исключительно в сравнительных целях. Приступим к статье, где рассказывается, как сделать программатор-flash своими руками.
Для чего необходим программатор
Так как статья пишется в том числе и для читателей, не слишком осведомленных в этом вопросе, то необходимо взять во внимание и такой пункт. Программатор – это специальное устройство, которое посредством получаемых от компьютера сигналов программирует микроконтроллер, который будет управлять схемой. Качественное устройство является очень важным, ведь в таком случае можно будет быть уверенным в том, что МК не выйдет из строя, или, что важнее, из строя не выйдет компьютер. Есть небольшое уточнение: программатор для PIC своими руками делают только те, у кого есть микроконтроллеры этого семейства. Другие из-за другой архитектуры могут не работать. Но можно попробовать своими силами усовершенствовать представленные схемы и собрать программатор AVR своими руками.Платные против самодельных
Отдельно нужно рассказать о приобретенных в магазинах и самодельных программаторах. Дело в том, что это устройства не очень-то и простые и требуют уже определённых навыков работы, практики пайки и умения обращаться с железом. При работе с купленным программатором от производителя или его дилера можно быть уверенным в том, что на прибор программа будет записана, и ничего не сгорит. А в случае обнаружения неисправностей в самом начале периода эксплуатации его можно вернуть и получить взамен работоспособное устройство.А вот с самодельными программаторами всегда немного сложнее. Дело в том, что даже если они и тестировались, то, как правило, в очень узком диапазоне используемой техники, поэтому вероятность того, что что-то пойдёт не так, высока. Но даже если сама схема является полностью работоспособной, нельзя сбрасывать со счётов возможность того, что человек, собиравший схему, ошибётся в чем-то, что-то припаяет не так, и в результате будут иметь место печальные последствия как минимум для программатора. Хотя учитывая то, как любят микроконтроллеры перегорать, повреждения будут не только у него. При пайке своей платы, для того чтобы избежать негативных последствий, перед сборкой механизма следует проверить работоспособность всех элементов, которые будут использованы в плате, с помощью специальных устройств.
Драйвера
Первоначально следует подобрать программное обеспечение. В зависимости от схемы программатор может быть заточен или под один микроконтроллер, или под большое их количество. Тот, что будет далее рассматриваться, рассчитан примерно на 98 программаторов от 12-го до 18-го семейств. Для тех, кому понравится вариант сборки, следует уточнить, что в качестве драйверного программного обеспечения использовалась программа IC-PROG. Можете попробовать работать и с другой, но уже на свой страх и риск. Это информация для тех, кто хочет создать программатор для AVR своими руками. Далее будет указано, для каких семейств микроконтроллеров РІС он рассчитан. Если есть желание сделать программатор AVR своими руками или какой-то другой тип МК, то вы всегда можете попытаться.Схема программатора
Вот тут уже можно попробовать сделать программатор для PIC своими руками. В качестве гнезда необходимо использовать разъем DB9. Можно сделать и USB-программатор своими руками, но для него понадобятся дополнительные элементы схемы, которые усложнят и без того довольно сложную плату. Также внимательно рассмотрите рисунок с различными прямоугольниками (чтобы знать, какие части за что отвечают). Выводы должны подключатся именно туда, куда нужно, иначе микроконтроллер превратится в небольшой кусочек пластика и железа, который можно поставить на стеночку как напоминание о былых ошибках. Процесс сборки и использования программатора таков:- Собрать сам программатор так, как написано на схемах. Просмотреть на наличие некачественной пайки, а также потенциальных мест замыкания. Программатор рассчитан на работу с напряжением 15-18В, больше категорически не рекомендуется.
- Подготовьте среду управления прошивкой (выше было упоминание одной программы, с которой программатор точно работает).
Процесс прошивки микроконтроллера
Процесс прошивки микроконтроллера данными можно считать продолжением предыдущего списка:- Произвести необходимые для работы программы настройки.
- Установить микроконтроллер в программатор так, как отмечено на схеме. Лучше лишний раз убедиться, что всё так, как должно быть, чем ехать за новым МК.
- Подключить питание.
- Запустить выбранное программное обеспечения (для этого программатора ещё раз посоветуем IC-Prog).
- В выпадающем меню вверху справа выбрать, какой именно микроконтроллер следует прошить.
- Подготовленный файл выбрать для программирования. Для этого перейдите по пути «Файл» – «Открыть файл». Смотрите, не перепутайте с «Открыть файл данных», это совсем другое, прошить микроконтроллер с помощью второй кнопки не получится.
- Нажать на кнопку «Начать программировать микросхему». Примерное время, через которое она будет запрограммирована – до 2 минут. Прерывать процесс программирования нельзя, это чревато выведением из строя микроконтроллера.
- И в качестве небольшого контроля нажмите на кнопку «Сравнить микросхему с буфером».
Не очень сложно, но эта последовательность действий позволяет получить качественный программатор, своими руками сделанный, для различных типов микроконтроллеров РІС.
Какие микроконтроллеры поддерживаются и могут быть прошиты программным обеспечением
Как уже выше упоминалось, этот программатор может работать как минимум с 98 моделями. Как можно заметить по схематическим рисункам и платам, он рассчитан на те МК, что имеют 8, 14, 18, 28 и 40 выводов. Этого должно хватить для самых различных экспериментов и построения самых разных механизмов, которые только можно сделать в пределах скромного бюджета среднестатистического гражданина. Можно выразить уверенность, что сделанный программатор своими руками сможет удовлетворить самых требовательных радиолюбителей — при условии, что он будет сделан качественно.
О компании Программатор AVR
АРН Внутрисхемный последовательный программатор
АРН Розетка PCB
|
Как я сделал свой крошечный программатор AVR — Сделайте кое-что
В последнее время я использовал много микросхем AVR и столкнулся с небольшими проблемами при записи кода на эти микросхемы с помощью коммерческих программаторов AVR.Итак, я решил, почему бы не создать свой собственный программатор AVR и не избавиться от всех этих хлопот. И почему бы не настроить его в соответствии с моими потребностями.
Крошечный программатор AVR
Сегодня мы рассмотрим, как устроена эта плата, и я покажу вам, как работает каждый компонент в этой конструкции.
Если у вас просто микросхема AVR, вам нужно что-то для ее программирования. наиболее распространенный способ — через ICSP (внутрисхемный последовательный программатор). просто, это плата с 6 контактами, обычно это 0.Заголовок шага 1 ″, который может общаться с вашей микросхемой AVR через протокол SPI. С другой стороны, он также может общаться с вашим ПК через протокол USB. Итак, после компиляции вашего кода C с помощью avr-gcc плата программатора примет и отправит его напрямую на ваш AVR-чип. Вы можете думать об этом как о мосте между вашим ПК и микросхемой AVR.
Я провел свое исследование для программистов AVR и нашел много интересных ресурсов. это особенно привлекло мое внимание. Это программатор FabOptimus AVR, созданный Али Штарбановым, который построен на программаторе FabISP, созданном проф.Нил из MIT Media Lab. документация FabOptimus очень хороша и проста в использовании, если вы новичок. Я решил сделать очень небольшую модификацию программатора FabOptimus AVR, поскольку у него нет светодиода индикатора питания, я хочу добавить его!
- FabISP bt Prof. Neil
- FabOptimus Али Штарбанов
Дизайн печатной платы и углубленный анализ схем
Во-первых, нам нужно понять, как устроена эта плата и как ведет себя каждый компонент в этой схеме.
- FabOptimus Оригинальная схема и макет платы
Этот программатор AVR основан на микросхеме AVR ATtiny44, которая по умолчанию пуста, в нее не загружается код или что-либо еще, как в любой микроконтроллер, который вы покупаете. Поскольку мы создаем программатор AVR, нам необходимо загрузить в чип ATtiny44 очень конкретную прошивку, которая точно указывает роль, которую он должен выполнять и выполнять. Это просто отправка некоторых шестнадцатеричных файлов на другие микроконтроллеры AVR. Эта прошивка называется прошивкой FabISP (подробнее об этом позже.)
Итак, нам нужно иметь возможность загрузить прошивку FabISP в программатор AVR, а затем отключить возможность ее перепрограммирования.
Чтобы иметь возможность загрузить прошивку FabISP в микросхему AVR программатора, нам нужно перевести его вывод сброса в положение LOW (0 вольт). и чтобы отключить возможность его перепрограммирования после того, как он был запрограммирован, нам нужно вытащить его вывод сброса, чтобы он всегда был ВЫСОКИМ (5 вольт). Итак, нам нужно спроектировать схему таким образом, чтобы вывод сброса был ВЫСОКИМ (5 вольт) по умолчанию.Но как только к нему подключен другой программатор, он может подтянуть вывод сброса микросхемы AVR программатора к НИЗКОМУ (0 вольт). Вот почему мы используем подтягивающий резистор 10 кОм на выводе сброса.
Как вы заметили, вывод сброса микросхемы ATtiny44 соединен с выводом RST на разъеме вывода ISP через резистор 0 Ом. после загрузки прошивки на микросхему ATtiny44 мы удалим этот резистор с нулевым сопротивлением, чтобы исключить возможность повторного перепрограммирования платы.
Поскольку нам нужно использовать нашу плату программатора для программирования других плат AVR, наша плата программатора должна быть способна подавать сигнал сброса на другие платы AVR, которые нам нужно запрограммировать.Итак, мы также подключаем вывод ввода / вывода от микросхемы ATtiny44 к выводу RST заголовка вывода ISP, чтобы передать сигнал сброса другим микросхемам AVR, которые нам нужно запрограммировать.
Чтобы уменьшить любой высокочастотный шум или любые падения напряжения, исходящие от источника питания, мы используем разделительный конденсатор 1 мкФ между VCC (5 В) и GND.
Мы также используем резонатор 20 МГц в качестве источника тактовой частоты для микросхемы ATTiny44 вместо внутренних часов, чтобы добиться большей точности.
Мы используем два стабилитрона 3,3 В в качестве ограничителей напряжения для регулирования напряжения от 5 до 3,3 В. Согласно спецификациям V-USB и USB, напряжение на линиях передачи данных USB не должно превышать 3,3 В. Кроме того, мы используем подтягивающий резистор 1,5 кОм на выводе D USB, чтобы его можно было распознать как низкоскоростное устройство на стороне хоста.
Наконец, я отредактировал доску. Я добавил на плату светодиодный индикатор питания.
Рекомендуется отсоединить вывод VCC от разъема вывода ISP, чтобы убедиться, что программатор AVR не пытается подавать питание на плату, которую мы хотим запрограммировать. плата, которую мы хотим запрограммировать, должна обеспечивать собственное питание. Если мы не отключили контакт VCC на заголовке ISP, программатор AVR и программируемая плата будут получать ток через порт USB (с вашего компьютера). если ваш USB-порт не может обеспечить такой большой ток или при каких-либо обстоятельствах короткого замыкания, это может вызвать огромные проблемы для вашего компьютера.
Производство печатных плат
Как видите, я изготовил эту плату на фрезерном станке с ЧПУ в Fab Lab Egypt. Но если вы ищете производство высококачественных печатных плат с паяльной маской и шелкографией по очень справедливой цене и быстрой доставкой по всему миру без минимальных требований, вы можете заказать всего 10 штук за 5 долларов. Вы можете заказать свой на PCBWay. Вы также можете поддержать меня, просто заказав эту доску по моей ссылке.
Мы любим открытый исходный код.Вы можете скачать все исходные файлы платы из моего репозитория на Github.
Пайка печатных плат и размещение компонентов
Название детали | Количество |
ATTINY44A Микроконтроллерный чип | 1 |
CER RESONATOR 15 900.0 MHZ 1 SMD | MINOS2 900.0 MHZ USB1 |
6-позиционный разъем заголовка 0.100 ″ SMD | 1 |
CAP CER 1UF 50V 10% SMD 1206 | 1 |
RES 10.0K OHM 1-4W 1% 1206 SMD | 1 |
RES 1.0K OHM 1-4W 1% 1206 SMD | 1 |
RES 499 OHM 1-4W 1% 1206 SMD | 2 |
RES 100 OHM 1-4W 1% 1206 SMD | 2 |
DIODE ZENER 500MW 3.3V SOD123- | 2 |
LED Синий CLEAR 1206 SMD- | 1 |
Загрузка прошивки в программатор
Чтобы загрузить прошивку FabISP на плату программатора FabISP AVR, нам нужен другой программист, который поможет нам загрузить прошивку на нашу плату FabISP.мы будем использовать плату Arduino UNO в качестве программатора ISP и подключим ее к нашей плате программатора FabISP AVR.
Во-первых, нам нужно загрузить скетч «ArduinoISP» на плату Arduino UNO. Вы можете найти этот эскиз в файлах-> Примеры-> ArduinoISP-> ArduinoISP.
После загрузки на плату Arduino UNO. Давайте подключим наш программатор FabISP AVR (Target) к плате Arduino UNO (Programmer).
D10 (Arduino) -> Reset (Цель)
D11 (Arduino) -> MOSI (Target)
D12 (Arduino) -> MISO (Target)
D13 (Arduino) -> SCK (Target)
GND (Arduino) -> GND (цель)
Как вы можете заметить, мы подключаем конденсатор 10 мкФ между выводом Reset и выводом GND платы Arduino UBO.Как вы заметили, мы не обеспечиваем питание целевой платы напрямую от платы Arduino. Мы обеспечиваем питание платы программатора FabISP AVR (целевой), подключив ее отдельно к ноутбуку через порт USB. И не забудьте сделать общий GND между двумя платами, подключив GND платы программатора FabISP AVR (целевой) к GND Arduino UNO (программатор).
После подключения платы Arduino UNO (программатор) К плате FabISP (Target) нам необходимо скомпилировать прошивку FabISP и загрузить ее на плату FabISP.Плата Arduino UNO будет действовать как мост между моим ноутбуком и платой FabISP. Поскольку я использую компьютер Mac, я скачаю AVR CrossPack. CrossPack — это среда разработки микроконтроллеров Atmel AVR®, работающая в Mac OS X от Apple, аналогичная AVR Studio в Windows. Он состоит из компилятора GNU, библиотеки C для AVR, программы загрузки AVRDUDE и нескольких других полезных инструментов ». После перехода на веб-сайт AVR CrossPack нажмите кнопку «Загрузить» и установите файл .dmg .Вот и все!
Затем нам нужно скачать прошивку FabISP по ссылке ниже. Makefile , который находится внутри исходной папки прошивки, готов к использованию с avrisp2 или usbtiny, , если вы будете использовать другой программатор из этих двух вариантов, он не будет работать. Итак, я внес некоторые изменения в этот Makefile , чтобы сделать его совместимым с Arduino Uno , который я использую как программист.И теперь он готов к использованию с вашим Arduino UNO в качестве программиста, вы можете скачать его по ссылке ниже.
Теперь мы откроем терминал и перейдем в папку с прошивкой. Затем очистит все ранее скомпилированные файлы, написав и очистите
. Затем нам нужно сгенерировать новый .hex , который соответствует нашему новому MakeFile . Мы будем использовать команду make hex
.
Затем нам нужно написать команду make fuse
, чтобы установить предохранители, чтобы плата использовала внешние часы.Вы должны увидеть ответ, как на первом изображении. Наконец, используйте команду make program
, чтобы записать нашу прошивку на плату для работы в качестве программиста AVR.
Тестирование программиста FabISP AVR
После выполнения предыдущих шагов ваш компьютер должен теперь распознать плату как ISP. Поскольку я использую компьютер MAC, щелкните логотип Apple, затем щелкните «Об этом MAC», затем «Отчет о системе».
Затем в левом меню в разделе «Оборудование» нажмите «USB».ваш программатор должен быть опознан вашим компьютером по имени FabISB . Это означает, что ваш провайдер AVR теперь готов к работе!
FabISP AVR Programmer 3D-печатный корпус
Я разработал корпус для программатора Tiny AVR, вы можете скачать его по ссылкам ниже. Я распечатал эти детали на 3D-принтере с заполнением 20% без опор.
Вот и подошел к концу учебник, спасибо за ваше терпение и ознакомьтесь с нашими предстоящими учебниками о том, как использовать этот программатор Tiny AVR и как программировать свои собственные печатные платы.Не стесняйтесь отвечать на любой интересующий вас вопрос!
Выбор программатора для микроконтроллеров AVR
Как только вы начнете что-то строить с микроконтроллерами, вам нужно принять во внимание одну вещь, это адаптер для программирования. Это устройство, позволяющее загружать в чип скомпилированный код. Я не знаю, интересно ли создавать адаптер для программирования своими руками, который не гарантирует поддержки всех микросхем, а также не будет безопасным и надежным. Ниша микроконтроллеров AVR — одна из самых интересных, если говорить о программистах.Если вы посмотрите файл конфигурации AVRDUDE, вы обнаружите, что их около 50. Многие из них сделаны своими руками, другие — официальные.
Когда я начал с микроконтроллеров, я также искал дешевый и простой в сборке адаптер для программирования. Так что я построил несколько, если несколько лет.
Первым из них был программатор на основе RS232, который работал с популярным в то время программным обеспечением PonyProg. Позже последовал программист порта LPT:
Оба они хорошо работали либо с PonyProg, либо с AVRDude.Но затем порты COM и LPT устарели, поэтому следующим логическим шагом стал интерфейс USB. Вероятно, самым популярным программатором DIY на базе USB был USBASP, первоначально разработанный Томасом Фишлем. Опять же, он работает с программным обеспечением AVRDude. Но проблема была в корявых обновлениях и стабильности драйверов. Для некоторых это работает; для некоторых они утверждают, что это не так. Я построил свой, и он работал очень хорошо.
Вероятно, последний созданный мной самодельный программатор — это программатор STK500V2 от tuxgraphics.com.
Он отлично работал, пока AVRStudio не был обновлен с V4 до V5, а затем до V6. Это означало, что никаких обновлений прошивки не было, и это вообще не работало, поскольку для AVRStudio требуется оригинальный адаптер. Он по-прежнему отлично работает с AVRDude.
Оригинальный адаптер, который стоит воткнуть
Это был отличный опыт с программистами DIY, но они никогда не работали так, как я хотел. Вы всегда должны искать обновления, искать подходящий пользовательский интерфейс. И они никогда не работали с AVRStudio или вообще не работали.Энергию, которую вы тратите на поиск или создание адаптера, можно было бы использовать в другом месте. Почему бы не иметь подходящий инструмент, который всегда работает и все еще актуален.
Я настоятельно рекомендую приобрести программатор AVRIPS MkII для основных нужд программирования AVR, который является официальным программистом, разработанным ATMEL. Он работает из коробки с последней версией AVRStudio, где вы можете выполнять все задачи, связанные с чтением и записью Flash / EEPROM, установкой предохранителей / битов блокировки, выбором скорости программирования, калибровкой генератора в красивом графическом интерфейсе.Говоря об адаптере AVR ISP MKII, стоит упомянуть, что он поддерживает все программные интерфейсы AVR, такие как ISP, PDI и TPI. AVRISP MKII также поддерживает и обнаруживает весь целевой диапазон напряжения от 1,6 В до 5,5 В. Он полностью совместим с USB2.0 с частотой программирования SCK до 8 МГц.
Самое главное с оригинальным адаптером — ощущение, что все работает всегда. Программист сейчас не так уж и дорог, чтобы искать дешевую и сомнительную замену. Если вы хотите программировать на других платформах, таких как MacOS или Linux, здесь он работает без проблем с использованием программного обеспечения для программирования AVRDude.
AVRISPMKII — программист, и он только это делает. Если вам нужно продвинуться дальше — например, отладить программы ваших проектов, вам следует поискать другие инструменты, такие как JTAGICE mkII или AVR ONE, в списке продуктов ATMEL.
Как использовать Arduino Uno в качестве программатора AVR
Когда вы начинаете возиться с микроконтроллерами, одним из самых важных инструментов, которые вы будете иметь в своем арсенале, является программатор микросхем. Программистов для разных типов микроконтроллеров очень много.Таким образом, тип вашего программатора зависит от типа микроконтроллера, который вы хотите запрограммировать. Например, 8051, PIC, AVR и ARM являются примерами микроконтроллеров. В этом исследовании мы увидим, как использовать Arduino Uno в качестве внутрисистемного программатора для микроконтроллеров AVR. Примером микроконтроллера AVR является микроконтроллер Atmel 328P, который находится в самой Arduino. Другой пример — популярный микроконтроллер ATTiny85.
Конечно, есть программисты, созданные специально для программирования микроконтроллеров AVR, но в этом посте мы будем использовать Arduino Uno в качестве программатора AVR.
Необходимые компонентыКонфигурации
Чтобы использовать Arduino для программирования микроконтроллеров, вам необходимо настроить Arduino как внутрисистемный программист. Для этого вы загрузите скетч (программу) ArduinoISP в Arduino. Следуйте инструкциям:
Шаг 1. Откройте Arduino IDE. Выберите файл -> Примеры-> ArduinoISP-> ArduinoISP
Шаг 2: Подключите Arduino для использования в качестве программатора к вашему компьютеру.
Шаг 3: Подтвердите / выберите порт, к которому подключена плата Arduino. Инструменты-> Порты
Шаг 4: Проверьте и загрузите скетч (программу) в Arduino.
Браво! Теперь у вас есть программатор AVR. Мы будем использовать этот программатор AVR на базе Arduino для программирования наших микроконтроллеров или даже других плат Arduino.
Контроль состояния программированияЕсли вы хотите контролировать состояние вашего программатора AVR на базе Arduino во время процесса программирования, вы можете подключить три светодиода к контактам 7, 8 и 9 программатора, как показано на схеме ниже.
Скетч Arduino ISP, который мы загрузили в наш программатор AVR на базе Arduino, предварительно запрограммирован для этой функции.
Контакт 7 = Программирование (включается во время программирования)
Контакт 8 = Ошибка (включается в случае ошибки программирования)
Контакт 9 = Heartbeat (остается включенным после включения программатора)
Подключение программатора AVR к целевому микроконтроллеруЧтобы запрограммировать любой микроконтроллер AVR с помощью вашего программатора или другой платы Arduino, вам необходимо сопоставить определенные контакты программатора AVR с целевым микроконтроллером.Контакты 10, 11, 12 и 13 программатора AVR используются как контакты данных. Конфигурации следующие:
Контакт 10 = СБРОС
Контакт 11 = ICSP-4 = MOSI
Контакт 12 = ICSP-1 = MISO
Контакт 13 = ICSP-3 = SCK
Расположение выводов ICSPТакже рекомендуется подключить контакты 5v и GND программатора AVR к 5v и GND целевого микроконтроллера, если мы программируем другую плату Arduino.
После установления соединения между программатором AVR и целевым микроконтроллером, вам необходимо определить в вашей Arduino IDE, что вы используете Arduino в качестве ISP в качестве программиста.Перейдите в Tools-> Programmer-> Arduino в качестве ISP.
Пример соединений между программатором AVR и микроконтроллерами Target
Arduino Uno Атмель 328PATTiny85,
Примечание. В приведенных выше примерах схем предполагается, что мы используем программатор для записи загрузчиков в целевые микроконтроллеры. В ситуациях, когда целевой микроконтроллер уже имеет загрузчик, и вы используете программатор для загрузки скетча в целевой микроконтроллер, вам необходимо удалить Atmel 328P из программатора.
Если вам нравится этот учебник, вы можете поделиться им с друзьями с помощью кнопок социальных сетей, и если вы построили схему или у вас есть какие-либо вопросы, сообщите нам, используя поле для комментариев ниже. Спасибо за прочтение.
Сделайте свою собственную плату AVR. Плата AVR — важная разработка… | от Ahmad Mujahid
ПлатаAVR является важным устройством разработки для многих разработчиков микроконтроллеров. А иногда по какой-то причине это может стоить дорого. Но хорошая новость в том, что сделать эту доску не так уж сложно.Вы можете создать свою собственную плату разработки AVR из некоторых запасных частей для электроники в своей лаборатории.
Предварительный
Чтобы следовать этой инструкции, вам необходимо иметь базовые знания о пайке, создании прототипов с перфорированной платой, считывании схем и микросхеме AVR Atmega.
Как работает плата AVR?
Прежде чем создавать плату AVR, обратите внимание, что вам также понадобится программист для программирования микросхемы AVR. Ваша плата работает только как носитель для установки вашего чипа и обеспечивает соединение между вашим чипом и любыми периферийными устройствами или датчиками.Он не может запрограммировать ваш чип. Наиболее распространенным программатором, который используется с платой разработки AVR, является USBasp. Программатор
USBasp для AVRUSBasp использует протокол связи SPI (последовательный периферийный интерфейс) для программирования микросхемы AVR. SPI — это синхронная связь между двумя устройствами для передачи и приема информации друг другу. Чтобы узнать больше о коммуникации SPI, вы можете прочитать эту статью на SparkFun.
В этом случае важно знать, как работает SPI.По крайней мере, вы будете знать, какие контакты необходимо подключить к программатору USPasp. USBasp имеет 10 контактов. Мы будем использовать несколько из них, чтобы создать соединение с вашим микроконтроллером, чтобы мы могли его запрограммировать.
USBaps pinsСписок необходимых контактов:
- Pin 1 (MOSI (Master Out Slave In))
- Pin 2 (Vcc)
- Pin 5 (RST (Reset))
- Pin 7 (SCK (Serial Clock) ))
- Pin 9 (MISO (Master In Slave Out))
- Один из любых контактов GND
С помощью этого программатора вы можете запрограммировать любые микросхемы AVR, такие как Atmega328p, Atmega8A – 16PU, Atmega32A, Atmega16A и т. Д.без установки на него загрузчика.
Давайте создадим вашу плату AVR!
После того, как вы немного познакомитесь с USBasp, пора подготовить необходимые материалы для этого проекта. Есть:
- 1 монтажная плата (рекомендуется 7×5)
- 1 DIP 28 IC Socket
- 1 микроконтроллер AVR (на этот раз мы используем Atmega328p)
- Некоторые штекерные разъемы (рекомендуется иметь несколько полосок 1×40 штекер) штыревые разъемы)
- Некоторые перемычки
- 2 керамических конденсатора (22 пФ)
- 1 генератор 16 МГц
- (опционально) 1 полоска 1×3 гнездовой штыревой штырь (округлый гнездовой штыревой штырь лучше, если вы можете себе это позволить)
Паяльник и паяльник обязательны, иначе вы никогда не сделаете этот проект.Горячий клеевой пистолет также рекомендуется использовать для пайки.
Давайте сделаем шорт!
Эта схема дает вам представление о плате AVR, которую вы собираетесь построить. На этот раз мы используем Atmega328p, вы также можете использовать Atmega8–16PU. Если вы используете другую версию Atmega, вы должны прочитать техническое описание и получить информацию о его распиновке.
СхемаНа схеме выше показано базовое подключение платы AVR. Эта схема охватывает несколько коротких замыканий, которые вам необходимо создать для подключения микросхемы AVR к программатору USBasp.
Вот несколько важных соединений, которые вам необходимо создать:
- Соедините вывод MOSI USBasp с выводом MOSI AVR (вывод 17).
- Соедините вывод MISO USBaps с выводом MISO AVR (вывод 18).
- Соедините контакт SCK USBasp с контактом SCK AVR (контакт 19).
- Соедините контакт RST USBasp с контактом RST AVR (контакт 1).
- Соедините контакт VCC USBasp с контактом VCC AVR (контакт 7).
- Подключите контакт GND USBasp к контакту GND AVR (контакт 8).
Вам также необходимо установить генератор на контакты 9 и 10 вашего Atmega328p.
Еще одна ссылка, за которой вы можете следовать (http://www.learningaboutelectronics.com/Articles/Program-AVR-chip-using-a-USBASP-with-10-pin-cable.php)Давайте припаяем!
Ну, я не собираюсь говорить, что вы должны следить за тем, как я паяю свою собственную плату AVR, потому что пайка — это искусство, которое вы должны выражать самостоятельно. (Да !!)
Но я порекомендую вам то, что вы можете добавить к своей плате AVR, чтобы сделать ее достаточно универсальной.Предварительно это мой результат.
Моя плата AVR, подключенная к USBaps Моя плата AVR, вид сверху Часть пайки (извините, если это выглядит беспорядочно и раздражает вас :()Вот мои рекомендации для вашей платы AVR:
- Используйте штекер с гнездом для вашего генератора. при необходимости вы можете легко изменить его.
- Создайте полосу Vcc и GND с 1×3 или 1×5 контактной полосой заголовка.Это будет полезно, если когда-нибудь вам понадобится контакт источника питания.
- Подключите все порты DDR к контактному разъему.Итак, вы можете использовать их для своей программы в качестве ввода / вывода.
- Вы можете использовать штыревой или женский штыревой разъем в зависимости от вашего желания.
Программные интерфейсы микроконтроллера AVR — ISP, JTAG, TPI, PDI и UPDI
Когда микроконтроллеры AVR были впервые представлены в 1995 году, системное программирование было простым, с одним методом программирования (последовательный интерфейс программирования или SPI) и рекомендованным 10-контактным целевым интерфейсом 5 x 2. В течение 10-15 лет это оставалось неизменным, за исключением добавления JTAG-программирования на некоторых устройствах и перехода к целевому разъему 3 x 2 6-pin.За последние несколько лет, как сорняк, выросли новые интерфейсы, включая TPI, PDI и UPDI. Что все это значит и как это на вас влияет?
Классический ISP или SPI
Этот метод программирования прост и дает немного проблем, если вы следуете правилам интерфейса ISP в вашей цепи — см. Руководство по схеме AVR ISP. Стандартный заголовок, рекомендованный Atmel, представлял собой 10-позиционный коробчатый заголовок 5 x 2 с шагом 2,54 мм (0,1 дюйма). Для повышения надежности здесь использовались чередующиеся линии заземления, но компания Atmel решила, что в этом нет необходимости, поэтому перешла на 6-ходовой жаток 3 x 2.
SPI прост, поддерживается всеми программистами, и его сложно заблокировать от микросхемы AVR, за исключением некоторых небольших 8-контактных микросхем, для которых можно перенастроить контакт сброса. Затем им нужно 12 В, чтобы сбросить это изменение вывода сброса, и сейчас очень немногие программисты поддерживают это.
К недостаткам SPI относится
- Использование контактов — необходимо 4 контакта
- Скорость программирования привязана к целевой тактовой частоте, максимум 1/4 тактовой частоты
- Медленнее при низком напряжении
Программирование JTAG
JTAG был введен в микроконтроллеры AVR с 40 и более контактами, и эта шина также может использоваться для программирования.Этот метод быстрее и не зависит от целевой тактовой частоты. Минусы:
- Отключение предохранителя включения JTAG (JTAGEN) предотвращает программирование JTAG — вам нужен ISP, чтобы очистить это
- 4 контакта порта предназначены для JTAG
- Целевой разъем 10- или 14-контактный с разводкой, отличной от ISP
JTAG доступен на некоторых устройствах ATxmega, а также на более крупных AVR.
Программирование TPI
Это было введено для ограниченного количества микросхем ATtiny и означает Tiny Programming Interface.Это ATtiny10, ATtiny102, ATtiny104, ATtiny20, ATtiny4, ATtiny40, ATtiny5 и ATtiny9.
Это двухпроводной интерфейс, который использует вывод сброса для часов и специальный вывод для данных. С точки зрения пользователей, он в точности совпадает с интерфейсом ATxmega PDI. Это единственный интерфейс, доступный на этих устройствах ATtiny, поэтому его необходимо использовать для них.
Эти устройства ATtiny очень маленькие и дешевые, но не доступны в корпусе DIP и не используются широко.
Интерфейс PDI
Это интерфейс программирования, доступный на всех микроконтроллерах ATxmega, хотя некоторые также имеют JTAG.Функционально он аналогичен интерфейсу ATtiny TPI и использует те же два контакта — RESET для синхронизации и специальный контакт для программирования данных.
Существуют строгие правила для схемы сброса, чтобы предотвратить любые проблемы с программированием. Любой подтягивающий резистор должен быть не менее 10 кОм или быть полностью удален, любой развязывающий конденсатор сброса должен быть удален, как и любая другая нагрузка на RESET. Вывод данных PDI должен быть предназначен только для программирования. Microchip предлагает 6-контактный разъем 3 x 2.
Это быстрый метод программирования с использованием синхронного последовательного порта (данные UART с часами или USART), который обычно справляется со скоростью 230 400 бод, но при более низких напряжениях этот процесс должен быть медленнее.
Интерфейс UPDI
Это новейший метод программирования, и с тех пор, как Microchip взял на себя Atmel, он кажется предпочтительным для всех новых AVR. С другой стороны, все эти новые устройства доступны только в SMD-пакетах, поэтому они, очевидно, не нацелены на обычного пользователя, который, вероятно, продолжит использовать существующие устройства, такие как ATmega328 или ATmega1281.
Этот программный интерфейс представляет собой нечто среднее между Debug-Wire и PDI, но в нем используется только одна строка, такая как Debug-wire.Это последовательный интерфейс без часов, поэтому на практике он медленнее, чем PDI. Однако эти новые чипы представляют собой небольшие устройства ATtiny и несколько устройств ATmega до 48 КБ, а не гораздо более крупные микроконтроллеры ATxmega.
Поскольку у него нет часов, единственный вывод — это сброс для программирования данных. Вывод сброса может быть настроен на сброс, UPDI или GPIO в байтах предохранителя, по умолчанию для новых устройств — UPDI. Если это изменить, потребуется импульс 12 В для входа в режим программирования и перепрограммирования микросхемы.Не все программисты поддерживают этот импульс 12 В, поэтому будьте осторожны при изменении конфигурации сброса, иначе вы можете заблокироваться.
Хотя используется только один контакт плюс VCC и GND, Microchip рекомендует 6-контактный разъем 3 x 2 контакта в качестве разъема для программирования.
Заключение
Как пользователь, обычно не является проблемой, какой метод программирования используется. Убедитесь, что ваш программист поддерживает нужный вам метод, и следуйте рекомендованной схеме подключения провайдера. Портативные программаторы Kanda AVR и ATxmega поддерживают SPI, JTAG, UPDI, TPI и PDI, но стандартный блок AVR поддерживает только SPI, JTAG и TPI.См. AVR и ATxmega Handheld Programmer для получения информации о поддержке AVR UPDI и ATxmega PDI.
Выбор программатора AVR — Embedds
Как мы говорили ранее, существует множество программистов AVR, из которых можно выбирать. Самые простые из них — программисты на битбэнге. Это прямолинейные программисты, которые могут быть построены с использованием всего лишь небольшого количества резисторов (или вообще без резисторов). Это может быть преобразователь COM, LPT или USB-to-TTL.
Программисты Bitbang своими руками
Пример программатора LPT порта
Вероятно, их проще всего построить, поскольку нет необходимости преобразовывать какие-либо сигналы, поступающие из порта.Буферный чип используется только в целях безопасности для защиты порта компьютера. Еще более простой кабель для программатора можно найти здесь.
ПрограмматорCOM (RS232) немного сложнее, так как он должен преобразовывать сигналы RS232 в TTL. Обычно для этого используются микросхемы MAX232. Самый простой программатор COM, который я смог найти, — это даже без микросхемы MAX232:
ПрограмматорыLPT и RS232 немного устарели, так как COM, а порты LPT исчезают с компьютеров, особенно с ноутбуков. Так что, если вы собираетесь, лучше используйте USB.Также доступны несколько USB-программаторов, сделанных своими руками. Большинство из них работают одинаково — компьютер имитирует их как виртуальные COM-устройства. Какой из них выбрать — тоже ваше решение. Если вы не хотите связываться с другим программным обеспечением, но AVRStudio ищет AVRUSB500V2 на базе STK500. Отлично работает в AVRStudio 4:
Есть еще один отличный USB-программатор, который работает только с программным обеспечением AVRDUDE, это USBasp. Основным преимуществом этого является то, что он эмулирует USB чисто программно — поэтому не требуется дополнительных USB для последовательного чипа:
Если вы поищете в Интернете, вы найдете больше клонов программистов.Нет существенной разницы, самое главное то, что она доставляет программу на чип.
Профессиональные программисты AVR ISP
Если вы не хотите связываться с вещами, сделанными своими руками, откройте свой кошелек и получите профессионально сделанного программиста со схемой поддержки и защиты. С ними вы всегда будете уверены, что это работает. Они не такие уж и дорогие, так что купите. Это может быть AVRISP или AVRISPv2.
Или вы можете использовать STK500, который все еще активно используется в качестве платы для программирования и разработки.Он имеет различные заголовки для разных микросхем AVR. Единственным недостатком является то, что у него есть только последовательный интерфейс. Для работы с USB вам понадобится конвертер USB в последовательный.
Как более продвинутый дизайнер, вы можете выбрать AVRDragon, основанный на USB. IT работает как универсальный программатор AVR и эмулятор / отладчик. Если цена не кусается, дерзайте.
Загрузчики бутылочек AVR
Это последняя опция, но достаточно полезная для программирования AVR. Загрузочная загрузка — это так называемое самопрограммирование, когда внутри микросхемы выполняется небольшая резидентная программа, которая принимает передачу через любой желаемый интерфейс.Вы можете подключить USB, последовательный кабель или даже карту флэш-памяти, например SD, и загрузить прошивку без программиста. Какими бы крутыми ни были загрузчики, вам понадобится программист, который поставит загрузчик первым. У загрузчиков есть ограничения, так как они не позволяют программировать плавкие биты.