Программатор для atmega16 своими руками

Программатор для AVR

Описание

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

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

Вы также можете использовать этот программатор только как внутрисхемный, с помощью которого можно легко программировать AVR микроконтроллер, не извлекая его из устройства.

Весь AVR программатор собирается из широко распространенных компонентов и умещается в корпусе разъема COM порта. Печатная плата с DIP панелькой позволяет вставлять в нее 28-выводной AVR микроконтроллер ATmega8 в корпусе DIP, но вы можете изготовить печатные платы для микроконтроллеров в любых других корпусах. Этот программатор совместим с популярным ПО PonyProg, которое показывает вам ход процесса прошивки в виде шкального индикатора статуса.

Внутрисхемный последовательный программатор AVR

Плата AVR программатора (вид спереди) с 9-контактным последовательным разъемом (гнездо).
Плата программатора AVR (вид сзади).
Размещение платы программатора AVR в корпусе разъема RS232.
Законченный программатор со стандартным 6- контактным разъемом ICSP.

Плата с панелькой для AVR

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

Плата с 28-выводным микроконтроллером Atmega в корпусе DIP.
В схеме есть 2 разъема: ICSP, к которому подключается AVR программатор и разъем для внешнего источника питания.

Плата включает в себя 28 выводную DIP панельку, кварцевый резонатор на 4 МГц или резонатор с двумя конденсаторами по 22 пФ, и два разъема. Двухконтактный разъем служит для подключения к AVR микроконтроллеру питания +5 В, а 6-контактный – для подключения программатора.

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

Плата для 28 выводного микроконтроллера AVR Atmega8 в DIP корпусе.

ПО PonyProg

Чтобы иметь возможность загружать hex файлы из компьютера в микроконтроллер, вам потребуется скачать и установить ПО PonyProg2000. После установки, первое, что предстоит сделать, это сконфигурировать PonyProg для работы с AVR программатором. Для того, чтобы сделать это, войдите в меню «Setup» и выберите пункт «Interface Setup». Ниже на рисунке подсвечены именно те опции, которые вам следует выбрать.

Следующим шагом выберите «AVR micro» и тип микроконтроллера, который хотите запрограммировать (например ATmega8).

Теперь конфигурирование PonyProg завершено, и мы можем открыть hex файл с программой, которая будет зашита в микроконтроллер. Перейдите в меню «File», выберите «Open Program (FLASH) File . » и укажите на hex файл, который надо зашить. Вы должны увидеть шестнадцатеричные значения, примерно такие, как показаны на рисунке ниже. Если вы все еще не подключили программатор к последовательному порту компьютера, то сейчас самое время это сделать. Убедитесь, что ваш программатор физически подключен к AVR микроконтроллеру через плату с панелькой или 6 контактный разъем ICSP. Наконец, кликните на подсвеченной иконке «Write Program Memory (FLASH)» или идите в меню «Command» и выберите «Write Program (FLASH)».

Кликните на кнопке «Yes», чтобы подтвердить запись.

Теперь сядьте поудобнее, расслабьтесь и наблюдайте за процессом программирования по индикатору состояния. PonyProg прошьет AVR микроконтроллер и проверит, загрузился ли hex файл без ошибок. Этот процесс обычно занимает от 10 до 30 секунд, в зависимости от размера программы, которую вы будете зашивать в микроконтроллер.

После программирования появится окно «Write successful», показывающее, что AVR микроконтроллер был запрограммирован и теперь готов к использованию.

Источник

Электроника для всех

Блог о электронике

AVR. Учебный курс. Трактат о программаторах

Программа для микроконтроллера пишется на любом удобном языке программирования, компилируется в бинарный файл (или файл формата intel HEX) и заливается в микроконтроллер посредством программатора.

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

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

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

Внутрисхемное программирование (ISP)
Самый популярный способ прошивать современные контроллеры. Внутрисхемным данный метод называется потому, что микроконтроллер в этот момент находится в схеме целевого устройства — он может быть даже наглухо туда впаян. Для нужд программатора в этом случае выделяется несколько выводов контроллера (обычно 3..5 в зависимости от контроллера).

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

  • MISO — данные идущие от контроллера (Master-Input/Slave-Output)
  • MOSI — данные идущие в контроллер (Master-Output/Slave-Input)
  • SCK — тактовые импульсы интерфейса SPI
  • RESET — сигналом на RESET программатор вводит контроллер в режим программирования
  • GND — земля

Сам же разъем внутрисхемного программирования представляет собой всего лишь несколько штырьков. Лишь бы на него было удобно надеть разъем. Конфигурация его может быть любой, как тебе удобней.
Однако все же есть один популярный стандарт:

Для внутрисхемной прошивки контроллеров AVR существует не один десяток разнообразных программаторов. Отличаются они в первую очередь по скорости работы и типу подключения к компьютеру (COM/LPT/USB). А также бывают безмозглыми или со своим управляющим контроллером.

Безмозглые программаторы, как правило, дешевые, очень простые в изготовлении и наладке. Но при этом обычно работают исключительно через архаичные COM или LPT порты. Которые найти в современном компьютере целая проблема. А еще требуют прямого доступа к портам, что уже в Windows XP может быть проблемой. Плюс бывает зависимость от тактовой частоты процессора компьютера.

Так что твой 3ГГЦ-овый десятиядерный монстр может пролететь, как фанера над Парижем.

Идеальный компьютер для работы с такими программаторами это какой-нибудь PIII-800Mhz с Windows98…XP.
Вот очень краткая подборка проверенных лично безмозглых программаторов:

  • Программатор Громова.
    Простейшая схема, работает через оболочку UniProf(удобнейшая вещь. ), но имеет ряд проблем. В частности тут COM порт используется нетрадиционно и на некоторых материнках может не заработать. А еще на быстрых компах часто не работает. Да, через адаптер USB-COM эта схема работать не будет. По причине извратности подхода 🙂
  • STK200
    Надежная и дубовая, как кувалда, схема. Работает через LPT порт. Поддерживается многими программами, например avrdude. Требует прямого доступа к порту со стороны операционной системы и наличие LPT порта.
  • FTBB-PROG.
    Очень надежный и быстрый программатор работающий через USB, причем безо всяких извратов. C драйверами под разные операционные системы. И мощной оболочкой avrdude. Недостаток один — содержит редкую и дорогую микросхему FTDI, да в таком мелком корпусе, что запаять ее без меткого глаза, твердой руки и большого опыта пайки весьма сложно. Шаг выводов около 0.3мм. Данный программатор встроен в демоплаты Pinboard

Программаторы с управляющим контроллером лишены многих проблем безмозглых. Они без особых проблем работают через USB. А если собраны на COM порт, то без извращенских методик работы с данными — как честный COM порт. Так что адаптеры COM-USB работают на ура. И детали подобрать можно покрупней, чтобы легче было паять. Но у этих программаторов есть другая проблема — для того чтобы сделать такой программатор нужен другой программатор, чтобы прошить ему управляющий контроллер. Проблема курицы и яйца. Широко получили распространение такие программаторы как:

Внутрисхемное программирование, несмотря на все его удобства, имеет ряд ограничений.
Микроконтроллер должен быть запущен, иначе он не сможет ответить на сигнал программатора. Поэтому если неправильно выставить биты конфигурации (FUSE), например, переключить на внешний кварцевый резонатор, а сам кварц не поставить. То контроллер не сможет запуститься и прошить его внутрисхемно будет уже нельзя. По крайней мере до тех пор пока МК не будет запущен.
Также в битах конфигурации можно отключить режим внутрисхемной прошивки или преваратить вывод RESET в обычный порт ввода-вывода (это справедливо для малых МК, у которых RESET совмещен с портом). Такое действо тоже обрубает программирование по ISP.

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

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

Для радиолюбительской практики он особо не нужен, т.к. ISP программатор решает 99% насущных задач, но тем не менее параллельный программатор может пригодиться. Например, если в результате ошибочных действий были неправильно выставлены FUSE биты и был отрублен режим ISP. Параллельному программатору на настройку FUSE плевать с высокой колокольни. Плюс некоторые старые модели микроконтроллеров могут прошиваться только высоковольтным программатором.
Из параллельных программаторов для AVR на ум приходит только:

  • HVProg от ElmChan
  • Paraprog
  • DerHammer

А также есть универсальные вроде TurboProg 6, BeeProg, ChipProg++, Fiton которые могут прошивать огромное количество разных микроконтроллеров, но и стоят неслабо. Тысяч по 10-15. Нужны в основном только ремонтникам, т.к. когда не знаешь что тебе завтра притащат на ремонт надо быть готовым ко всему.

Прошивка через JTAG
Вообще JTAG это отладочный интерфейс. Он позволяет пошагово выполнять твою программу прям в кристалле. Но с его помощью можно и программу прошить, или FUSE биты вставить. К сожалению JTAG доступен далеко не во всех микроконтроллерах, только в старших моделях в 40ногих микроконтроллерах. Начиная с Atmega16.

Компания AVR продает фирменный комплект JTAG ICEII для работы с микроконтроллерами по JTAG, но стоит он (как и любой профессиональный инструмент) недешево. Около 10-15тыр. Также есть первая модель JTAG ICE. Ее можно легко изготовить самому, а еще она встроена в мою демоплату Pinboard.

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

Бутлоадер также прошит по умолчанию в главный контроллер демоплаты Pinboard чтобы облегчить и обезопасить первые шаги на пути освоения микроконтроллеров.

Pinboard II
Прошивка AVR с помощью демоплаты Pinboard II (для Pinboard 1.1 все похоже)

Спасибо. Вы потрясающие! Всего за месяц мы собрали нужную сумму в 500000 на хоккейную коробку для детского дома Аистенок. Из которых 125000+ было от вас, читателей EasyElectronics. Были даже переводы на 25000+ и просто поток платежей на 251 рубль. Это невероятно круто. Сейчас идет заключение договора и подготовка к строительству!

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

89 thoughts on “AVR. Учебный курс. Трактат о программаторах”

А что это делает в учебном курсе? чего не на главной странице?
Здарова, Артем, вот я и зашел, чего то не мог зайти долго…

Я постепенно правлю и переписываю старые статьи, чтобы привести их в более стройный и завершенный вид.

Источник

Читайте также:  Скручивающийся удлинитель своими руками
Оцените статью