Что такое внутрисхемное программирование AVR. Какие преимущества дает ISP. Какие интерфейсы используются для внутрисхемного программирования AVR. Какое оборудование нужно для ISP AVR микроконтроллеров. Как реализовать внутрисхемное программирование на практике.
Что такое внутрисхемное программирование AVR микроконтроллеров
Внутрисхемное программирование (In-System Programming, ISP) — это технология, позволяющая программировать микроконтроллеры AVR непосредственно в составе конечного устройства, без извлечения чипа. Данный метод обладает рядом существенных преимуществ по сравнению с традиционным программированием через программатор:
- Возможность обновления прошивки готового устройства без разборки
- Упрощение процесса разработки и отладки
- Экономия времени при многократном перепрограммировании
- Снижение риска повреждения выводов микроконтроллера
- Возможность программирования микросхем в корпусах для поверхностного монтажа
Для реализации ISP в микроконтроллерах AVR предусмотрены специальные интерфейсы, позволяющие осуществлять запись во Flash и EEPROM память, а также настройку конфигурационных битов.

Основные интерфейсы для внутрисхемного программирования AVR
Для внутрисхемного программирования микроконтроллеров AVR используются следующие основные интерфейсы:
SPI (Serial Peripheral Interface)
SPI — это синхронный последовательный интерфейс, который использует 4 сигнальные линии:
- MOSI — Master Out Slave In (данные от программатора к МК)
- MISO — Master In Slave Out (данные от МК к программатору)
- SCK — Serial Clock (тактовый сигнал)
- RESET — сброс микроконтроллера
SPI является наиболее распространенным интерфейсом для ISP AVR микроконтроллеров. Он поддерживается практически всеми моделями и позволяет осуществлять быструю запись данных.
JTAG (Joint Test Action Group)
JTAG — стандартизированный интерфейс для тестирования и отладки микросхем. В AVR он также может использоваться для внутрисхемного программирования. JTAG предоставляет расширенные возможности по сравнению с SPI, но поддерживается не всеми моделями AVR.
PDI (Program and Debug Interface)
PDI — это однопроводной интерфейс, разработанный Atmel для программирования и отладки некоторых моделей AVR. Он обеспечивает более высокую скорость передачи данных по сравнению с SPI.

Оборудование для внутрисхемного программирования AVR
Для реализации внутрисхемного программирования AVR микроконтроллеров необходимо следующее оборудование:
Программатор
Программатор — это устройство, которое подключается к компьютеру и обеспечивает электрическое сопряжение с программируемым микроконтроллером. Наиболее популярные программаторы для AVR:
- AVRISP mkII — официальный программатор от Atmel/Microchip
- USBasp — бюджетный USB программатор с открытым исходным кодом
- STK500 — универсальный программатор с расширенными возможностями
- Atmel-ICE — мощный инструмент для программирования и отладки
Программное обеспечение
Для управления процессом программирования используется специальное ПО. Наиболее распространенные варианты:
- AVRDUDE — консольная утилита с открытым исходным кодом
- Atmel Studio — официальная IDE от производителя микроконтроллеров
- AVR Eclipse — плагин для среды разработки Eclipse
- PonyProg — кроссплатформенная программа для программирования микроконтроллеров
Практическая реализация внутрисхемного программирования AVR
Для осуществления внутрисхемного программирования AVR микроконтроллера необходимо выполнить следующие шаги:

- Подключить программатор к компьютеру через USB или COM-порт
- Соединить выводы программатора с соответствующими выводами микроконтроллера согласно документации
- Подать питание на программируемое устройство
- Запустить программное обеспечение для программирования
- Выбрать тип микроконтроллера и настроить параметры программатора
- Загрузить файл прошивки (.hex или .bin)
- Запустить процесс программирования
После успешного завершения программирования микроконтроллер готов к работе с новой прошивкой.
Преимущества внутрисхемного программирования для разработчиков
Использование технологии внутрисхемного программирования предоставляет разработчикам электронных устройств на базе AVR микроконтроллеров ряд существенных преимуществ:
- Ускорение процесса разработки за счет возможности быстрого перепрограммирования
- Упрощение отладки благодаря возможности обновления прошивки «на лету»
- Снижение стоимости производства за счет отказа от программаторов-панелек
- Возможность обновления ПО готовых устройств в полевых условиях
- Защита интеллектуальной собственности путем блокировки чтения памяти программ
Все это делает внутрисхемное программирование незаменимым инструментом при работе с микроконтроллерами AVR.

Заключение
Внутрисхемное программирование значительно упрощает процесс разработки и производства устройств на базе AVR микроконтроллеров. Эта технология позволяет экономить время, снижать издержки и повышать гибкость электронных систем. Освоение методов ISP является важным навыком для каждого разработчика встраиваемых систем на базе 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 работают на ура. И детали подобрать можно покрупней, чтобы легче было паять. Но у этих программаторов есть другая проблема — для того чтобы сделать такой программатор нужен другой программатор, чтобы прошить ему управляющий контроллер. Проблема курицы и яйца. Широко получили распространение такие программаторы как:
- USBASP
- AVRDOPER
- AVR910 Protoss
Внутрисхемное программирование, несмотря на все его удобства, имеет ряд ограничений.
Микроконтроллер должен быть запущен, иначе он не сможет ответить на сигнал программатора. Поэтому если неправильно выставить биты конфигурации (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 чтобы облегчить и обезопасить первые шаги на пути освоения микроконтроллеров.
Atmega8 внутрисхемное программирование
В первом случае микроконтроллеры программируются перед установкой в устройство, для перепрограммирования требуется их извлечение из устройства, установка в панельку программатора, извлечение из программатора, установка в устройство…. Такой метод возможен только при использовании DIP-корпусов. При внутрисхемном программировании используются специальные разъемы на плате для подключения программатора. Это очень удобно, так как программу микроконтроллера в этом случае можно всегда изменить, не вынимая не выпаивая его из платы.
Поиск данных по Вашему запросу:
Схемы, справочники, даташиты:
Прайс-листы, цены:
Обсуждения, статьи, мануалы:
Дождитесь окончания поиска во всех базах.
По завершению появится ссылка для доступа к найденным материалам.
Содержание:
- Микроконтроллеры Atmega8. Программирование Atmega8 для начинающих
- Адаптер для программирования ATMega128
- Самодельный внутрисхемный программатор из конвертера USB-UART
- Использование программатора USBASP в Atmel Studio
- Программатор USB ISP для AVR: Ещё один шаг в сторону от ардуинонизации
- Внутрисхемное программирование
- ATMega48 – отличное соотношение цена/функциональность.
- Внутрисхемное программирование AVR
- Primary Menu
- Прошивка микроконтроллера
ПОСМОТРИТЕ ВИДЕО ПО ТЕМЕ: Восстановление Фьюзов ( Fuses ) с помощью программатора MiniPro TL866 .. English subtitles
Микроконтроллеры Atmega8. Программирование Atmega8 для начинающих
Типичная система ISP-программирования представляет собой комплекс средств, состоящий из персонального компьютера, интерфейсной платы и специализированного программного обеспечения. В зависимости от типа программируемой микросхемы могут использоваться различные средства программирования:. Для понимания особенностей внутрисхемной отладки и программирования по ISP-технологии далее будут рассмотрены три основных интерфейса, используемых для этих целей:.
Бурное развитие электронной техники и связанный с этим рост степени интеграции микросхем к концу х годов привели к необходимости разработки механизма тестирования, способного обеспечить полноценное тестирование сложных и функционально насыщенных печатных плат. В году группой JTAG Joint Test Automation Group — объединенная рабочая группа по автоматизации тестирования была начата разработка спецификации граничного периферийного сканирования, стандартизованная в году институтом IEEE.
В дальнейшем было выполнено несколько пересмотров стандарта. В году в него было добавлено описание языка BSDL Boundary-Scan Description Language — язык описания устройств, поддерживающих периферийное сканирование. С этого момента стандарт был принят ведущими электронными компаниями во всем мире. В настоящее время многие небольшие фирмы, которые по экономическим причинам не могут воспользоваться дорогими внутрисхемными тестерами, используют технологию граничного сканирования.
Последний раз стандарт был пересмотрен в году [1]. Архитектура граничного сканирования Boundary-Scan Test обеспечивает тестирование соединений между интегральными схемами на плате без использования физических тестовых пробников. Предполагается, что тестируемые микросхемы имеют поддержку JTAG-интерфейса. Стандарт IEEE Любая совместимая с JTAG-интерфейсом микросхема рис. Ячейки регистра сдвига BS-регистра располагаются непосредственно между внешними выводами и функциональным ядром микросхемы.
Данные, поступающие в кристалл через вывод TDI, сохраняются в регистре инструкций или в одном из регистров данных. Последовательные данные выводятся из микросхемы через вывод TDO.
Логический модуль интерфейса тактируется сигналом на входе TCK, не зависимом от системной тактовой частоты. Множество микросхем, совместимых со стандартом IEEE С ее помощью появляется возможность получать информацию о состоянии каждого вывода каждой микросхемы, являющейся частью общей цепи сканирования через последовательный TAP-интерфейс.
При обычной работе устройства JTAG-интерфейс не оказывает никакого влияния на его работу. При тестировании или внутрисхемном программировании с помощью JTAG-интерфейса можно воздействовать на логическое ядро микросхемы, выдавать логические сигналы на выводы микросхемы, считывать выходные сигналы от внутренней логики или значение логических уровней на выводах, впаянных в печатную плату.
Технология граничного сканирования позволяет испытывать плату на наличие структурных производственных ошибок и выполнять ISP-программирование почти всех устройств на плате, независимо от типа и размера встроенной памяти, через стандартный JTAG TAP-интерфейс. В результате происходит значительное сокращение необходимых точек тестирования на плате.
Это приносит много выгод: упрощается разводка печатной платы, снижаются затраты и время тестирования [2], сокращается время выхода готового изделия на рынок. Файлы, содержащие описание поддерживаемых инструкций и конфигурационных параметров регистров сдвига JTAG-совместимых микросхем на языке BSDL, бесплатно доступны на сайтах фирм-производителей.
Интерфейс SPI Serial Peripheral Interface — последовательный периферийный интерфейс обеспечивает высокоскоростную передачу информации в синхронном режиме между ведущим и ведомыми устройствами. На рис. Ведущее устройство содержит 8-разрядный регистр сдвига и генератор синхроимпульсов. Инициирование цикла обмена данными происходит, когда ведущий устанавливает на выводе SS ведомого устройства лог.
Ведущее устройство генерирует необходимую тактовую последовательность на выводе SCK для обмена данными между сдвиговыми регистрами устройств. В итоге содержимое регистра сдвига ведущего оказывается в регистре сдвига ведомого и наоборот. После передачи каждого пакета данных ведущий синхронизируется с ведомым установкой лог.
Следует учитывать, что если устройство сконфигурировано как ведущее, модуль SPI-интерфейса автоматически не управляет линией SS. Передача нового байта данных происходит сразу же после его записи в регистр сдвига. При необходимости использования линии SS управлять ее состоянием должно программное обеспечение пользователя.
С помощью SPI легко организуется внутрисхемное программирование микроконтроллеров Atmel рис. В этом режиме обеспечивается программирование запись и чтение памяти программ и данных, а также конфигурационных битов кристалла. Он представляет собой встроенный в кристалл механизм отладки на основе одной двунаправленной линии передачи информации, позволяющий управлять программным потоком, выполнять AVR-инструкции ядра микроконтроллера и осуществлять программирование интегрированной энергонезависимой памяти.
Физическое подключение эмулятора интерфейса к микроконтроллеру производится через вывод RESET, который работает как двунаправленный вывод с открытым стоком с подтягивающим к шине питания резистором. Когда разрабатывается система, в которой будет использоваться debugWIRE, необходимо соблюдать следующие требования:. Когда выполнение программы будет продолжено, сначала будет выполнена инструкция, сохраненная из памяти программ.
Команду останова можно вставить вручную, поместив инструкцию BREAK в программную память микроконтроллера. Следует учитывать, что Flash-память микроконтроллера перепрограммируется при каждом изменении точки останова.
Использование точек останова уменьшает ресурс Flash-памяти. Устройства, применявшиеся в отладке системы, не должны передаваться конечным пользователям. Использование интерфейса debugWIRE накладывает некоторые ограничения на устройство, в котором он применяется.
Коммуникационный вывод интерфейса dW физически совмещен с выводом внешнего сброса. Поэтому источники внешнего сброса не поддерживаются при работе debugWIRE. Если процессорное ядро остановлено, необходимо проявлять осторожность при доступе к некоторым регистрам ввода-вывода через отладчик AVR Studio. При работе с debugWIRE микроконтроллер использует 8-разрядный регистр DWDR, образующий коммуникационный канал между исполняемой в микроконтроллере программой и отладчиком.
Этот регистр доступен только интерфейсу debugWIRE и не может быть использован как регистр общего назначения при нормальной работе. Дальнейшее развитие идея внутрисхемного программирования получила в 8-разрядной серии AVR микроконтроллеров Atmel.
Все операции по программированию и перепрограммированию процессорное ядро выполняет по программе, находящейся в загрузочной области программной памяти. Когда происходит самопрограммирование, данные считываются в оперативную память через внешний интерфейс и затем записываются в программную память блоками по 10, или байт.
Особенности такого подхода состоят в следующем:. Практическое применение ISP-технологии возможно с использованием аппаратно-программных комплексов самых разных производителей.
Программное обеспечение этих приборов функционирует на платформе Windows некоторые версии адаптированы для UNIX и позволяет проводить тестирование, отладку модулей и перепрограммирование пользовательских микросхем на плате через стандартный TAP-интерфейс. Оборудование для работы с технологией граничного сканирования производят:.
Важно отметить, что профессиональное оборудование для граничного сканирования имеет достаточно высокую стоимость. Пакет включает в себя:. Файл назначений векторов с расширением. Вектор доступа к BS-чипам определяет совокупность из одного или нескольких выводов микросхем, объединенных в цепи JTAG. Фирма BLIC www. Бесплатный программный продукт PonyProg от Claudio Lanconelli www. Версия PonyProg V2. Схема программатора очень проста и может быть реализована на доступных компонентах, ее версия 2.
Корпорация Atmel производит большой ассортимент средств ISP-программирования и отладки для своих изделий. Для микроконтроллеров AVR-серии на сайте фирмы www. Схема этого программатора представлена на рис.
Программатор питается от того же источника, что и программируемый микроконтроллер. Когда программирование не происходит, все выводы программатора, подключенные к SPI-порту микроконтроллера, переводятся в третье состояние, благодаря чему программатор может быть постоянно подключен к плате с микроконтроллером. В целом, использование бесплатной программы AVR Studio и самостоятельно изготовленный вариант программатора AVR-ISP представляется идеальным решением для разработки и программирования устройств на базе линейки AVR-микроконтроллеров фирмы Atmel без каких-либо дополнительных затрат.
Скачать статью в формате PDF. Если Вы заметили какие-либо неточности в статье отсутствующие рисунки, таблицы, недостоверную информацию и т. Пожалуйста укажите ссылку на страницу и описание проблемы. Архив новостей издательства. Подписка на новости Да. Опрос Нужны ли комментарии к статьям? Комментировали бы вы? Да, обязательно Да, но только для зарегистрированных пользователей Нет, этот сервис не нужен Голосовать.
Заказать этот номер. Назад Технология разработки моделей микроконтроллеров с использованием декларативно-алгоритмических языков описания ядра и периферии Вперёд Технология разработки алгоритмически сложных цифровых систем с помощью автоматического синтеза микропрограммных автоматов. Тел: Факс:
Адаптер для программирования ATMega128
Как загрузить программу в микроконтроллер. Как запрограммировать микроконтроллер AVR. Можно через простейший адаптер — буквально «пять проводков» схема ниже соединяющих принтерный порт ПК с прошиваемым микроконтроллером AVR. Скачать весь курс по AVR одним архивом на заглавной странице курса. Результат написания и компиляции программы — файл-прошивку с расширением. МК AVR можно пере- программировать не менее раз, при чем это можно делать прямо в устройстве в котором они будут работать — такое программирование называют «в системе» — «ин систем программин» или ISP. Компания ATMEL рекомендует установить на плате устройства специальный разъем для подключения программатора.
Внутрисхемное программирование В AVR-микроконтроллере ATmega8 фирмы Atmel модуль SPI-интерфейса обладает следующими возможностями.
Самодельный внутрисхемный программатор из конвертера USB-UART
AVR-микроконтроллеры предоставляют пользователю несколько различных интерфейсов для программирования. Это последовательное программирование при высоком напряжении, последовательное программирование при низком напряжении через SPI, параллельное программирование при высоком напряжении и программирование по интерфейсу JTAG. Первый тип программирования встречается только в моделях AVR семейства ATtiny, последний — доступен некоторым моделям старшего семейства. Модели ATmega с наиболее развитой периферией могут поддерживать до трех различных интерфейсов программирования. Подавляющее большинство AVR-микроконтроллеров обладают также способностью самопрограммирования, благодаря чему содержимое памяти программ можно модифицировать непосредственно из пользовательской программы. Программирование при высоком напряжении параллельное и последовательное требует значительного числа выводов микроконтроллера и дополнительного источника напряжения 12 В. По этой причине конструкция программаторов достаточно сложна.
Использование программатора USBASP в Atmel Studio
Это процедура выполняется с помощью программатора — устройства, подключаемого между компьютером и микроконтроллером и работающего под управлением специальной программы. Наиболее популярным способом программирования микроконтроллеров AVR является внутрисхемное программирование по SPI интерфейсу. Как понятно из названия, этот способ позволяет программировать микроконтроллеры AVR прямо в составе схемы. Это очень удобно, потому что программу микроконтроллера в этом случае можно всегда модифицировать, не вынимая не выпаивая его из платы.
Данной информации вполне хватит чтобы прошить большинство моделей AVR микроконтроллеров не только в Linux, но и в других ОС.
Программатор USB ISP для AVR: Ещё один шаг в сторону от ардуинонизации
Описание программатора. И лучшие люди Отечества в данном случае, Petka не дремлют. Достоинства данной конструкции :. К недостаткам проекта в целом, можно отнести некоторую «размытость» полезной информации по ти страницам форума , что приводит к определённым трудностям при повторении конструкции. Однако в ряде частных случаев конструкцию можно упростить:.
Внутрисхемное программирование
Разработка приложений для встраиваемых систем firmware обычно осуществляется на настольной рабочей станции компьютер PC, работающий под Windows или Linux , на языке ассемблера и высокоуровневом языке C. С помощью кросс-платформенных инструментов компилятор, линкер и т. В большинстве случаев это энергонезависимая память non-volatile memory , требующая выполнения специальных процедур для своего программирования. На самых ранних этапах развития микроконтроллеров и процессоров энергонезависимая память была представлена микросхемами EPROM, EEPROM или FLASH с параллельным интерфейсом, которые для своего перепрограммирования требовали извлечения из сокета целевой системы и установки в сокет программатора иногда перед этим требовалось стирание с помощью ультрафиолетовой лампы. Сегодня память микроконтроллеров и внешних микросхем памяти может быть перепрограммирована без извлечения из схемы, где они работают. Эта технология называется внутрисхемное in-ciruit или внутрисистемное in-system программирование, часто обозначаемая аббревиатурой ISP от in-system programming.
множество микроконтроллеров серий AVR ATTiny, AVR ATMega и других. Для программирования микроконтроллеров AVR будем использовать SPI 6 контактов, позволяющий произвести внутрисхемное программирование.
ATMega48 – отличное соотношение цена/функциональность.
Микроконтроллеры Atmega8 являются самыми популярными представителями своего семейства. Во многом они этим обязаны, с одной стороны, простоте работы и понятной структуре, с другой — довольно широким функциональным возможностям. В статье будет рассмотрено программирование Atmega8 для начинающих. Микроконтроллеры встречаются везде.
Внутрисхемное программирование AVR
ВИДЕО ПО ТЕМЕ: Программирование МК AVR. УРОК 31 часть 1. ATtiny2313 и Atmega8 по SPI
Каждый, кто начинает работать с микроконтроллерами AVR знает, что при неправильной установке «фьюзов», можно прийти к печальным последствиям. Восстановить их работоспособность и вернуть к жизни может лишь параллельный программатор. Хочу еще собрать реаниматор больных фьюзов для ATtiny. Он доработал схема с Радиодеда radioded. Доработки: 1.
Подскажите пожалуйста по номиналам резисторов для того чтобы работало внутрисхемного программирование на attiny13A. Здравствуйте Можно ли прошивать Atmega8a у которого питание v, программатором c.
Primary Menu
Программа для микроконтроллера пишется на любом удобном языке программирования, компилируется в бинарный файл или файл формата intel HEX и заливается в микроконтроллер посредством программатора. Итак, первым шагом в освоении микроконтроллера обычно становится программатор. Ведь без программатора невозможно загнать программу в микроконтроллер и он так и останется безжизненным куском кремния. Что же представляет из себя это устройство? В простейшем случае программатор это девайс который связывает микроконтроллер и компьютер, позволяя с компа залить файл прошивки в память контроллера. Также нужна прошивающая программа, которая по специальному протоколу загонит данные в микроконтроллер. Программаторы бывают разные под разные семейства контроллеров существуют свои программаторы.
Прошивка микроконтроллера
В данной статье я расскажу вам об основных особенностях использования этого программатора из под ОС Windows 7 и как настроить его работу совместно со средой разработки программ Atmel Studio на примере версии 6. К сожалению, по умолчанию, Atmel Studio не поддерживает этот программатор. В первую очередь необходимо установить драйвер для программатора. Мы не будем подробно описывать процедуру установки драйвера, так как тут не должно возникнуть каких либо трудностей.
Программирование микроконтроллеров AVR « схемопедия
AVR-микроконтроллеры предоставляют пользователю несколько различных интерфейсов для программирования. Это последовательное программирование при высоком напряжении, последовательное программирование при низком напряжении через SPI, параллельное программирование при высоком напряжении и программирование по интерфейсу JTAG. Первый тип программирования встречается только в моделях AVR семейства ATtiny, последний – доступен некоторым моделям старшего семейства. Модели ATmega с наиболее развитой периферией могут поддерживать до трех различных интерфейсов программирования.
Подавляющее большинство AVR-микроконтроллеров обладают также способностью самопрограммирования, благодаря чему содержимое памяти программ можно модифицировать непосредственно из пользовательской программы. Кроме этого FLASH-память может быть перепрограммирована в режиме отладки через однопроводной интерфейс dW, имеющийся в ряде моделей ATmega и во всех новых моделях ATtiny.
Программирование при высоком напряжении (параллельное и последовательное) требует значительного числа выводов микроконтроллера и дополнительного источника напряжения 12 В. По этой причине конструкция программаторов достаточно сложна. При высоковольтном программировании достигается наибольшая скорость записи и предоставляется максимальный доступ к ресурсам AVR. Чаще всего этот вид программирования применяется при крупносерийном заводском производстве.
Интерфейс JTAG очень удобно использовать в тех случаях, когда необходимо вести программирование и отладку в одном цикле разработки. К сожалению JTAG имеется далеко не во всех моделях AVR, а фирменные программаторы стоят значительных денег.
Низковольтное последовательное программирование через SPI, наиболее распространено. Это способ стоит признать основным при программировании AVR-микроконтроллеров. Эго поддерживают все модели с ядром AVR, за исключением двух устаревших представителей младшего семейства ATtiny11x и ATtiny28x. В данном разделе будет приведено описание двух программаторов работающих в подобном режиме. Первый из них можно рекомендовать для быстрого старта. Он имеет простую конструкцию и работает под управлением популярной радиолюбительской программы PonyProg2000. Второй, намного более совершенный, является функциональным аналогом AVR ISP фирмы ATMEL. Этот программатор интегрируется с IDE AVR Studio и позволяет реализовать алгоритмы программирования с максимально возможной точностью.
Для взаимодействия программатора с микроконтроллером при последовательном низковольтном программировании используется аппаратный модуль SPI. Это очень практичное решение, позволяющее использовать минимальное число выводов и изменять алгоритмы работы устройства предварительно запаянного на плату. В виду последней причины программирование через SPI называют также еще внутрисхемным программированием или ISP (In System Programming).
Внутрисхемное программирование потребует задействовать у микроконтроллера в общей сложности 5 выводов. Это 3 линии модуля SPI (MISO, MOSI, SCK), вывод RESET и общий провод GND. В моделях семейства ATmega, имеющих на борту 64 и более кбайт FLASH-памяти, вместо MISO, MOSI используются выводы PDO и PDI, соответственно. В случае если программатор и микроконтроллер получают питание од одного источника, то дополнительно понадобится также вывод VCC, соединяющий шины питания. Перевод микроконтроллера в режим программирования осуществляется подачей низкого логического уровня на линию RESET. Длина шлейфа, соединяющего программатор с устройством, не должна превышать 15…20 см.
Рис. 1а Схема подключения программатора при
внутрисхемном программировании одного микроконтроллера
На рис.1а показана схема соединения программатора с AVR-микроконтроллером, при программировании через ISP. Для более надежной работы последовательно линиям MISO, MOSI, SCK рекомендуется включать сопротивления небольшого номинала. Напряжение питания программатора и устройства не должно иметь больших различий. Внутрисхемное программирование двух и более микроконтроллеров также возможно (рис.1б). В этом случае необходимо помнить об одном важном условии: в момент программирования на шине должен находиться только один активный микроконтроллер. Поэтому при проектировании платы заранее нужно предусмотреть переключатели (джампера J1, J2 на рис.1б), с помощью которых можно выборочно подавать напряжение на каждый программируемый микроконтроллер. После программирования модуль SPI или линии ввода-вывода, совпадающие с MISO, MOSI и SCK, могут быть использованы по своему прямому назначению.
При внутрисхемном программировании для чтения и записи доступны FLASH–память программ, EEPROM-память данных, биты защиты и управляющие FUSE–биты. Кроме этого могут быть считаны калибровочные ячейки и ячейки идентификатора.
Рис.1а Схема подключения программатора при
внутрисхемном программировании 2-х и более микроконтроллеров
Изменения некоторых FUSE–битов необходимо производить с большой осторожностью. Особенно если демонтировать микроконтроллер уже не представляется возможным. Главным образом это касается битов RSTDISBL и DWEN (если таковые имеется). Сброс любого из них в дальнейшем сделает невозможным использование линии RESET микроконтроллера. При RSTDISBL=0 вывод RESET настраивается как линия порта ввода-вывода, а при DWEN=0 – вход RESET служит однопроводным отладочным интерфейсом dW. Естественно, что в обоих случаях работа программатора с микроконтроллером будет заблокирована. Кроме того во время внутрисхемного программирования микроконтроллеры AVR должны работать от собственного источника тактовой частоты, выбор которого осуществляется битами CKSEL3:CKSEL0. Если их настройка произведена некорректно (например, вместо внутреннего RC-генератора, выбран внешний кварцевый резонатор), то устройство может вообще отказаться работать. Еще один FUSE–бит, о котором следует помнить, – это SPIEN. SPIEN не доступен во время последовательного низковольтного программирования. Однако его установка при программировании в каком-либо другом режиме запретит работу модуля SPI. Напомним, что активизированным FUSE–битам соответствует состояние лог.0.
Все поступающие в продажу микроконтроллеры AVR изначально оптимизированы для внутрисхемного программирования. Биты DWEN, RSTDISBL, SPIEN имеют состояние 1, 1 и 0 соответственно, а CKSEL3:CKSEL0 установлены таким образом, что в качестве источника тактовой частоты запускается внутренний RC-генератор (как правило, на частоте 1 МГц), не требующий ни каких дополнительных деталей.
Перейти к следующей части: Простой внутрисхемный программатор
Внутрисистемное программирование
6- и 10-контактные разъемы AVR ISP
Внутрисистемное программирование (ISP), также называемый внутрисхемное последовательное программирование (ICSP), это способность некоторых программируемые логические устройства, микроконтроллеры, и другие встроенные устройства быть запрограммированным при установке в полную систему, вместо того, чтобы требовать программирования чипа перед его установкой в систему. Это позволяет доставлять обновления прошивки во встроенную память микроконтроллеров и связанных процессоров, не требуя специальной схемы программирования на печатной плате, и упрощает работу по проектированию.[1]
Существует несколько взаимно несовместимых протоколов внутрисистемного программирования для программирования. микроконтроллер устройства, в том числе Микроконтроллеры PIC, AVR, а Параллакс пропеллер. ICSP в основном реализован Технология микрочипов для программирования устройств PIC и dsPIC.
Основное преимущество этой функции состоит в том, что она позволяет производителям электронных устройств интегрировать программирование и тестирование в один этап производства и экономить деньги, вместо того, чтобы требовать отдельного этапа программирования перед сборкой системы. Это может позволить производителям программировать микросхемы на производственной линии своей собственной системы вместо того, чтобы покупать предварительно запрограммированные микросхемы у производителя или дистрибьютора, что позволяет вносить изменения кода или конструкции в середине производственного цикла.
Микроконтроллеры обычно припаиваются непосредственно к печатной плате и обычно не имеют схемы или места для подключения большого кабеля внешнего программирования к другому компьютеру.
Как правило, микросхемы, поддерживающие ISP, имеют внутреннюю схему для генерации любого необходимого напряжения программирования из нормального напряжения питания системы и связи с программатором через последовательный протокол. Большинство программируемых логических устройств используют вариант JTAG протокол для ISP, чтобы упростить интеграцию с процедурами автоматического тестирования. Другие устройства обычно используют проприетарные протоколы или протоколы, определенные старыми стандартами. В системах, достаточно сложных, чтобы требовать умеренно больших клей логика, разработчики могут реализовать подсистему программирования под управлением JTAG для устройств, не поддерживающих JTAG, таких как флэш-память и микроконтроллеры, позволяющие выполнять все процедуры программирования и тестирования под управлением единого протокола.
Содержание
- 1 История
- 2 Промышленное применение
- 3 Микрочип ICSP
- 3.1 Сигналы и распиновка
- 3.2 Распиновка RJ11
- 4 использованная литература
- 5 Смотрите также
История
Начиная с начала 90-х годов мы стали свидетелями важной технологической эволюции в архитектуре микроконтроллеров. Сначала они были реализованы в двух возможных решениях: OTP (одноразовый программируемый) или с Память EPROM. В этих технологиях процесс стирания памяти требует, чтобы микросхема подвергалась воздействию ультрафиолетового света через специальное окно над корпусом. В 1993 г. Технология микрочипов представил первый микроконтроллер с EEPROM память: PIC16C84. Память EEPROM можно стереть электрически. Эта функция позволила снизить затраты на реализацию за счет удаления окна стирания над пакетом и запуска технологии внутрисистемного программирования. С помощью ISP процесс перепрошивки может быть выполнен прямо на плате в конце производственного процесса. Эта эволюция дала возможность объединить этапы программирования и функционального тестирования и в производственных средах, а также начать предварительное производство плат, даже если разработка прошивки еще не завершена. Таким образом, можно было исправить ошибки или внести изменения позже. В том же году, Атмель разработала первый микроконтроллер с флэш-памятью, который проще и быстрее программировать и с гораздо более длительным жизненным циклом по сравнению с памятью EEPROM.
Микроконтроллеры, поддерживающие ISP, обычно снабжены выводами, используемыми периферийным устройством последовательной связи для взаимодействия с программатором, памятью Flash / EEPROM и схемой, используемой для подачи напряжения, необходимого для программирования микроконтроллера. Периферийное устройство связи, в свою очередь, подключается к периферийному устройству программирования, которое обеспечивает команды для работы с памятью Flash или EEPROM.
При разработке электронных плат для программирования ISP необходимо принять во внимание некоторые рекомендации, чтобы этап программирования был как можно более надежным. Некоторые микроконтроллеры с небольшим количеством контактов разделяют линии программирования с линиями ввода-вывода. Это может стать проблемой, если необходимые меры предосторожности не будут учтены при проектировании платы; во время программирования устройство может повредить компоненты ввода / вывода. Кроме того, важно подключить линии Интернет-провайдера к высокий импеданс схемы, чтобы избежать повреждения компонентов программистом и потому, что микроконтроллер часто не может обеспечить достаточный ток для управления линией. Многим микроконтроллерам требуется выделенная линия RESET для входа в режим программирования. Необходимо обращать внимание на ток, подаваемый на линейный проезд, и проверять наличие сторожевые собаки подключен к линии RESET, которая может вызвать нежелательный сброс и, следовательно, привести к ошибке программирования. Более того, некоторым микроконтроллерам требуется более высокое напряжение для входа в режим программирования, и, следовательно, необходимо убедиться, что это значение не ослаблено и что это напряжение не передается на другие компоненты на плате.
Промышленное применение
Процесс внутрисистемного программирования происходит на заключительном этапе производства продукта и может выполняться двумя разными способами в зависимости от объемов производства.
В первом способе к программатору вручную подключается разъем. Это решение предполагает участие человека в процессе программирования, который должен подключить программатор к электронной плате с помощью кабеля. Следовательно, это решение предназначено для небольших объемов производства.
Второй метод использует контрольные точки на борту. Это определенные области, размещенные на печатной плате, или Печатная плата, которые электрически связаны с некоторыми электронными компонентами на плате. Контрольные точки используются для выполнения функциональных тестов компонентов, установленных на плате, и, поскольку они подключены непосредственно к некоторым контактам микроконтроллера, они очень эффективны для ISP. Для средних и больших объемов производства использование контрольных точек является лучшим решением, поскольку позволяет интегрировать этап программирования в сборочную линию.
В производственных линиях доски размещаются на гвоздях, называемых приспособление. Последние интегрируются в зависимости от объемов производства в полуавтоматические или автоматические испытательные системы, называемые ATE — Автоматическое испытательное оборудование. Крепления специально разработаны для каждой платы — или, самое большее, для нескольких моделей, похожих на плату, для которой они были разработаны — поэтому они взаимозаменяемы в системной среде, в которую они интегрированы. После того, как плата и приспособление размещены в нужном положении, в тестовой системе есть механизм, позволяющий контактировать иглы приспособления с контрольными точками на плате для тестирования. Система, к которой он подключен или напрямую интегрирован внутри, программистом интернет-провайдера. Он должен программировать устройство или устройства, установленные на плате: например, микроконтроллер и / или последовательную память.
Микрочип ICSP
Для большинства микроконтроллеров Microchip программирование ICSP выполняется с использованием двух выводов, часов (PGC) и данных (PGD), в то время как высокое напряжение (12 В) присутствует на выводе Vpp / MCLR. Программирование низкого напряжения (5 В или 3,3 В) обходится без высокого напряжения, но оставляет за собой исключительное использование вывода ввода / вывода. Однако для более новых микроконтроллеров, в частности семейств микроконтроллеров PIC18F6XJXX / 8XJXX, переход в режимы ICSP немного отличается.[2] Для входа в режим ICSP Program / Verify необходимо выполнить следующие три шага:
- Напряжение на короткое время подается на вывод MCLR (master clear).
- 32-битная последовательность ключей представлена на PGD.
- Напряжение повторно подается на MCLR.
Микрочип Возьми Программист ICSP
Отдельное оборудование, называемое программатором, требуется для подключения к порту ввода-вывода ПК с одной стороны и к PIC с другой стороны. Список функций для каждого основного типа программирования:
- Параллельный порт — большой и громоздкий кабель, большинство компьютеров имеют только один порт, и замена кабеля программирования на подключенный принтер может быть неудобной.
Большинство ноутбуков новее 2010 года не поддерживают этот порт. Программирование параллельного порта выполняется очень быстро.
- Серийный порт (COM-порт) — В свое время самый популярный метод. Последовательным портам обычно не хватает напряжения питания для программирования цепей. Большинство компьютеров и ноутбуков новее 2010 года не поддерживают этот порт.
- Разъем (в цепи или вне цепи) — ЦП необходимо либо снять с печатной платы, либо к месту изготовления микросхемы необходимо прикрепить зажим.
- USB-кабель — Маленький и легкий, имеет поддержку источника напряжения, и у большинства компьютеров есть дополнительные порты. Расстояние между программируемой схемой и компьютером ограничено длиной USB-кабеля — обычно она не должна превышать 180 см. Это может создать проблемы для программирования устройств глубоко в машинах или шкафах.
Программисты ICSP имеют много преимуществ, среди которых основными особенностями являются размер, доступность компьютерного порта и источник питания. Из-за различий в схеме соединения и целевой цепи, окружающей микроконтроллер, нет программатора, который бы работал с все возможные целевые цепи или межсоединения. Микрочип предоставляет подробное руководство по программированию ICSP[3] Многие сайты предоставляют примеры программирования и схем.
PIC программируются с использованием пяти сигналов (шестой контакт «aux» предусмотрен, но не используется). Данные передаются по двухпроводной синхронной последовательной схеме, еще три провода обеспечивают программирование и питание микросхемы. Тактовый сигнал всегда контролируется программистом.
Типичное программирование коммуникации
Сигналы и распиновка
Типовые соединения микросхемы
- Vpp — Режим программирования напряжения. Он должен быть подключен к выводу MCLR или Vpp вывод дополнительного порта ICSP, доступного на некоторых PIC с большим количеством выводов. Чтобы перевести PIC в режим программирования, эта строка должна находиться в заданном диапазоне, который варьируется от PIC до PIC.
Для 5 V PIC, это всегда некоторая сумма выше Vдд, и может достигать 13,5 В. Микросхемы PIC с напряжением только 3,3 В, такие как серии 18FJ, 24H и 33F, используют специальную подпись для входа в режим программирования и Vpp это цифровой сигнал, который находится либо на земле, либо на Vdd. Нет никого Vpp напряжение, которое находится в пределах допустимого Vpp ассортимент всех PIC. Фактически, минимально необходимый Vpp уровень для некоторых PIC может повредить другие PIC.
- Vдд — Это положительный вход питания PIC. Некоторые программисты требуют, чтобы это обеспечивалось схемой (схема должна быть хотя бы частично включена), некоторые программисты рассчитывают управлять этой линией самостоятельно и требуют, чтобы схема была отключена, в то время как другие могут быть настроены в любом случае (например, Microchip ICD2) . Программисты Embed Inc рассчитывают запустить Vдд линии и требуют, чтобы целевая цепь была отключена во время программирования.
- Vсс — Отрицательная подача питания на PIC и опорный сигнал нулевого напряжения для остальных сигналов. Напряжения остальных сигналов неявно относятся к Vсс.
- ICSPCLK — Линия часов последовательного интерфейса данных. Эта линия переходит от GND к Vдд и всегда им движет программист. Данные передаются на заднем фронте.
- ICSPDAT — Последовательная линия передачи данных. Последовательный интерфейс является двунаправленным, поэтому этой линией может управлять программист или PIC, в зависимости от текущей операции. В любом случае эта линия переключается с GND на Vdd. Бит передается на заднем фронте PGC.
- AUX / PGM — В новых контроллерах PIC этот вывод используется для включения программирования низкого напряжения (LVP). Удерживая PGM на высоком уровне, микроконтроллер перейдет в режим LVP. Микроконтроллеры PIC поставляются с включенным LVP, поэтому, если вы используете новый чип, вы можете использовать его в режиме LVP.
ww1.microchip.com/downloads/en/devicedoc/30277d.pdf Руководство по программированию ICSP, Микрочип
- Программисты устройств
- Эвелта Артикул:
- 024-ATATMEL-ICE-BASIC
- Номер детали производителя:
- ATATMEL-ICE-BASIC
- Программирование и отладка всех 32-разрядных микроконтроллеров AVR на интерфейсах JTAG и aWire
- Программирование и встроенная отладка всех устройств семейства AVR XMEGA на двухпроводных интерфейсах JTAG и PDI
- Программирование JTAG и SPI и отладка всех 8-разрядных микроконтроллеров AVR с поддержкой OCD на интерфейсах JTAG или debugWIRE
- Программирование и отладка всех микроконтроллеров SAM ARM Cortex-M на интерфейсах SWD и JTAG
- Полная отладка на уровне исходного кода в Atmel Studio
- Поддерживает все встроенные аппаратные точки останова в целевом микроконтроллере (количество зависит от модуля OCD в целевом устройстве)
- До 128 программных точек останова
- Целевое напряжение от 1,62 до 5,5 В
- Питание от USB
- Предоставляет разводку разъема отладки ARM Cortex (10-контактный) и разводку разъема AVR JTAG
Смотрите также
In-System Programming | arm | programming
Разработка приложений для встраиваемых систем (firmware) обычно осуществляется на настольной рабочей станции (компьютер PC, работающий под Windows или Linux), на языке ассемблера и высокоуровневом языке C. С помощью кросс-платформенных инструментов (компилятор, линкер и т. д.) генерируется исполняемый двоичный код, который должен быть выгружен в память целевой платы. В большинстве случаев это энергонезависимая память (non-volatile memory), требующая выполнения специальных процедур для своего программирования.
На самых ранних этапах развития микроконтроллеров и процессоров энергонезависимая память была представлена микросхемами EPROM, EEPROM или FLASH с параллельным интерфейсом, которые для своего перепрограммирования требовали извлечения из сокета целевой системы и установки в сокет программатора (иногда перед этим требовалось стирание с помощью ультрафиолетовой лампы). Сегодня память микроконтроллеров и внешних микросхем памяти может быть перепрограммирована без извлечения из схемы, где они работают. Эта технология называется внутрисхемное (in-ciruit) или внутрисистемное (in-system) программирование, часто обозначаемая аббревиатурой ISP (от in-system programming).
Для реализации ISP требуются следующие составляющие:
1. Программный инструмент, работающий на PC (утилита программирования), который может управлять интерфейсом программирования через любой стандартный порт (сегодня это чаще всего USB). Компьютер, где работает это программное обеспечение, называют еще хостом PC.
2. Адаптер программирования, который позволяет подключиться к интерфейсу программирования целевой платы через любой стандартный порт компьютера PC (сегодня это чаще всего USB, раньше также использовались порты RS-232, принтер порта LPT).
3. Специальный интерфейс программирования наподобие SPI [2], JTAG [3] (иногда используются и другие интерфейсы).
Все 3 этих требования должны быть так или иначе реализованы, однако в реальном мире существует множество вариантов реализации. Например, адаптер программирования может быть интегрирован в целевую плату. В этом примере кабель USB будет подключаться напрямую к PC и к целевой плате. Иногда интерфейс программирования доступен через специальные инструкции или регистры микроконтроллера, которые позволяют загрузить в память новое firmware.
Здесь (перевод [1]) представлен обзор различных методов ISP, используемые сегодня с популярными семействами микроконтроллеров AVR и ARM. Эта статья не претендует на полноценный обзор ISP, потому что в мире существует множество семейств микроконтроллеров и процессоров с различными особеностями реализации технологии внутрисхемного программирования.
[Программное обеспечение PC]
Есть множество инструментов (утилит программирования), каждый поддерживает свой набор интерфейсов программирования, адаптеров и целей (микроконтроллеров) для программирования. Довольно важен тот момент, что не все инструменты доступны для каждой операционной системы PC.
Утилита программирования взаимодействует с пользователем либо через командную строку (command line, CLI) или через графический интерфейс (окно диалога с кнопками и галочками, GUI). Каждый из этих методов взаимодействия имеет свои достоинства и недостатки. В то время как CLI лучше всего подходят для автоматизации (очень важно в производстве, когда нужно многократно повторять одну и ту же последовательность операций), интерфейс GUI упрощает ручное изменение различных опций программирования, избавляя от запоминания команд CLI. Некоторые утилиты поддерживают оба метода использования, CLI и GUI. Иногда графический интерфейс служит надстройкой над ниже лежащим интерфейсом командной строки, формируя командную строку из опций графического интерфейса.
Некоторые адаптеры программирования наподобие Zylin ZY1000 (см. ниже) имеют встроенное программное обеспечение программирования, управляемое через web-интерфейс. Это делает возможность программирования практически независимой от используемой операционной системы настольного компьютера PC.
В таблице ниже представлено популярное бесплатное программное обеспечение (некоторые из них с открытым исходным кодом) для программирования встраиваемых систем.
Название | Open Source |
Поддержка OS |
CLI | GUI | Поддерживаемые микроконтроллеры |
AVRDUDE [4] | Да | Linux Windows OS X |
Да | Да [10] | AVR |
AVR Studio 4 [5] | — | Windows | Да | Да | AVR |
JTAG-O-MAT [6] | Да | Linux Windows |
Да | — | ARM |
OpenOCD [7] | Да | Linux Windows OS X |
Да | — | ARM |
SAM-PROG [8] | — | Windows | ? | Да | ARM |
UISP [9] | Да | Linux Windows |
Да | — | AVR |
[Порты PC, используемые для ISP]
Устаревшие порты LPT и RS-232
Адаптеры, использующие для подключения порт принтера LPT, являются самыми простыми. Обычно в них нет ничего, кроме микросхем буфера или преобразователя уровней, подключаемых с одной стороны к сигналам LPT, а с другой стороны к программируемой целевой системе. Иногда в качестве преобразователей уровня используются обычные резисторы. Интерфейс LPT был широко распространен в 80-х и 90-х годах двадцатого века, но эти времена прошли. Сегодня уже трудно найти компьютер PC, на котором был бы интерфейс LPT, однако в продаже все еще можно найти карты расширения для шины PCI, на которых есть интерфейс LPT.
Как и порты принтера LPT, последовательные интерфейсы RS-232 (COM-порт) сегодня заменил интерфейс USB. Однако последовательные порты RS-232 все еще остаются популярными для встраиваемых систем. Многие продвинутые адаптеры программирования основаны на микроконтроллерах, и почти у всех микроконтроллеров есть в распоряжении как минимум один последовательный порт UART. Это аппаратная логическая составляющая, которая делает возможным обмен данными через RS-232. Таким образом, адаптеры программирования с портами RS-232 сегодня все еще используются. Некоторые производители продают преобразователи USB — RS-232, которые можно использовать для подключения программатора с интерфейсом RS-232 к компьютеру, но иногда подключение через преобразователь не работает (это зависит от реализации программного обеспечения PC и аппаратуры преобразователя USB — UART, насколько он хорошо совместим с интерфейсом программатора).
USB намного сложнее, чем параллельный порт LPT или последовательный интерфейс RS-232, однако сегодня уже имеется много микроконтроллеров, аппаратно поддерживающих этот интерфейс, и их ассортимент с каждым днем увеличивается. Таким образом, появляется все больше и больше адаптеров программирования, подключаемых через порт USB, потому что интерфейс USB есть практически на каждом компьютере PC. После того, как компания FTDI предоставила специальные микросхемы [11], которые дают возможность просто реализовать программирование JTAG через USB без необходимости писать для этого какое-либо firmware, цена адаптеров программирования для JTAG, которые работают через USB, значительно упала.
Примечание: если говорить о цене на адаптеры, то она может меняться в широких пределах — от нескольких долларов до нескольких тысяч долларов. Цена основана на поддержке больших скоростей, реализации гальванической изоляции, поддержке отладки, качества буферизации сигналов, уникальных возможностях и т. д.
Одним из недостатков USB является ограниченная длина кабеля. Чем короче кабель, тем вся система программирования работает надежнее. Сегодня наиболее продвинутые адаптеры программирования поддерживают подключение через Ethernet, что дает возможность программирования и отладку даже через сеть Интернет.
[AVR ISP]
Есть несколько способов реализации внутрисхемного программирования для программирования внутренней flash-памяти микроконтроллеров AVR. Ниже приведены названия этих интерфейсов по терминологии Atmel:
• ISP, который иногда называют SPI, потому что он основан на последовательном периферийном интерфейсе [2].
• JTAG, доступный на мощных микроконтроллерах AVR, он может служить альтернативой для ISP. JTAG позволяет не только программировать память AVR, но еще позволяет выполнять отладку программ по исходному коду и поддерживает внутрисхемное тестирование системы (технология boundary scan). Микроконтроллеры AVR, на которых есть JTAG, также дополнительно могут программироваться не только через JTAG, но еще и через ISP.
• DebugWire, используется на многих микроконтроллерах AVR, у которых малое количество выводов. Для передачи данных используется только один сигнальный вывод микроконтроллера. Этот интерфейс кроме программирования памяти также поддерживает и отладку.
• PDI можно найти на новых чипах XMEGA.
• TPI используется на некоторых TinyAVR, у которых мало внешних выводов и мало доступной памяти.
Примечание: для AVR существуют еще так называемые методы программирования HVSP (высоковольтное последовательное программирование) и HVPP (высоковольтное параллельное программирование), но эти технологии здесь не рассматриваются, потому что они не относятся к внутрисхемному программированию. Высоковольтное прогаммирование часто используется для восстановления фьюзов, в частности HVSP использует устройство AVR fuse doctor [12].
STK200 это простой, недорогой адаптер программирования ISP, подключаемый через параллельный порт принтера LPT. Изначально этот адаптер входил в состав комплекта начинающего разработчика Atmel STK200 starter kit, сейчас этот адаптер компанией Atmel больше не поддерживается. Однако существует множество утилит программирования, поддерживающих этот адаптер, и многие компании все еще представляют клоны этого адаптера. Из-за простоты STK200 и доступности его принципиальной схемы такой адаптер можно собрать самому (ниже приведена одна из таких схем).
Сегодня Atmel официально предоставляет 3 адаптера для программирования AVR. Ниже приведен их список в порядке возрастания цены и увеличения возможностей. Все эти адаптеры подключаются через USB.
AVR ISP mkII. Это программатор ISP, поддерживает интерфейсы ISP, PDI и TPI, отладка не поддерживается.
Схема и прошивка программатора AVR ISP mkII компанией Atmel не опубликована, однако в Интернете давно доступны варианты реализации (клоны) этого программатора на основе чипов AT90USB162, ATmega16U2 и ATmega32U4 (см. описание одного из вариантов такой реализации в статье [13]), прошивка для него сделана на основе библиотеки LUFA [14]. Таким образом, Вы сами можете изготовить такой программатор и залить в него готовую прошивку, либо можете скомпилировать эту прошивку для исходного кода.
AVR Dragon. Поддерживает программирование через ISP и отладку по исходному коду через DebugWire.
JTAGICE mkII. Поддерживает программирование через ISP и JTAG, а также отладку по исходному коду через JTAG и DebugWire.
[Альтернативные адаптеры AVR]
1. SP Duo JTAG Programmer site:embedded-creations.com.
2. AVR DUO ICE site:avrfreaks.net.
Эти адаптеры интересны тем, что предоставляют программирование через ISP и JTAG. SP Duo подключается через интерфейс RS-232, и он поставляется со своим собственным firmware, отладка JTAG не поддерживается. AVR DUO ICE подключается через USB, и поддерживает отладку JTAG.
Открытым сообществом разработчиков было сделано несколько попыток использования чипов FT2232 для реализации недорогого адаптера JTAG для AVR, но без особого успеха. Программирование происходит довольно медленно, и отладка JTAG работает ненадежно из-за того, что политика Atmel держит в секрете тонкости реализации технологии отладки AVR.
HappyJTAG и HappyJTAG2
Следует упомянуть про интересную разработку, которая поддерживает не только программирование через JTAG, но также и отладку.
HappyJTAG
HappyJTAG2
[ARM ISP]
Внутрисхемное программирование внутренней памяти FLASH микроконтроллеров ARM обычно осуществляется через JTAG. Наиболее простым адаптером JTAG в плане аппаратуры является адаптер Wiggler, который подключается через параллельный порт принтера LPT. Изначально этот адаптер предлагала компания Macraigor Systems, и в Интернет можно найти различные схемы его клонов.
Turtelizer [15] это один из примеров адаптера JTAG, подключаемого через RS-232. Он основан на микроконтроллере ATmega8 или ATmega168. Дизайн и прошивка адаптера Turtelizer опубликованы под лицензией BSD.
Сегодня многие адаптеры JTAG основаны на чипе FT2232 компании FTDI. На основе одного такого чипа можно создать два независимых интерфейса — один это JTAG, другой дополнительный порт RS-232. Turtelizer 2 [16] это пример одного из таких адаптеров, опубликованных как открытая разработка (Open Source Hardware).
Норвежская компания Zylin AS, известная как разработчик плагина Embedded CDT для Eclipse и поставщик пакетов OpenOCD, предоставляет сегодня наиболее подвинутые адаптеры JTAG. Адаптер программирования ZY1000, основанный на открытом программном обеспечении, это в действительности маленькая система Linux со встроенным интерфейсом Ethernet и JTAG, где интегрирован пакет OpenOCD и web-сервер. Все, что Вам нужно для программирования устройств ARM, это только браузер.
[Программирование внешней памяти через ISP]
Из-за Гарвардской архитектуры, где 8-битная шина данных микшируется с 16-битной шиной кода инструкции, выполнение программы всех микроконтроллеров семейства AVR ограничено только внутренней памятью FLASH. Это остается верным даже если доступна внешняя шина памяти. Тем не менее для хранения энергонезависимой памяти данных (non-volatile data memory) может использоваться внешняя память FLASH.
Микроконтроллеры ARM с внешней памяти не ограничены использованием внутренней памяти для памяти программ, для этого может использоваться и внешняя шина. Большое количество микроконтроллеров ARM представляются не только с внутренней памятью FLASH для памяти программ, куда записывается firmware, но также для firmware может записываться и во внешнюю FLASH-память, подключаемую к микроконтроллеру ARM в виде внешней микросхемы.
Существуют как минимум два основных метода для реализации внутрисхемного программирования внешних устройств памяти. Первый основан на технологии пограничного сканирования JTAG (JTAG boundary scan), которая позволяет переключать любой вывод и считывать его состояние у тестируемого микроконтроллера ARM. Если все выводы программирования совмещены с управляемыми выводами микроконтроллера, то JTAG boundary scan может использоваться для генерации сигналов последовательности программирования памяти чипа. Достоинство этого метода в том, что на целевой плате не требуется наличие никакого дополнительного поддерживающего кода, потому что технология JTAG boundary scan в чипе ARM полностью реализована аппаратно. Но, как можно было бы ожидать, это довольно медленный способ программирования.
Второй метод использует интерфейс отладки JTAG, который позволяет CPU выполнять отдельные инструкции. Этот метод программирования внешней памяти чипа позволяет использовать выполняемую по шагам последовательность инструкций. Это значительно быстрее метода boundary scan, но требует, чтобы CPU был инициализирован и запущен в работу на выполнение процедуры программирования. Вариант этого метода может быть использован, когда доступна некоторая область оперативной RAM. Вместо эмуляции отдельных инструкций в RAM выгружается и запускается целый кусок кода, осуществляющий программирование данных, поступающих в буфер RAM через JTAG. Программируемые данные могут поступать и через JTAG, и через дополнительный канал передачи данных, так называемый интерфейс JTAG COMM.
[Использование загрузчика (bootloader)]
Как правило загрузчики получают исполняемый двоичный код через один из внешних интерфейсов микроконтроллера, и записывают этот код в некую встроенную энергонезависимую память (она может находиться на кристалле микроконтроллера или установлена на плате в виде отдельной микросхемы). После того, как код передан и записан, он может быть запущен на выполнение специальной командой или последующим сбросом или включением питания системы. Часто в качестве интерфейса связи с хостом PC загрузчик использует UART, иногда USB и другие интерфейсы.
Загрузчик также может брать исполняемый код из энергонезависимой памяти, установленной на плате системы, загружать этот код в RAM и запускать его. Это происходит всякий раз при включении питания или сбросе системы.
Таким образом, различают 2 вида загрузчиков — один предназначен для получения кода firmware из внешнего источника (хоста PC) и прошивки его в энергонезависимую память системы, а второй вид загрузчика берет код из энергонезависимой памяти системы, записывает его в RAM и запускает на выполнение. Первый вид загрузчиков предназначен для обновления программного обеспечения без специального программатора. Подразумевается, что микроконтроллер системы поддерживает самопрограммирование. Второй вид загрузчика используется, когда этого требуют особенности реализации микроконтроллера и всей встраиваемой системы (используется реже).
Загрузчики AVR. Многие модели микроконтроллеров AVR поддерживают самопрограммирование, т. е. они могут перезаписывать собственную память программ [17]. Некоторая часть области кода памяти FLASH может быть предоставлена под код загрузчика. Из-за того, что этот код находится в отдельной секции, он может получить доступ на запись к другим секциям памяти FLASH микроконтроллера AVR. Краткий обзор загрузчиков AVR дан в статье [18].
Загрузчики ARM. Почти все микроконтроллеры серии AT91SAM компании Atmel имеют на борту записанный в ПЗУ специальный загрузчик кода, это так называя технология SAM-BA [8]. Работой этой технологии управляет энергонезависимый бит — он определяет, будет ли запущен при включении питания/сбросе код загрузчика, или же будет запущена ранее записанная в память FLASH программа приложения (firmware). Загрузчик активируется при очистке памяти микроконтроллера.
[Ссылки]
1. In-System Programming site:ethernut.de.
2. Интерфейс SPI.
3. Цоколевка интерфейсов JTAG.
4. AVR Downloader/UploaDEr site:savannah. nongnu.org.
5. Atmel Studio site:atmel.com.
6. JTAG-O-MAT site:sourceforge.net.
7. OpenOCD: руководство пользователя, начало.
8. AT91SAM7X: бутлоадер SAM-BA от компании Atmel.
9. UISP — AVR In-System Programmer site:nongnu.org.
10. avrdude-gui site:sourceforge.net.
11. FT2232H: двухканальная высокоскоростная USB микросхема для I/O.
12. Atmega fusebit doctor.
13. AVR-USB162MU: макетирование и изготовление программатора AVRISP-MKII в домашних условиях.
14. LUFA — бесплатная библиотека USB для микроконтроллеров Atmel AVR.
15. Turtelizer site:ethernut.de.
16. Turtelizer 2.
17. AVR109: самопрограммирование AVR.
18. Загрузчики (bootloader) для микроконтроллеров AVR.
Микроконтроллеры
Микроконтроллер (МК) — это очень сложное вычислительное устройство. МК внешне схож на обычную микросхему, но это только на первый взгляд. Его строение архитектуры намного сложнее даже обычного процессора, так как сам процессор — всего лишь часть системы, выполняющий роль, командно вычислительного узла и не имеющего оконечных узлов для работы извне.
В тоже время микроконтроллер считается полной автономной системой.В нём есть всё: вычислительное устройство, тактовый генератор, ОЗУ, ПЗУ, таймер, цап, а также линии ввода и вывода. По сути это микрокомпьютер, который может выполнять самые простейшие задачи.
Существует шесть компаний занимающихся данной отраслью микроэлектроники: Atmel Corporation, Microchip Technology Inc, STMicroelectronics, Texas Instruments, NXP и Freescale.
Две основные из них, занимающихся продажами микроконтроллеров на свободный рынок:
Microchip Technology Inc. — США, созданная в 1987 году, выпускающая 8 битные, 16 битные и 32-битные микроконтроллеры, семейства PIC. Модели: PIC12C508, PIC14000, PIC16C432, PIC17C42. ..
Atmel Corporation – США. Эта компания создана в 1984 году, выпускает 8 бит, 16 бит и 32 микроконтроллеры, семейства ARM,RISC архитектуры. Первая выпущенная модель была в 1993 году на базе ядра Intel 8051. Модели: ATtiny11, ATtiny2313, AT90S2313, ATmega8, ATmega16, ATmega32, ATmega48 и т.д.
Именно на МК этих производителей, сейчас радиолюбители собирают, различные простые и сложные автоматизированные устройства.
Для того что бы собрать какое либо устройство на базе МК, нужно обладать знаниями двух направлений, хотя бы базовых таких как: электроника и программирование.
Из электроники, достаточно закона ома и хотя бы умения отличать диод от резистора. Ну, если вы конечно ещё разбираетесь: в полупроводниках, в электронных компонентах, читаете принципиальные схемы, и даже собирали какие то радиоустройства — то собрать проблем, не составит.
Из программирования, особых знаний, для начала не надо. Если собираете первую модель, какого либо, простого устройства на МК.
Можно использовать и готовые написанные программы. Благо в интернете их полно.
Для осуществления такого простого проекта понадобятся:
Первое — собрать программатор. Он нужен для согласования микроконтроллера с компьютером (ПК), для того чтобы выполнить программирование микроконтроллера. Так как без программы, МК работать не будет. Второе — Установленная программа на ПК, которая будет прошивать МК.
Программаторы бывают разными как по схеме исполнения, так и по типу подключения к ПК. Их типы подключения бывают параллельными и последовательными.
Самый распространённый и безопасный, последовательный тип — собирается на базе буферной микросхемы, такой как 74HC244N фирмы Philips (Его точный аналог 74LS244N фирмы TEXAS INSTRUMENTS). Эта микросхема — 8 буферный шинный формирователь. Который сопрягает, каналы обмена данных (в частности программы) МК с ПК. Можно конечно обойтись и без неё, поставив обычные резисторы. Но тогда вы подвергните опасности (в виде порчи) аппаратную часть компьютера и микроконтроллера. Как это может произойти? Дело в том, что данный программатор подключается к компьютеру через LPT порт. В котором уровень сигнала передачи данных, намного выше чем, уровень порта интерфейса передачи данных(ISP) МК. Только поэтому и нужен программатор,
Сам ISP-интерфейс МК, из себя представляет пять проводников (контактных ножек МК),это: SCK, MISO, MOSI,RESET, GND. каждая из них выполняет конкретную функцию по передаче данных. MISO (Master Input Slave Output) — ввод данных, MOSI (Master Output Slave Input) — вывод данных, SCK — линия синхроимпульса скорости обмена данных, RESET — сброс, GND — общий провод(масса).
Кроме программирования через LPT(параллельный), существует ещё два варианта: через COM порт (последовательный) и универсальную последовательную шину(USB).
Программатор МК через COM порт, очень простой. Для его исполнения не нужна микросхема буфера. При использовании режима Bitbang, собирается из пяти деталей — диодов с резисторами, которые приводят уровень сигнала COM порта к необходимым МК. Описанный программатор, тоже довольно хорошо распространён, но менее безопасен, чем программатор LPT.
Теперь по поводу USB. Программаторы, сделанные для работы через данный порт, очень сложны. Для его сборки нужен прошитый микроконтроллер, которого у нас пока нет. Именно по этой и другим причинам, первый программатор лучше собирать с последовательным подключением(LPT).
Программ для работ с микроконтроллерами устанавливаемых в компьютер, достаточно много. Более удобны и функциональны: AVReAl, Pony prog, Visual avr и Ic prog. Они позволяют, редактировать, прошивать, считывать, форматировать, а также писать на них программы.
Есть ещё программы эмулирующую работу МК, такая как Proteus. Хороша тем, что позволяет проверить работу вашего будущего устройства в виртуальном виде, до того как вы будете собирать устройство на базе микроконтроллера. Заранее дав вам возможность исправить все недочёты. Само программирование происходит, путём установки МК в программатор с последующим подключением к ПК, и ни как в другой последовательности. Бывает и внутрисхемное программирование. МК позволяет прошивание, не изымая его из устройства.
При сборке программатора, внимательно проверяйте монтаж и распайку компонентов, перед подключением. Что бы избежать недоумения, если собранный вами программатор не заработает.
Также прошу обратить внимание на фьюзы(FUSE)во время прошивания микроконтроллера. FUSE — это внутрисхемный программный предохранитель. От которого зависят важные системные функции МК. В разных микроконтроллерах их бывает разное количество.
Главное помните, неправильное выставление FUSE, может вывести из строя МК. Данные об их правильной настройке, вы найдёте в справке микроконтроллера.
Руководство по схемам AVR ISP
Важно правильно разметить печатную плату, чтобы обеспечить бесперебойную работу системы.
Программирование микроконтроллеров AVR. В этом руководстве рассматриваются обычные проблемы, которые
встречаются и типовые принципиальные схемы AVR ISP.
Руководство по схемам AVR ISP
Это руководство охватывает последовательное программирование, которое обычно называют ISP, а не программирование JTAG. который использует другой соединитель и алгоритм. Интерфейс JTAG используется для отладки на более крупные устройства AVR (с 40 контактами) и могут также использоваться для программирования. Мост Канда АВР программисты также поддерживают JTAG. См. ниже информацию об интерфейсе AVR JTAG.
Системные программисты имеют разный объем «диска» в зависимости от их цены и дизайна, поэтому для максимальной гибкости при выборе программатора будьте осторожны с размерами, если только у вас есть веские причины для установки больших конденсаторов и маломощных резисторов.
Разъем AVR ISP может быть 6- или 10-контактным, но это не имеет значения для вашего
компоновка схемы. 10-контактные разъемы имеют больше линий заземления для повышения помехоустойчивости во время
программирование.
Простая цепь AVR ISP
Здесь показана простейшая схема AVR ISP с некоторыми примечаниями. Земля и VCC должны быть подключены к программиста, либо включить программатор, разрешить программисту включить цель или предоставить ссылку напряжение для цепей более низкого напряжения.
Цепь сброса ISP Atmel AVR
Atmel рекомендует установить диод между Reset и Vcc, как показано здесь, но у нас на практике не счел нужным. Обратите внимание на рекомендуемые значения резисторов и конденсаторов. немного отличается, но эти значения не критичны. Конденсатор от 10 нФ до 100 нФ и резистор между 4K7 и 10K будет в порядке.
Стандартные макеты заголовков ISP
Большинство инженеров используют на своей печатной плате либо 10-контактный разъем ISP, либо 6-контактный разъем ISP. Оба формата
представляют собой двухрядные контактные разъемы 0,1 дюйма (2,54 мм) со шпоночным пазом для ориентации. Шаг 1,27 мм (0,05 дюйма) и 2,0 мм
иногда используются для экономии места на печатной плате. Большинство программистов используют
10-контактный заголовок, но Atmel поменялся на 6-ходовой. Доступны адаптеры для замены 10-контактных
программатор ведет к 6-полосным заголовкам.
Интерфейс JTAG также представляет собой контактный разъем 0,1 дюйма (2,54 мм). Для работы интерфейса JTAG необходимо установить предохранитель JTAGEN. Линии JTAG можно без проблем использовать для других устройств JTAG, но если используются выводы JTAG как общий ввод/вывод, они должны быть снабжены изолирующими резисторами, как и линии ISP. Канда программисты используют адаптер для перехода к показанному стандартному интерфейсу Atmel JTAG — вид целевого макета.
Kanda поставляет адаптеры для преобразования в 10-контактные разъемы 2,0 мм и 1,27 мм (0,05 дюйма) для ISP и JTAG.
Также доступны адаптеры Micromatch и Flying Lead, и Kanda может изготовить любой индивидуальный адаптер, который вам может понадобиться. Контактная поддержка.
Адаптеры программатора AVR
10-контактная целевая схема
6-контактная целевая схема
10-контактная схема JTAG
Пример хороших и плохих схем
Подтягивающий резистор R1 слишком сильный, минимальное значение 1K
ОК? №
Подтягивающий резистор R1 не менее 1К.
ОК? ДА
Резистор R1, включенный последовательно, не повлияет на программирование ISP.
ОК? ДА
Последовательный резистор R2 в порядке с подтягивающим резистором R1 на стороне ISP.
ОК? ДА
Последовательный резистор R2 с подтягивающим резистором R1 на стороне АРН будет влиять на работу ISP.
ОК? №
Схема приложения использует вывод программирования для считывания выхода U2. Этот будет удерживать состояние линии, предотвращая программирование.
ОК? №
Схема приложения по-прежнему использует вывод в качестве входа для считывания вывода U2,
но развязывающий резистор R1 позволяет ISP управлять линией программирования.
Некоторым программистам потребуется более 1K, допустимо 2K2 или 4K7. всем программистам работать.
ОК? ДА
Пример хороших и плохих цепей AVRISP с использованием Reset IC
На этих схемах показаны некоторые распространенные схемы ISP, использующие микросхемы сброса.
Обычно используемая ИС MAX809 Brown-out имеет двухтактный выход. Это будет удерживать линию RESET на высоком уровне.
ОК? №
На этот раз резистор R1 не позволяет MAX809 удерживать сброс.
ОК? ДА
MAX803 можно использовать без развязывающего резистора, поскольку он имеет выход OPEN DRAIN.
ОК? ДА
Программисты AVR ISP
Портативный программатор AVR
Недорогой USB AVR ISP
USB AVR ISP с JTAG
АВР ИСП-MKII
Адаптер AVR ISP 1,27 мм
Адаптер AVR JTAG 1,27 мм
Адаптер AVR ISP 2,0 мм
Адаптер AVR JTAG 2,0 мм
Новости о продуктах Специальные предложения Сена Продукты Индекс продуктов от А до Я Индекс производителя Загрузка программного обеспечения Контакт
AVR Tutorial — Как работает программирование
Итак, у вас есть этот чип, и его можно программировать. Но как вы поместите свою программу на этот чип?
Комментарии? Предложения? Пишите на форум!
Когда код компилируется в программу Windows, он превращается в «двоичный», что означает, что он не читается человеком (что сложно понять машинам), вместо этого он читается машиной. Под окнами эти программы (часто называемые приложениями или исполняемыми файлами ) часто имеют имена, оканчивающиеся на .exe (например, notepad.exe или winword.exe ), на компьютерах Mac их имена часто заканчиваются на .App (хотя Finder это скрывает).
Для микроконтроллеров двоичные файлы заканчиваются на .hex (сокращение от Intel Hex Format ) Возможны и другие форматы, но это в значительной степени стандарт.
Ваш компилятор сгенерирует файл .hex из кода, а затем все, что вам нужно сделать, это передать этот .hex программа на чип!
Как обсуждалось в разделе «Что это такое?», микросхема AVR имеет небольшой объем флэш-памяти. В этой памяти хранится программа. Когда чип запускается (вы даете ему питание), он запускает любую программу во флэш-памяти. Итак, все, что нам нужно сделать, это выяснить, как записать в эту флэш-память
. Хороший способ подумать о флэш-памяти — изучить ее так, как вы, вероятно, с ней знакомы. Флэш-память также используется в картах MMC/SD, которые обычно используются в MP3-плеерах или цифровых камерах. Если вы посмотрите на нижнюю часть карты, вы увидите маленькие золотые пальчики. Это интерфейсные накладки.
Задняя часть мультимедийной карты. Анджей Барабаш.
Если вы заглянете в спецификацию карты MMC, вы обнаружите, что именно для этого предназначены 7 контактов. (SD/высокоскоростные карты могут иметь дополнительные контактные площадки, но этот стандарт был добавлен позже, поскольку существующий стандарт считался слишком медленным для больших мегапиксельных камер)
Часы данных
СО
Контакты питания и заземления используются для подключения питания к микросхеме. Контакт Chip Select используется, чтобы сообщить чипу, что он должен проснуться, Serial In контакт используется для отправки данных на карту, Serial Out используется для отправки данных с карты и Data Clock — это то, как мы сообщаем карте, как быстро мы хотим, чтобы данные сохранялись или извлекались. Данные выталкиваются из чипа по одному биту за раз, поэтому, если тактовая частота составляет 100 кГц, это означает, что в секунду передается 100 000 бит.
Если вы хотите извлечь или сохранить данные на флэш-карте, все, что вам нужно сделать, это вставить карту в устройство чтения флэш-карт. Затем у ридера есть драйвер на вашем компьютере, который позволяет вам просто перетаскивать файлы на изображение на вашем экране, и он выполняет всю тяжелую работу по отправке данных на карту.
Итак, какое отношение это имеет к программатору? Итак, микроконтроллер подобен флешке, а картридер подобен программатору. Когда вы вставляете чип в программатор (или, что более вероятно, кабель программатора в печатную плату, содержащую чипы), это позволяет программному обеспечению на вашем компьютере взаимодействовать с чипом через программатор. Обычно вы можете просто дать простую команду, например «отправить эту программу», и программист сделает всю тяжелую работу по программированию и проверке данных
Каждый AVR имеет набор контактов, которые являются контактами для программирования, вам просто нужно подключить программатор к этим контактам в правильном порядке, и вуаля, вы готовы к его программированию. К сожалению, почти каждый чип имеет разную распиновку, поэтому крайне важно, чтобы вы посмотрели в таблице данных правильные выводы.
Например, я большой поклонник микросхемы ATtiny2313, так что давайте откроем «сводную» таблицу данных (в ней всего дюжина страниц вместо стандартных 250. На первой странице вся информация о том, что содержится в чип
Быстрый тест : Сколько EEPROM у чипа? Как насчет флэш-памяти? БАРАН?
На второй странице есть распиновка. Мы будем иметь дело с корпусом PDIP (Plastic Dual In-line Package), который выглядит следующим образом:
Распиновка воспроизведена здесь
Чип имеет 20 контактов. Посмотрите внимательно, и вы заметите, что 6 из этих контактов эквивалентны контактам карты SD/MMC. Есть контакт питания ( VCC ) и контакт заземления ( GND ), есть также контакт SCK (по какой-то причине он называется UCSK ), контакт Serial Out ( MISO — Master In Serial Out ) и контакт Serial In ( MOSI — Master Out Serial In) . Единственное, чего здесь нет, так это булавки /ChipSelect. Вместо этого у него есть контакт /RESET , который действует аналогичным образом. Когда контакт /RESET находится под положительным напряжением (то же напряжение, что и VCC ), микросхема запускает программу, когда 9Контакт 0144 / RESET находится на земле (то же напряжение, что и GND ), затем микросхема останавливается и слушает инструкции по программированию на контактах программирования.
Все SD-карты имеют одинаковые пальцы в одном и том же месте, поэтому, когда вы вставляете ее в картридер, соединяются правильные контактные площадки. Программирование AVR работает аналогичным образом. Вместо контактных площадок чип часто помещается на печатную плату с контактами разъема, к которым подключается программист. Распиновка разъема стандартизирована, так что любой программатор может использоваться после правильного подключения разъема.
Существует два стандарта для внутрисистемного программирования AVR:
Слева — стандартный 6-контактный разъем, справа — 10-контактный стандарт, разъемы выглядят следующим образом:
Вот пример фотографии, показывающей как это выглядит, когда чип подключен к 6-контактному разъему
Фото предоставлено EvilMadScientistLabs
Черная метка на печатной плате и разъеме указывает на контакт №1. Вы можете проследить провода, чтобы сопоставить контакты чипа с контактами разъема и убедиться в правильности макета.
Упражнение: проверьте распиновку этой целевой платы
Чтобы узнать, как сделать «целевую доску», которая позволит вам программировать AVR (в частности, указанный ATtiny2313), пожалуйста, посетите учебник EvilMadScientistLab. Это довольно просто и будет охватывать часть того же материала.
Теперь, когда вы знаете, как работает программирование, пришло время выбрать ваш программатор оружия .
Программирование микроконтроллеров AVR и Arduino с помощью Arduino ISP
Все микроконтроллеры (MCU) требуют определенного механизма для их программирования, даже если они программируются только один раз. Обычно программный код пишется на хост-компьютере, затем он компилируется или транслируется, а объектный (машиночитаемый) код загружается в MCU («цель») с ПК («хост») с помощью кабеля ( обычно USB или RS232), который (с некоторым программным обеспечением) часто называют «программатором». После программирования MCU функционирует как закодировано.
Одним из очень популярных производителей макетных плат для микроконтроллеров является Arduino из Италии. Многие платы Arduino оснащены микроконтроллерами AVR, для которых также требуются программисты для сохранения программ, созданных на хост-компьютере, в память целевого микроконтроллера, такого как микроконтроллер AVR. Внешние программаторы часто используются для микроконтроллеров AVR и могут быть дорогостоящими.
Большинство целевых MCU необходимо программировать несколько раз во время разработки проекта, поэтому невозможно удалить MCU из схемы для его программирования. Многие микроконтроллеры, включая процессоры AVR, можно запрограммировать с помощью внутрисистемного программатора (ISP), поэтому их не нужно снимать с печатной платы. [я]
По умолчанию платы Arduino имеют резидентный код MCU, называемый загрузчиком. Загрузчики — это первые программы, которые внедряются в микроконтроллер при его включении. Загрузчики инструктируют MCU, что загружать или делать дальше. Arduino упрощает связь между хост-компьютером и резидентным микроконтроллером (целевым) с помощью интегрированной среды разработки (IDE). IDE является резидентной и включает инструменты, которые разработчики могут использовать для программирования, компиляции и отладки целевого MCU.
Загрузчик также обеспечивает связь между Arduino IDE и платой Arduino с помощью USB. Загрузчик отвечает за запись кода на чип, поступающий из Arduino IDE.
Платы для разработки Arduino имеют общий дизайн, который упрощает их использование, включая бесплатные программные инструменты. Платы контроллеров Arduino очень популярны для начала программирования встраиваемых систем и часто используются в образовательных учреждениях. Простое USB-соединение между отладочной платой Arduino (целью) и хост-компьютером делает Arduino пригодным для разработки встраиваемых проектов без необходимости понимать, как вводить программный код в микроконтроллер и запускать код оттуда. (Arduino называет программу или код «эскизом».) Платы Arduino больше всего подходят для небольших проектов.
Однако, если цель состоит в том, чтобы разработать экономичный продукт, то создание больших объемов плат производственного качества с использованием микроконтроллера AVR на специально разработанной печатной плате дешевле, чем покупка сотен или тысяч плат Arduino с таким же AVR. MCU. Тем не менее, многие использовали недорогие платы разработки Arduino (и аналогичные) в качестве установленного конечного продукта, если дешевле не создавать и не набивать небольшой тираж печатных плат.
Платы Arduino имеют небольшое количество вводов-выводов общего назначения и могут использоваться для самых разных целей. Например, платы Arduino могут выступать в качестве инструмента программирования для других микроконтроллеров AVR с использованием ISP Arduino и являются одним из самых простых и дешевых способов программирования микроконтроллеров AVR. Внутрисистемный программатор Arduino — это встроенная функция, предлагаемая в бесплатной среде разработки Arduino IDE. ISP позволяет программировать платы Arduino и другие микроконтроллеры AVR, используя другую плату Arduino, предназначенную для этой цели.[ii]
Однако программирование недавно разработанной платы Arduino с использованием полнофункциональной платы Arduino (в качестве программатора-Arduino) имеет несколько условий. Во-первых, «программатор-Arduino» (Arduino, который вы настроили как программатор) должен быть настроен как ISP. Эскиз (код) по умолчанию доступен в виде примера кода в меню «Файл» Arduino IDE. [iii] Скетч Arduino ISP передает необходимые инструкции Programmer-Arduino, чтобы настроить его в режиме программирования.
Рисунок 1: Вариант скетча Arduino ISP. (Источник: скриншот автора) Рисунок 2: Эскиз Arduino ISP. (Источник: Скриншот автора)Состояние Programmer-Arduino можно контролировать с помощью светодиодов, подключенных, как показано на рисунке. Скетч Arduino ISP предварительно запрограммирован для этой функции.
Рисунок 3: Подключение Arduino-светодиодов.
Контакт 7 = Программирование (Включается во время программирования)
Контакт 8 = Ошибка (Включается в случае ошибки программирования)
Контакт 9 = Сердцебиение (Остается включенным после включения программатора)
После настройки Programmer-Arduino устанавливается соединение между Programmer-Arduino и целью Arduino. Конфигурация контактов должна быть выполнена точно так, как указано в скетче Arduino ISP.
Плата Arduino ISP взаимодействует с использованием протокола последовательного периферийного интерфейса (SPI) для программирования микроконтроллеров AVR. Связь SPI использует 4 логических сигнала: MOSI, MISO, SCLK и SS. Помимо I 2 C, SPI является одним из наиболее часто используемых режимов связи для микроконтроллеров. SPI следует архитектуре ведущий-ведомый, что означает, что ведущее устройство может взаимодействовать с несколькими ведомыми устройствами, используя одни и те же выводы данных, а целевое ведомое устройство выбирается с помощью линии выбора ведомого. Если есть карты памяти, выбор ведомого используется для выбора конкретного чипа среди нескольких чипов. Однако, когда вы используете Arduino в качестве инструмента программирования, сигнал выбора ведомого используется только для сброса микроконтроллера. Сброс микроконтроллера переводит его в состояние приема команд от программатора Arduino. [4]
На Arduino Programmer контакты 10, 11, 12 и 13 используются как контакты данных. Конфигурации следующие:
Контакт 10 = СБРОС
Контакт 11 = MOSI
Контакт 12 = MISO
Контакт 13 = SCK
Контакты 5v и заземления могут быть подключены от программатора Arduino. Очень важно соединить опорную землю обоих Arduino, чтобы избежать сбоев, а также обеспечить безопасность.
Внутрисхемное последовательное программирование (ICSP) — это возможность программирования микроконтроллера без отключения от схемы. Заголовок ICSP физически доступен на плате Arduino в виде 6 контактов. Соедините контакты 11, 12 и 13 целевого Arduino с контактами 11, 12 и 13 вашего программатора Arduino. Обратите внимание, что контакт 10 вашего программатора Arduino должен подключаться к контакту сброса вашего целевого Arduino. В качестве альтернативы контакты заголовка ICSP могут использоваться для связи SPI. (См. рис. 4).
После подключения всего вышеперечисленного вам необходимо определить, что вы используете режим программирования с вашего хост-компьютера. Перейдите в меню «Инструменты» и выберите «Arduino as ISP» в параметрах «Программист». (См. рис. 5).
Рисунок 5: Настройка Arduino-программатора в качестве интернет-провайдера (Источник: снимок экрана автора) Затем загрузите загрузчик в память целевого Arduino, а затем определите свои «предохранители». В мире Arduino фьюзы — это набор инструкций для определения нескольких функций в микроконтроллере. Например, частота чипа и источник тактирования определяются в фьюзах. Микроконтроллеры чувствительны к рабочему напряжению, и если уровень напряжения падает ниже определенного уровня, микроконтроллер может выйти из строя. Минимальное рабочее напряжение также определяется внутри предохранителей. [в]
Вышеуказанные шаги необходимы, если программатор Arduino должен быть настроен так, чтобы он был совместим с Arduino IDE для прямой загрузки эскиза. Опция «записать загрузчик» также находится в меню инструментов и записывает загрузчик на целевую плату Arduino (см. рис. 6).
Рисунок 6: Опция «Записать загрузчик» (Источник: снимок экрана автора)Есть различные преимущества, если микроконтроллер или плата Arduino могут взаимодействовать с программой Arduino IDE, например, возможность проверять результаты во время выполнения с помощью последовательного монитора Arduino IDE. (Серийный монитор открывается в отдельном окне, действуя как независимый терминал, который получает и отправляет последовательные данные.)
Если загрузчик не загружен в микроконтроллер, он не сможет использовать функции Arduino и не сможет взаимодействовать с Arduino IDE. vi Загрузчик потребляет часть памяти. В некоторых случаях использование Arduino IDE не требуется, поэтому загрузчик не нужно программировать. Если загрузчик не запрограммирован, можно освободить больше памяти для скетча основной программы. Например, в Arduino UNO общий объем памяти составляет 32 КБ, а для загрузчика выделено 0,5 КБ памяти. vii Если загрузчик не установлен, общая память, доступная для эскиза основной программы, больше.
Платы Arduino хороши для обучения и экспериментирования с новыми идеями. Поскольку Arduino является открытым исходным кодом, включая схемы аппаратного проектирования и файлы Gerber, любой может скопировать Arduino, изменить его и использовать в коммерческом контексте, если захочет. Arduinos — это не совсем дойная корова, а скорее труд любви, переопределяющий способ передачи встроенного оборудования.
i https://ieeexplore.ieee.org/document/8005274
ii https://www.arduino.cc/en/Guide/ArduinoISP
iii https://www.arduino.cc/en/Tutorial /ArduinoISP
iv https://www. arduino.cc/en/Reference/SPI
v https://www.arduino.cc/en/Hacking/MiniBootloader
vi https://www.arduino.cc /en/Tutorial/ArduinoISP
vii https://en.wikipedia.org/wiki/Arduino_Uno#Technical_specifications
ATATMEL-ICE-BASIC — внутрисхемный программатор для SAM и AVR MCU
Отзывов пока нет Написать рецензию
Microchip Technology
ATATMEL-ICE-BASIC — внутрисхемный программатор для микроконтроллеров SAM и AVR
Рейтинг Обязательно Выберите Рейтинг1 звезда (худший)2 звезды3 звезды (средний)4 звезды5 звезд (лучший)
Имя
Электронная почта Обязательно
Тема отзыва Обязательно
комментариев Обязательно
₹ 14 213,10 вкл. ГОСТ
₹ 12 045,00 экз. GST
- Запросите предложение для больших количеств
в наличии Распродано | Обычно доставляется в течение 2-5 дней
Описание
Найдите комплексное решение для отладки и программирования микроконтроллеров SAM и AVR на базе ARM Cortex-M с новейшим программатором и отладчиком Atmel-ICE. Устройство представляет собой мощный инструмент разработки с возможностью отладки на кристалле.
Поддержка Atmel-ICE:
Программирование всех 8-битных микроконтроллеров tinyAVR с поддержкой интерфейса TPI
В частности, Atmel ICE-BASIC поставляется в инкапсулированном основном блоке, кабеле USB и плоском кабеле (10-контактный разъем 50 mil и 6-контактный разъем 100 mil). , интерфейсы SPI, debugWIRE и UPDI
Соответствующие ресурсы:
Руководство пользователя Atmel-ICE
Дополнительная информация
Технология микрочипов
Информация о гарантии
Все товары, поставляемые Evelta, являются подлинными и оригинальными. Мы предлагаем 14-дневную гарантию замены в случае производственного брака. Для получения более подробной информации, пожалуйста, посетите нашу страницу отмены и возврата.
Сопутствующие товары
Быстрый просмотр
SparkFun
Эвелта Артикул: 057-PGM-11801
ATTiny45 ATTiny85 AVR USB программатор
₹ 1 595,00 экз. GST
Обычно доставляется в течение 2-5 дней
9 В наличии
Количество Добавить в свой списокБыстрый просмотр
Texas Instruments
Evelta Артикул: 035-CAPTIVATE-PGMR
Программатор микроконтроллеров MSP430 MSP CapTIvate
₹ 2 495,00 экз. GST
Отправлено в течение 24 часов со склада в Мумбаи
2 В наличии
Количество Добавить в свой списокКлиенты также просмотрели
Внутрисхемное программирование (ICP)/Системное программирование/Последовательное программирование
Что такое программирование провайдера?
Внутрисистемное программирование (ISP) , также известное как внутрисхемное программирование (ICP), последовательное программирование или внутрисхемное последовательное программирование (ICSP), позволяет программировать и перепрограммировать микроконтроллеры, последовательные EEPROM и флэш-память, уже припаянные к целевой печатной плате. .
Как Xeltek может помочь с внутрисистемным программированием?
Средства внутрисистемного программирования Xeltek обеспечивают удобный метод настройки микроконтроллеров и различных последовательных устройств. Пользователи могут устранить необходимость физического удаления микросхем из системы и просто программировать микроконтроллеры, флэш-память, PLD и FPGA через кабель ISP. Устройства программируются в целевой системе или целевом оборудовании, что делает полевые приложения более удобными, чем когда-либо.
Как правило, перемычка/DIP-переключатель обеспечивает внутрисистемное программирование, а набор последовательных разъемов для программирования (например, разъем IDC) соединяет целевую плату (платы) с программатором (программами) ISP.
Какие варианты внутрисхемного программирования доступны?
Выделенные функции:
- Одновременное программирование до 16 последовательных устройств.
- Одновременно можно запрограммировать до 4 параллельных чипов ISP (eMMC, NAND и NOR)
- Для расширения проекта можно настроить несколько программаторов
- Режимы работы: USB онлайн, сеть (с использованием порта LAN), онлайн и офлайн (с использованием порта SD)
- Регулируемая скорость программирования и надежность промышленного класса
- команды DLL/API/Command-Line доступны для интеграции с ATE и приспособлением для тестирования.
СуперПро IS01 | СуперПро IS03 |
Объем от низкого до среднего | Среднесерийное и крупносерийное производство |
SuperPro IS01 — это профессиональный многофункциональный последовательный программатор, который отличается компактными размерами, высокой скоростью программирования, отличной стабильностью и высокой производительностью в конкурентоспособном корпусе. | SuperPro IS03 — это продвинутый внутрисистемный программатор, который программирует до 16 последовательных устройств одновременно. До 4 параллельных устройств, таких как eMMC, NAND или NOR FLASH , могут быть запрограммированы внутри схемы одновременно. Устройства поддерживаются по запросу клиента. |
Выделенные функции:
| |
|
СуперПро XPS01 |
Программирование крупносерийного производства печатных плат |
SuperPro XPS01 — это продвинутый внутрисистемный программатор, который программирует до 16 последовательных устройств одновременно. До 4 параллельных устройств, таких как eMMC, NAND или NOR FLASH , могут быть запрограммированы внутри схемы одновременно. Устройства поддерживаются по запросу клиента. |
Выделенные функции:
|
В чем преимущество отдельной рабочей станции для программирования ISP по сравнению с подключением программатора ISP к устройству ICT?
Все больше пользователей планируют подключать программистов к устройствам ИКТ для одновременного выполнения функционального тестирования и программирования ИС. Время – деньги, поэтому когда операции ИКТ приостанавливаются для выполнения программирования микросхем, возникают затраты. К счастью, у Xeltek есть решение для повышения пропускной способности с помощью SuperPro XPS01. SuperPro XPS01 — это простой программатор панели, который поставляется с пятью встроенными программаторами SuperPro IS03. Поскольку SuperPro IS03 находится прямо под креплением для гвоздя, длина линии сведена к минимуму для более надежной работы по сравнению с креплением к креплению ICT.
Какие последовательные устройства и последовательные интерфейсы поддерживаются?
Автономные внутрисхемные программаторы, такие как SuperPro IS01, в настоящее время поддерживают широкий спектр микросхем с последовательным интерфейсом (более 9000 устройств), включая микроконтроллеры Microchip PIC, Atmel AVR (ATtiny, Atmega), микроконтроллеры серий STM8 и STM32 на базе ST ARM, TI MSP430 и серийные микроконтроллеры. EEPROM/flash-устройства разных производителей. Полный список поддерживаемых устройств см. список устройств.
Xeltek тесно сотрудничает со всеми основными производителями серийных ИС, такими как Altera, Atmel, Eon/Cfeon, Maxim, Freescale, Fujitsu, Infineon, Lattice, Renesas, Microchip, NXP, Seiko, ST, Winbond и Xilinx для поддержки устройств, использующих различные интерфейсные протоколы, такие как I2C, SPI, UART, BDM, MON, MW, JTAG, CAN, ICC и RS232.
Пользователь может запросить обновление устройства, если чип в настоящее время не поддерживается. Пользовательские алгоритмы также могут быть разработаны в соответствии с требованиями целевой платы.
У вас есть вопросы?
Спросите нас сейчас
Использование микроконтроллеров AVR: минималистичные целевые платы
Это краткое практическое руководство по созданию сверхпростых отладочных плат для программирования микроконтроллеров AVR. Самые последние винтажные AVR можно запрограммировать через подключение к ISP (внутрисистемный программатор); все, что действительно нужно, — это место для чипа и способ подключения к программатору.
Вот тут-то и появляются эти минималистичные «целевые платы» AVR. Эти маленькие платы стоят всего около 2 долларов, а их изготовление занимает всего несколько минут.
Оказывается, я строю много таких, потому что спрашиваю: «Как сделать схему для программирования AVR?» на самом деле то же самое, что спрашивать, как вы можете запрограммировать AVR, который находится в цепи. И мы могли бы также начать с простой схемы.
Существует два основных типа программаторов микроконтроллеров, которые вы можете себе представить: один с гнездом для вашего чипа, а другой подключается к вашей схеме, в которой установлен ваш чип. Нас интересует последний, группа так называемых внутрисистемных программистов, иногда называемых внутрисхемными программистами. Конечно, вы также можете получить программаторы с выделенными сокетами, но они, как правило, дороже и не являются принципиально «лучше». С помощью внутрисистемного программатора вы можете не только программировать микроконтроллеры в более крупных схемах, но и легко 9Программатор 0140 make нацелен на платы с сокетами, предоставляя вам преимущества программатора с сокетом.
Стандартным внутрисистемным USB-программатором AVR де-факто является Atmel AVRISP mkII, номер по каталогу ATAVRISP2-ND от Digi-Key, за 36 долларов. На самом деле я немного писал об использовании этого программатора в прошлом году. Это хороший программатор с очень небольшими излишествами, и он работает довольно хорошо. Он имеет жесткий пластиковый корпус с разъемом USB «B» на одном конце и кабелем, заканчивающимся 6-контактным разъемом ISP на другом конце. (Если вы снимите корпус с AVRISP mkII, на печатной плате также будет место для добавления 10-контактного кабеля ISP, но это неопубликованная функция.)
Одним из недостатков этого программатора является то, что для его работы требуется подача внешнего питания на целевую плату. Это довольно глупо, потому что программатор получает питание, необходимое для работы, от USB, но не передает его для питания микроконтроллера во время программирования. В идеале программатор должен иметь переключатель, чтобы вы могли либо использовать программатор для питания целевой платы, либо нет.
Новый USBtinyISP AVR Programmer от Adafruit Industries (обзор здесь), вероятно, лучший выбор для большинства приложений. Он поставляется в виде простого комплекта для 18,00 долларов США 22,00 долларов США и включает в себя как 6-контактный, так и 10-контактный интерфейсы. Отличительной чертой по сравнению с AVRISP mkII является то, что он позволяет вам использовать питание USB для прямого питания вашей целевой платы. Ну, это и то, что он поставляется с и 6-контактным и 10-контактным кабельным соединением ISP.
Еще один удобный вариант (для некоторых из вас): вы можете использовать Arduino в качестве программатора AVR-ISP.
Для людей, которым не нужен USB, нет недостатка в последовательных и параллельных программаторах ISP. Большинство из них используют 10-контактный интерфейс. Adafruit имеет по одному последовательному и параллельному. Вы также можете получить их из других источников (например, SparkFun), но обычно по более высокой цене. И, если у вас есть параллельный порт, не забывайте, что вы можете почти взбить из воздуха
.
Итак, вернемся к целевым доскам. Раньше мы в основном использовали «настоящие» макетные платы, которые включают в себя блоки питания, средства связи и кварцевый генератор.
Типичные разновидности доступны от SparkFun Electronics, которые в основном производятся Olimex. Также есть отличная плата от Futurlec, а также десятки других из других источников. (В частности, эти превосходные эталонные проекты с открытым исходным кодом, разработанные Паскалем Стангом.)
Часто это перебор. В показанной здесь плате разработки я использую только разъем питания, разъем и разъем ISP оригинальной платы — ни одна из других функций не оказалась удобной для того, что я в итоге построил на этой плате.
Итак, когда имеет смысл паять собственные мишенные платы? Во-первых, проще использовать AVR со сквозным отверстием (DIP).
Одна из действительно приятных особенностей микроконтроллеров серии AVR заключается в том, что многие из них доступны в удобных для любителей корпусах со сквозными отверстиями (DIP). (Однако, если вам нужно использовать один из вариантов, который доступен только в корпусе для поверхностного монтажа, действительно имеет смысл приобрести чью-то макетную плату или создать собственную.)
Начнем.
Для начала сделаем минимальную целевую плату для программирования ATtiny2313, популярного 20-контактного микроконтроллера AVR.
Вот компоненты: макетная плата (артикул BG Micro ACS1053, 0,99 долл. США), DIP-разъем 2×3 (часть артикула BG Micro ACS1019, 0,33 долл. США) и 20-контактный разъем DIP (деталь BG Micro номер soc1029, $0,55). У нас также есть несколько дополнительных компонентов: гнездо с нулевым усилием вставки (ZIF) и батарейный отсек с тремя батареями AAA. Сокеты ZIF, как правило, довольно дорогие — мы нашли их на eBay всего по несколько долларов за штуку, поэтому мы фактически создадим эту плату с одним.
Первым шагом является размещение сокета и разъема ISP на макетной плате, а затем (важно!) пометить один конец разъема ISP как конец, содержащий контакт 1. Соединительный кабель ISP к заголовку, вам нужно будет убедиться, что у вас есть правильная ориентация.
Следующим шагом является определение того, как соединить контакты разъема ISP с контактами сокета. Atmel Application Note 42 описывает разводку 6-контактных и 10-контактных интерфейсных разъемов ISP. Сверху они выглядят так:
Контакты на 6-контактном интерфейсе — питание (+Vcc) и земля, а также четыре «сигнала» разъема ISP, которые называются RESET, SCK, MISO и MOSI. Вы заметите, что 10-контактный интерфейс просто набит жиром — он не предоставляет дополнительных функций.
(Примечание. Тип линии питания (Vcc) зависит от контекста, и вам нужно будет подумать о том, каким образом питание проходит через этот разъем. Если вы используете AVRISP mkII или большинство других программаторов, ожидается, что Vcc быть предоставленным от целевая плата к программатору. Это используется для указания программисту, что цель «живая» и готова к программированию. В этом случае вы должны предоставить отдельный источник питания для целевой платы. Если вы используете USBtinyISP, у вас есть опция для использования контакта Vcc на интерфейсе ISP для подачи питания на целевую плату. Эту опцию следует отключить, если ваша целевая плата подает питание на вывод Vcc интерфейса ISP. )
Далее нам нужно идентифицировать контакты AVR, которые подключаются к контактам разъема ISP.
Вы можете начать с просмотра таблицы данных для вашего конкретного варианта AVR (список здесь) и найти шесть контактов, которые соответствуют названиям контактов на разъеме ISP. Здесь я выделил соответствующие выводы трех устройств AVR, которые мне понравились и представлены в 8-контактном (ATtiny45), 20-контактном (ATtiny2313) и 28-контактном (ATmega168) DIP-корпусах:
Многие но не все устройств AVR в данном корпусе (например, DIP-8) имеют одну и ту же распиновку разъема ISP, поэтому эти целевые платы иногда (с осторожностью) можно использовать даже для разных микроконтроллеров AVR. Например,
ATmega8, ATmega48, ATmega88 и ATmega168 имеют одинаковые 28-контактные выводы. Обратите внимание, что на рисунке выше показано более шести подключений к ATmega168. Это связано с тем, что к аналоговой схеме чипа идут дополнительные линии питания и заземления, которые следует подключать, даже когда аналоговая часть не используется.
Теперь, когда мы знаем, где находятся различные контакты ISP на разъеме и чипе, мы можем подключиться. Нам нужно шесть проводов (очевидно) — соедините MISO с MISO, MOSI с MOSI и т. д. и припаяйте линии. Не забудьте проиндексировать заголовок с конца, который вы отметили ранее, с конца с контактом 1.
На самом деле это все, что нужно сделать, остальное — просто глазурь.
Вот как выглядит обратная сторона; не на что смотреть!
При желании можно добавить блок питания для питания платы, что может быть необязательно, если вы используете программатор, которому требуется питание от платы. Поскольку сам по себе чип потребляет очень мало энергии, хорошей идеей будет батарейный блок, который может работать очень долго.
Чтобы использовать целевую плату, вставьте AVR в разъем и подключите программатор к разъему ISP. Обратите внимание на ориентацию. Конец с контактом 1 часто отмечается полосой на кабеле и/или маленьким треугольником на разъеме.