Программатор atmega. Программатор AVR USB: обзор популярных схем и особенности использования

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

Содержание

Основные типы программаторов AVR

Программаторы для микроконтроллеров AVR можно разделить на несколько основных типов:

  • Простейшие программаторы на основе LPT-порта (Fun-Card, STK200+)
  • Программаторы с интерфейсом COM-порта (AVR910)
  • USB-программаторы (USBASP, USBtinyISP)
  • Универсальные программаторы с поддержкой нескольких интерфейсов

Рассмотрим особенности и схемы наиболее популярных вариантов.

Программатор Fun-Card

Fun-Card — это предельно простая схема программатора для AVR микроконтроллеров, подключаемая к LPT-порту компьютера. Основные особенности:

  • Минимум компонентов — несколько резисторов
  • Работает под управлением программы IC-Prog
  • Возможность питания программируемой микросхемы от LPT-порта
  • Подача тактового сигнала также от LPT-порта

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


Программатор STK200+/300

STK200+/300 — более функциональный вариант программатора для LPT-порта. Ключевые особенности:

  • Буферизация сигналов на микросхеме 74HC244
  • Возможность программной генерации тактового сигнала
  • Поддержка различными программами (AVR ISP, CodeVision AVR и др.)
  • Наличие светодиодов индикации питания и программирования

STK200+ обеспечивает более надежное программирование и совместим с широким спектром AVR микроконтроллеров. Требует изготовления печатной платы.

USB-программатор AVR910

AVR910 — популярный протокол обмена между компьютером и программатором. Существует множество реализаций AVR910-совместимых программаторов. Типичные особенности:

  • Использование микроконтроллера AT90S2313/ATtiny2313
  • Возможность работы через COM и USB интерфейсы
  • Гальваническая развязка при работе через USB
  • Питание программируемого устройства от USB (опционально)

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


Программатор USBASP

USBASP — один из самых популярных USB-программаторов для AVR. Основные преимущества:

  • Низкая стоимость и доступность компонентов
  • Высокая скорость программирования
  • Поддержка широкого спектра AVR микроконтроллеров
  • Совместимость с различным программным обеспечением
  • Возможность обновления прошивки программатора

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

Особенности выбора и использования программаторов AVR

При выборе программатора AVR следует учитывать следующие факторы:

  • Поддерживаемые модели микроконтроллеров
  • Совместимость с используемым программным обеспечением
  • Наличие необходимых интерфейсов на компьютере (LPT, COM, USB)
  • Требуемая скорость программирования
  • Необходимость гальванической развязки
  • Возможность питания программируемого устройства

Для начинающих разработчиков оптимальным выбором будет USB-программатор типа USBASP или AVR910-совместимый. Они обеспечивают хороший баланс функциональности, удобства использования и стоимости.


Сборка и настройка программатора AVR

При самостоятельной сборке программатора AVR необходимо обратить внимание на следующие моменты:

  • Точное соблюдение схемы и номиналов компонентов
  • Качественная пайка, особенно USB-разъема
  • Правильная прошивка микроконтроллера программатора
  • Установка необходимых драйверов на компьютере
  • Настройка программного обеспечения для работы с программатором

Перед использованием рекомендуется проверить работоспособность программатора на простом микроконтроллере, например ATtiny13 или ATmega8.

Программное обеспечение для работы с AVR программаторами

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

  • AVR Studio / Atmel Studio — официальная среда разработки от Microchip
  • AVRDUDE — консольная утилита для программирования
  • XLoader — простая программа для загрузки HEX-файлов
  • AVROSP — открытый программатор от Atmel
  • PonyProg — универсальная программа для разных микроконтроллеров

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


Заключение

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


USB программатор для микроконтроллеров ATMEL

Микроконтроллеры фирмы ATMEL успели завоевать широкую популярность. Их программирование перед применением можно выполнить непосредственно в плате готового устройства через несложный ISP кабель, подключаемый к LPT порту персонального компьютера или кабель чуть посложнее, подключаемый к COM порту. Но в настоящее время всё больше материнских плат выпускается без того и другого, а в ноутбуках LPT исчез уже давно, сменившись интерфейсом USB. Впрочем, под этот интерфейс программаторы тоже существуют и доступны.

Для масштаба рядом лежит обычный 5 мм светодиод.
Этот программатор USBASP поддерживает следующие микроконтроллеры:

Список поддерживаемых МК

ATtiny11, ATtiny12, ATtiny13, ATtiny15, ATtiny22, ATtiny2313, ATtiny24, ATtiny25, ATtiny26, ATtiny261, ATtiny28, ATtiny44, ATtiny45, ATtiny461, ATtiny84, ATtiny85, ATtiny861
AT90S1200, AT90S2313, AT90S2323, AT90S2343, AT90S4414, T90S4433, AT90S4434, AT90S8515, AT90S8535
ATmega8, ATmega48, ATmega88, ATmega16, ATmega161, ATmega162, ATmega163, ATmega164, ATmega165, ATmega168,ATmega169, ATmega32, ATmega323,ATmega324, ATmega325,
ATmega3250, ATmega329, ATmega64, ATmega640, ATmega644, ATmega645, ATmega6450, ATmega649, ATmega6490, ATmega128, ATmega1280, ATmega1281, ATmega2560, ATmega2561, ATmega103, ATmega406, ATmega8515, ATmega8535

AT90CAN32, AT90CAN64, AT90CAN128
AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B
AT90USB1286, AT90USB1287, AT90USB162, AT90USB646, AT90USB647
AT89S51, AT89S52
AT86RF401



Вместе с программатором поставляется 10-жильный летночный кабель с разъёмами.

Питание программатора берется с USB порта компьютера.

На плате программатора имеется место для распайки LDO стабилизатора напряжения на 3,3В, но сам он не распаян.
Программатор поддерживается программой AVRDUDE. Сама программа консольная, но под неё есть графические оболочки. Утилиту avrdude можно найти в папке /hardware/tools/ в дистрибутиве Arduino IDE или скачать в интернете.
Перед началом работы с программатором потребуется скачать драйвер со страницы разработчика.
Также программатор поддерживается средой разработки Arduino.

Для программатора существует прошивка под названием AVR-Doper, превращающая его в STK500-совместимый и воспринимаемый фирменной средой разработки ATMEL AVR Studio, но в силу высокой вариативности китайского железа пользоваться ею можно только на свой страх и риск.

Программатор USBASP AVR 3.3V/5V — RadioMart.kz

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

Поддержка микроконтроллеров:

ATtiny11, ATtiny12, ATtiny13, ATtiny15, ATtiny22, ATtiny2313, ATtiny24, ATtiny25, ATtiny26, ATtiny261, ATtiny28, ATtiny44, ATtiny45, ATtiny461, ATtiny84, ATtiny85, ATtiny861
AT90S1200, AT90S2313, AT90S2323, AT90S2343, AT90S4414, T90S4433, AT90S4434, AT90S8515, AT90S8535
ATmega8, ATmega48, ATmega88, ATmega16, ATmega161, ATmega162, ATmega163, ATmega164, ATmega165, ATmega168,ATmega169, ATmega32, ATmega323,ATmega324, ATmega325, ATmega3250, ATmega329, ATmega64, ATmega640, ATmega644, ATmega645, ATmega6450, ATmega649, ATmega6490, ATmega128, ATmega1280, ATmega1281, ATmega2560, ATmega2561, ATmega103, ATmega406, ATmega8515, ATmega8535
AT90CAN32, AT90CAN64, AT90CAN128
AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B
AT90USB1286, AT90USB1287, AT90USB162, AT90USB646, AT90USB647
AT89S51, AT89S52
AT86RF401.

Технические характеристики программатора AVR:

Микроконтроллер ATMega8
Индикация питания и программирования
Поддержка 5В и 3.3В питания

Распиновка:

Конструкция:

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

Программное обеспечение:

Для работы с программатором понадобится программный интерфейс для ПК. Рекомендуется использовать GUI для AVRDUDE под названием SinaProg — это оконная оболочка предназначенная для работы с консольным программатором. Все настройки в SinaProg, в том числе прошивку микроконтроллера и конфигурацию фьюз-битов можно произвести несколькими щелчками мыши в графической оболочке.


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

Простейший программатор для ATmega8 | Полезное своими руками

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

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

А чтобы залить нужную прошивку в АТМЕГу, никак не обойтись без программатора. Далее мы рассмотрим две самые простые и проверенные временем схемы программаторов.

Схема первая

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

СОМ-разъем на схеме — это «мама».

На всякий случай привожу разводку печатной платы для атмеги8 (скачать), хотя такую примитивную схему проще нарисовать от руки. Плату перед печатью нужно отзеркалить.

Файл печатной платы открывать с помощью популярной программы Sprint Layout (если она у вас еще не установлена, то качайте 5-ую версию или лучше сразу 6-ую).

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

Вместо КТ315 я воткнул SMD-транзистор BFR93A, которые у меня остались после сборки микромощных радиомикрофонов.

А вот весь программатор в сборе:

Питание (+5В) я решил брать с USB-порта.

Если у вас новый микроконтроллер (и до этого никто не пытался его прошивать), то кварц с сопутствующими конденсаторами можно не ставить. Работа без кварцевого резонатора возможна благодаря тому, что камень с завода идет с битом на встроенный генератор и схема, соответственно, тактуется от него.

Если же ваша микросхема б/у-шная, то без внешнего кварца она может и не запуститься. Тогда лучше ставьте кварц на 4 МГц, а конденсаторы лучше на 33 пФ.

Как видите, я кварц с конденсаторами не ставил, но на всякий случай предусмотрел под них места на плате.

Заливать прошивку лучше всего с помощью программы PonyProg (скачать).

Прошивка с помощью PonyProg

Заходим в меню Setup -> Calibration -> Yes. Должно появиться окошко «Calibration OK».

Далее Setup -> Interface Setup. Выбираем «SI Prog API» и нужный порт, внизу нажимаем «Probe», должно появиться окно «Test OK». Далее выбираем микроконтроллер «Device -> AVR micro ATmega8».

Теперь втыкаем микроконтроллер в панельку программатора, и подаем питание 5 вольт (можно, например, от отдельного источника питания или порта ЮСБ). Затем жмем Command -> Read All.

После чтения появляется окно «Read successful». Если все ок, то выбираем файл с нужной прошивкой для заливки: File -> Open Device File. Жмем «Открыть».

Теперь жмем Command -> Security and Configuration Bits и выставляем фьюзы, какие нужно.

Тщательно все проверяем и жмем «OK». Далее нажимаем Command -> Write All -> Yes. Идет прошивка и проверка. По окончании проверки появляется окно «Write Successful».

Вот и все, МК прошит и готов к использованию!

Имейте в виду, что при прошивке с помощью других программ (не PonyProg) биты могут быть инверсными! Тогда их надо выставлять с точностью до наоборот. Определить это можно, считав фьюзы и посмотрев на галку «SPIEN».

Схема вторая

Еще одна версия программатора, с помощью которого можно залить прошивку в микроконтроллер АТМЕГа (так называемый программатор Геннадия Громова). Схема состоит всего из 10 детатей:Диоды можно взять любые импульсные (например, наши КД510, КД522). Разъем — «мама». Питание на МК (+5В) нужно подавать отдельно, например, от того же компьютера с выхода USB.

Все это можно собрать навесным монтажом прямо на разъеме, но если вы крутой паяльник и знаете, что такое smd-монтаж, то можете сделать красиво:

Программировать только программой Uniprof. Тут хорошее описание программы: http://www.getchip.net/posts/025-uniprof-universalnyjj-programmator-dlya-avr/

Алгоритм прошивки с помощью программатора Громова

Программатор с установленной микросхемой подключаем к СОМ-порту компьютера, затем запускаем Uniprof, затем подаем питание на микроконтроллер. И первым делом проверяем, читаются ли фьюз-биты.

Если все ок, выбираем файл с нужной прошивкой и жмем запись.

Будьте предельно внимательны и осторожны, потому что если глюканет при записи фьюзов, то МК либо на выброс, либо паять схему доктора (а она сложная). Если поменяете бит SPIEN на противоположный — результат будет тот же (к доктору).

ПРОГРАММАТОР AVR USB

   Программатор выполнен на основе драйвера от Objective Development и полностью совместим по командам с оригинальным программатором AVR910 от ATMEL. Описание устройства. Предохранитель защищает линий питания порта USB от случайного замыкания по цепям питания программатора. Диоды VD1, VD2 впрямительные кремниевые, они предназначены для понижения питания микроконтроллера до 3,6 В. Согласно документации, контроллер может работать при таком напряжении питания до частоты чуть более 14 МГц. Светодиоды VL1 («RD”), VL2 («WR”) сигнализируют о текущих действиях программатора и обозначают режимы чтения и записи. Светодиод VL3 («PWR”) показывает подачу питания на программатор.

   Джампер J1 – (MODify) служит для начального программирования управляющего МК программатора. При его замыкании, к разъему ISP подключается внешний программатор и производится загрузка в МК управляющей программы. После программирования управляющего МК программатора этот джампер необходимо разомкнуть и замкнуть джампер J2 — NORMal. 

   Джампер J3 LOW SCK понижает тактовую частоту порта SPI МК программатора до ~20 кГц. При разомкнутом джампере частота SPI нормальная, при замкнутом — пониженная. Переключать джампер можно на ходу, так как управляющая программа МК программатора проверяет состояние линии PB0 при каждом обращении к порту SPI. Не рекомендуется переключать джампер при запущенном процессе записи/чтения программируемого МК, т.к., скорее всего, это приведет к искажению записываемых/читаемых данных. Джампер J3 введен для возможности программирования МК AVR, тактируемых от внутреннего генератора 128 кГц. 

   Резисторы R10 — R14 предназначены для согласования уровней сигналов микроконтроллера программатора и внешних цепей (программируемый МК или другой программатор). Тактовая частота порта SPI МК программатора при разомкнутом джампере J3 равна 187,5 кГц. Это позволяет программировать контроллеры с тактовой частотой примерно от 570 кГц для ATtiny/ATmega, 750 кГц для 90S и 7,5 МГц для 89S. Контроллеры программируются от 10 до 30 секунд (при использовании утилиты AVRProg v.1.4 из пакета AVR Studio) вместе с верификацией в зависимости от объема FLASH памяти и тактовой частоты. 

   На вывод LED разъема ISP выведен меандр с частотой 1 МГц для «оживления» МК, у которых были ошибочно запрограммированы фьюз-биты, отвечающие за тактирование. Сигнал генерируется постоянно и не зависит от режима работы программатора. Программатор тестировался с программами AVRProg v.1.4 (входит в пакет AVRStudio), ChipBlasterAVR v.1.07 Evaluation, CodeVisionAVR, AVROSP (ATMEL AVR Open Source Programmer). Для нормального функционирования контроллера в схеме необходимо, чтобы были запрограммированы (установлены в «0») биты SPIEN, CKOPT, SUT0 и BODEN. Обычно микроконтроллеры , идущие с завода, т.е. новые, имеют уже запрограммированный бит SPIEN. Остальные биты должны быть незапрограммированные (установлены в «1»). 

   Инструкция по установке и работе. Прошить контроллер. Подключить свежеиспеченный программатор к компьютеру через USB. Операционная система найдет новое устройство – AVR910 USB Programmer, при предложении автоматически найти драйвер, отказаться, и указать путь к inf-файлу, в зависимости от установленной на вашем компьютере операционной системы. 

   На форуме находятся все файлы, а также печатная плата для нашего программатора avr. Здесь покажу технологию сборки USB программатора AVR и упаковки в корпус. Для начала скачиваем архив и делаем печатную плату.

   Потом впаиваем на неё все детали. Не смог найти маленький кварц, поэтому впаял большой, но на длинных ножках, чтобы потом загнуть, чтоб не мешал при установки платы в корпус. Далее подбираем подходящий корпус, у меня был готовый.

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

   Если нет специальной измерительной аппаратуры, можно произвести проверку при помощи светодиода. Светодиод подключается анодом к контакту LED, катодом к любому контакту GND ISP-разъема. При подаче питания светодиод должен светится в «полнакала». При замыкании пинцетом ножек кварцевого генератора светодиод должен либо засветится в «полный накал», либо свечение должно отсутствовать. 

   Без ощибок собранный программатор с правильно запрограммированным микроконтроллером в настройке не нуждается. Но если у программируемого МК вход RESET подтянут к напряжению питания резистором, то номинал резистора не должен быть ниже 10 кОм – это связанно с пониженным напряжением питания управляющего контроллера в схеме программатора и введением ограничительных резисторов на шине ISP-разъема.

   Форум по usb программатору

   Форум по обсуждению материала ПРОГРАММАТОР AVR USB

Ардуино в качестве программаторов AVR контроллеров

С последней версией Arduino IDE перестал работать USBASP, с помощь которого прошивал массу контролеров.

У USBASP пора обновить прошивку, а может быть и схему, а я буду использовать в качестве программатора обычный Arduino.  Тем более я уже использовал эту схему для программирования ATTiny13.

Для Arduino на ATmega168/328 схема будет выглядеть так — между собой соединяем D11, D12, D13, а D10 контроллера программатора соединяем с RESET программируемого контроллера. Устанавливаем кварц для прошивки контроллеров, работающих от внешнего резонатора.

Для удобства работы собираю программатор на макетке. Для микросхем в корпусе DIP28 использую панель DIP с нулевым усилием.

Также на плате устанавливаю разъем под Arduino Pro Mini, на которых делаю все последние Arduino-проекты

Получаю такую платку

Устанавливаю на плату микроконтроллеры

Можно приступать к прошивке/

 

Для этого в Ардуину нужно записать скетч ISP-программатора

Затем выбираем тип программатора

И все. Программатор собран и настроен.

Немного о применении

  1. Загрузка скетча с 0-го адреса без загрузчика. Экономит память микроконтроллера и время загрузки. Особенно интересно в микросхемах с малой памятью — Atmega8 и различных Attiny.
  2. Установка загрузчика на «голую» Atmega328, чтобы в дальнейшем заливать в нее скетчи через RX/TX, как в обычную Ардуину.
  3. Замена загрузчика, например, на OPTIBOOT, нормально поддерживающий режимы сна и сторожевой таймер.
  4. Установка фьз-битов. Полезно при создании «батареечных проектов», когда отключается BOD — контроль входного напряжения и микроконтроллеру устанавливается режим работы с пониженной частотой, опять же для уменьшения напряжения питания до 2.8-3.3В и энергопотребления.
  5. Восстановление «мертвых» микроконтроллеров после неудачных экспериментов

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

со своего сайта.

РадиоКот :: Программаторы для микроконтроллеров Atmel

РадиоКот >Лаборатория >Цифровые устройства >

Программаторы для микроконтроллеров Atmel

Эта статья — попытка обобщить некоторый разрозненный материал по программаторам для популярных сегодня микроконтроллеров фирмы Atmel. Материал не претендует на полноту, однако основан на личном опыте, в чем и состоит, на мой взгляд, его основная ценность.

Схема программатора Fun-Card

Программатор предназначен для работы под управлением программы ICProg, является функциональным аналогом «5 проводков» (до предела упрощенная схема STK200+/300, о которой ниже) и представляет собой несколько резисторов.
Программатор подключается к LPT-порту. Разъем устанавливается непосредственно на плату программатора, кроме того, на плате предусмотрена кроватка для программирования контроллера AT90S2313, а также выведены сигналы SCK, MOSI/MISO и Reset.
Программируемая микросхема может брать питание с порта LPT, в этом случае, на выводах 2, 3, 4 порта должны быть установлены единицы, а вывод 2 разъёма ISP должет быть подключен к выводу Vcc микросхемы. Некоторые порты могут не потянуть такой нагрузки, в этом случае придётся использовать внешний источник питания (5В).
Источником тактовых импульсов для микросхемы также может служить LPT порт. В этом случае вывод 3 разъёма ISP (LED) должен быть подключен к выводу XTAL 1 программируемой микросхемы.
Естественно, программа программатора на PC должна понимать эти режимы работы (для работы с этой схемой нужно воспользоваться программой IC-Prog, где при выборе типа программатора следует установить «Fun-Card Programmer»).
Печатная плата в формате SL5 – здесь, программа ICProg и драйвер под ХР – здесь.

Схема программатора STK200+/300

Большая часть нижеследующего описания и сама схема взята со странички https://ln.com.ua/~real/avreal/adapters.html, крайне рекомендую посетить ее.
Адаптер получил свое название от комплектующихся им отладочных плат фирмы Atmel для быстрого начала работы с микроконтроллерами At90s8515 и Atmega103. На самом деле приведенная схема соответствует одновременно обоим адаптерам, в ней присутствуют перемычки для определения наличия как адаптера STK200 (выводы 2-12 разъема X1), так и STK300 (выводы 3-11). При необходимости программной генерации тактового сигнала XTAL1 используется линия LED адаптера, исходно предназначенная для включения светодиода (на печатной плате ver.1 установлен только светодиод, сигнал XTAL1 на разъем программирования не заведен, а вот в ver.2 на третьем контакте есть сигнал XTAL1).
Буферизованные адаптеры запитываются от платы с программируемым процессором, т.е. питание подаётся на программируемую плату, а с неё на адаптеры поступает через шлейф.
Адаптер собран на основе шинного формирователя 74HC244 (аналог 1564АП5). Возможно также использование 555АП5 (74LS244) и 1533АП5 (74ALS244) либо, при соответствующем изменении схемы, любые другие неинвертирующие формирователи с тремя состояниями выходов. Применение буфера с третьим (высокоимпедансным) состоянием позволяет по окончании программирования снять сигнал разрешения выходов и, «отключив» адаптер от схемы, не влиять на её работу (за исключением паразитных емкостей между проводами шлейфа от адаптера до платы устройства).
Поскольку разводка рассчитана на установку LPT-разъема непосредственно на плату, для этих адаптеров рекомендуется изготовить удлиннитель порта LPT длиной 1.5-1.8м со всеми линиями (земель не жалеть 🙂 и вывести с программатора шлейф до платы с микроконтроллером длиной 20-25 см.
На плате предусмотрена установка светодиодов «питание» и «программирование» (на схеме не показаны).
Схема работает с программами AVR ISP, CodeVision AVR, WinAVR и другими.
В ряде случаев (например, для программирования нескольких контроллеров одной и той же прошивкой или в случае отсутствия на плате места под ISP-разъем) могут оказаться полезными «платы расширения» для различных контроллеров, содержащие кроватку для установки контроллера и минимально необходимую для работы обвязку. Я сделал такие платы под AT90S2313/ATTiny2313, ATTiny26, ATTiny13, ATMega8 и ATMega16. Кроме того, в версии ver.1 кроватки для ATTiny26 и ATTiny13 есть непосредственно на плате.
Обе версии платы программатора и все «платы расширения» в формате SL5 – здесь.
Вот так выглядит один из моих STK в окружении плат расширения:

Схема программатора AVR910 с универсальным COM/USB интерфейсом

AVR910 – весьма известный аппнот Atmel, давший название целому классу устройств.
Сейчас под AVR910 понимают как правило протокол, по которому происходит обмен данными между компьютером и программатором.
В сети на данный момент можно найти несколько вариантов таких программаторов, различающихся способом реализации интерфейсной части. Традиционно все эти программаторы собираются на основе микроконтроллера AT90S2313 или (в редких случаях, при наличии модифицированной прошивки) ATTiny2313.
На схеме представлен программатор, способный работать как через CОМ, так и через USB.
Переключение типа интерфейса происходит при помощи джампера J1. При работе через USB питание программатора осуществляется непосредственно от этого порта компьютера, причем в этом режиме имеется полная гальваническая развязка программатора (и, соответственно, программируемого устройства) от компьютера, более того, при замыкании перемычки J2 программируемое устройство может питаться от программатора (до 100 мА).
При работе через СОМ-порт развязка отсутствует, а питание программатора осуществляется, как обычно, от программируемого устройства.
Интерфейс USB реализован на микросхеме FT232BM в стандартной схеме включения, в качестве согласователя уровней для СОМ-порта применена MAX232.
Вариант разводки печатной платы, схема и прошивка лежат здесь. Разводка платы не оптимальна, поскольку осуществлялась для конкретного корпуса с заранее заданным расположение разъемов, органов управления и индикации. Кроме того, на плате разведена кнопка для принудительного сброса программируемого МК, реально она не нужна, поскольку сброс корректно осуществляется программным образом. Также на плате присутствует разъем для программирования МК самого программатора.
Для подключения программатора к СОМ-порту служит трехконтактный разъем PLS и потребуется изготовить специальный шнурок.
Замечу, что поскольку здесь используется стандартная разводка шнурка для ISP, с этим программатором можно использовать платы расширения от STK200+/300.
Этот комплект у меня выглядит вот так:

Этот программатор работает у меня под управлением CodeVision AVR 25-ой сборки. Такой выбор обусловлен возможностью регулирования скорости порта непосредственно из программы. Программатору свойственны некоторые особенности в силу применения микросхемы FT232BM, в частности, необходимо выставить минимальную задержку в свойствах соответствующего виртуального СОМ-порта (подробнее смотрите статью USB — RS-232 преобразователи). После этого программирование осуществляется довольно быстро (хотя и чуть медленнее STK200+/300, что, естественно, вызвано последовательным способом передачи данных в программатор).

Схема AVR910-совместимого USB программатора (схема Prottoss»a)

Автором этой конструкции является Рыжков Андрей, известный также под ником PROTTOSS. Описанию этого программатора посвящена одна из страничек его сайта, там же можно найти контакты для связи с автором. Здесь этот материал публикуется с разрешения автора, так что все формальности соблюдены. :)
Программатор выполнен на основе драйвера от Objective Development и полностью совместим по командам с оригинальным программатором AVR910 от ATMEL. Описание оригинальной схемы программатора можно взять в Application Note AVR910: In-System Programming, а список поддерживаемых команд можно посмотреть в Application Note AVR109: Self Programming
Исходно схема устройсва выглядит следующим образом:

Светодиоды VL1, VL2 сигнализируют о текущих действиях программатора, и, соответственно, обозначают режимы чтения и записи. Светодиод VL3 служит для сигнализации подачи питания на программатор. Резисторы R10 — R14 предназначены для согласования уровней сигналов контроллера программатора и программируемого контроллера. С помощью J3 LOW SCK возможно понижать тактовую частоту порта SPI МК программатора до ~20 кГц. При разомкнутом джампере частота SPI нормальная, при замкнутом — пониженная. Переключать джампер можно «на ходу», так как управляющая программа МК программматора проверяет состояние линии PB0 при каждом обращении к порту SPI. Не рекомендуется переключать джампер при запущенном процессе записи/чтения программируемого МК, т.к., скорее всего, это приведет к искажению операции записи/чтения. Данный джампер введен для возможности программирования МК AVR, тактированных от внутреннего генератора 128 кГц.
Схема была несколько переработана, в нее внесены следующие изменения.
Питание МК осуществляется от USB, но не через диоды, как в исходной схеме, а через LDO стабилизатор LM1117 на 3.3В. Замечу, что при таких напряжениях питания (как 3.3 В здесь, так и 3.6 В в исходной схеме) и частоте кварца 12 МГц Atmel не гарантирует устойчивую работу своих МК, однако к чести производителя ни один из тестировавшихся микроконтроллеров работать не отказался. Тем не менее, стоит учитывать такую возможность. Еще раз: чем больше напряжение питания (в пределах до 5В, естественно), тем выше вероятность того, что контроллер запустится и будет устойчиво работать, поэтому многие отказываются от LDO в пользу двух диодов. Да, предохранитель тоже отсутствует, но, если добавить, хуже точно не будет.
В обе цепи питания МК (VCC и AVCC) введены дополнительные LC-фильтры в виде SMD-индуктивностей на 10мкГн и конденсаторов 0.1 мкФ (в принципе, дроссель в AVCC можно заменить перемычкой, его установка — совсем уж перестраховка), кроме того, на плате появился дополнительный джампер, позволяющий запитывать целевую плату от программатора напряжением 5В или 3.3 В или, естественно, вообще не питать ее от программатора. В цепь питания целевой платы также включена индуктивность и установлен диод 1N4148, препятствующий попаданию питающего напряжения с целевой платы (если оно там есть) на программатор. Замечу, что поскольку на диоде имеет место падение напряжения, то напряжение питания целевой платы будет меньше заявленного на величину этого самого падения. В зависимости от диода и некоторых других условий теоретически оно может снизиться настолько, что его не хватит для нормального функционирования целевой платы. Для уменьшения эффекта можно использовать в этой цепи диод Шоттки, а вообще, может быть стоит вообще отказаться от такой возможности, решайте сами, насколько оно вам надо… :)
Исчез джампер NORM/MOD, предназначенный для ввода программатора в режим обновления прошивки, вместо этого на плате установлен полноценный разъем для программирования МК программатора (разъем имеет несколько нестандартный вид и представляет собой контактную гребенку PLS-6, на которую выведены следующие сигналы в последовательности MOSI-MISO-SCK-Reset-Vcc-GND. В такой же последовательности эти сигналы расположены на выводах МК ATMega16 в корпусе DIP-40, именно оттуда я ее и «срисовал». Такой разъем занимает меньше места на плате и как правило проще разводится, чем стандартный 10-ти контактный ISP-коннектор, поэтому лично я часто им пользуюсь в своих конструкциях).
Кроме того, уменьшены до 220 Ом последовательные резисторы в линиях программирования (вообще, их номинал — отдельный открытый вопрос) и до 22 Ом в линиях USB.
Все эти изменения можно проследить на печатной плате (кроме изменения номиналов резисторов, в подписях элементов они оставлены прежними), разводку которой можно скачать в конце статьи. Плата получилась односторонняя с парой перемычек и рассчитана на установку МК ATMega8 в кроватке, у которой удалены неиспользуемые выводы. Можно, конечно, и впаять туда Мегу, откусив лишние выводы, но это на ваш страх и риск. Собранный программатор выглядит так:

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

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

Вот еще вариант платы этого программатора на микроконтроллере в корпусе TQFP, делал под конкретный корпус, схема та же, работает не хуже:


При всем уважении к автору не могу не заметить, что среди повторивших эту схему встречаются люди, у которых она работать отказывается. Сложно объективно сказать, с чем это может быть связано, однако лишний раз призову к соблюдению рекомендаций и внимательной сборке устройства. В остальном, из личного опыта, претензий к программатору нет, работает достаточно устойчиво (несколько раз наблюдались сложности при длинных шлейфах к программируемому устройству, другие программаторы в этих же условиях сбоя не давали), скорость приемлемая, но не очень высокая, естественно.
В качестве возможных доработок могу предложить не питать МК программатора пониженным напряжением, а поставить на линии USB стабилитроны, чтобы ограничить напряжение на них. Идея не проверялась.

Лично я свой первый МК AT90S2313 программировал с помощью Fun Card, потом собрал и до сих пор плотно использую несколько вариантов STK200+/300, а с AVR910 работаю в основном в «полевых условиях», когда требуется подключение программатора к ноутбуку без LPT-порта.. Вот такая вот эволюция..

Вопросы, как обычно, складываем тут.

Файлы:

Плата Fun Card в формате SL5
Софт для Fun Card
Платы в формате SL5 для STK200+/300
Схема (RusPlan6), плата (SL5) и прошивка (hex) для AVR910
Плата (SL5), прошивка (hex) и драйвера для USB AVR910 от PROTTOSS»a
Плата (P-CAD 2006) для USB AVR910 от PROTTOSS»a на Atmega8 в корпусе TQFP (SMD вариант)


Как вам эта статья?

Заработало ли это устройство у вас?

Делаем COM программатор для AVR микроконтроллеров. — GetChip.net

Еще одним несложным, в плане изготовления, является COM программатор. При условии использования альтернативного режима COM порта Bitbang, отпадает необходимость в преобразовании интерфейса RS232 COM порта в SPI, необходимый для программирования. Остается только привести уровни сигналов COM порта (-12В, +12В) к необходимым (0, +5В). Это и делает
схема COM программатора для AVR микроконтроллеров:

Данная схема программатора достаточно распространена и известна как программатор Громова. Название пошло от автора программы Algorithm Builder Геннадия Громова, который и предложил такую схему.

Чтобы собрать программатор Громова нам нужно следующее:

Диоды КД522, КД510, 1N4148 или им подобные. Резисторы можно использовать любые, какие найдете. В качестве шлейфа можно использовать IDE шлейф. При подключении шлейфа, для более устойчивой работы программатора, каждый «сигнальный» провод должен чередоваться с «земляным» проводом. Это позволит уменьшить уровень помех наводимых в линиях и за счет этого увеличить длину программирующего провода. Длина шлейфа должна быть в пределах 50 см. Еще нужен разъем для подключения к программируемому устройству.
Для внутрисхемного программирования Atmel рекомендует стандартные разъемы:


Если Вы планируете серьезно заняться микроконтроллерами, сделайте разъемы стандартными. Для разового программирования устройства я рекомендую использовать разъемы BLS «мамы» на программаторе (такими разъемами к материнской плате подключаются кнопки и светодиоды корпуса компа — именно их я и взял) и штырьки PLS «папы» на плате. Это позволяет максимально упростить разводку платы устройства, так как штырьки для программатора устанавливаются в непосредственной близости возле ножек микроконтроллера. Ножки MOSI, MISO, SCK у микроконтроллеров AVR всегда расположены вместе, поэтому для них можно применить строенный разъем. Отдельно делаем подключение для «земли»-GND и «сброса»-Reset.

Собрать COM программатор не составит труда:

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

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

Общие рекомендации:

— Так как режим Bitbang нестандартный для COM порта компьютера, то возможны сбои в работе (хотя у меня такого не было). Особенно это касается ноутбуков. Как вариант решения этой проблемы можно рекомендовать «поиграться» настройками COM порта (скорость, биты данных, варианты управления потоком, величины буфера …).
— Отдельный разъем для «земли» желательно подключить первым, чтобы уравнять потенциалы «земли» программируемого устройства и компьютера. Для тех, кто не знает, если у Вас компьютер включен в обычную розетку, без заземляющего контакта, то в виду особенности фильтра блока питания компьютера, на корпусе компьютера всегда присутствует потенциал в 110В.

Заключение:

— COM программатор Громова простой и надежный. Я не перестал пользоваться им даже собрав USB программатор (если какой либо микроконтроллер перестает программироваться USB программатором я обязательно перепроверю его на программаторе Громова).
— Так как программатор Громова собран на пассивных элементах он не требует для себя питания. Мало того, из-за паразитного питания, микроконтроллер можно запрограммировать вообще не подключая к нему источника питания! Хотя так программировать я не рекомендую, но сам факт интересен.
— Для пользователей Algorithm Builder есть приятный бонус! Этот программатор можно использовать для внутрисхемной отладки кристалла (программный JTAG).

Ссылки:
Сайт Геннадия Громова, автора Algorithm Builder

(Visited 108 607 times, 2 visits today)

[Снято с производства] Программатор USB ISP для ATMEL AVR 51 ATMega ATTiny — SainSmart.com

Торговая марка: SainSmart
[Снято с производства] Программатор USB ISP для ATMEL AVR 51 ATMega ATTiny

Артикул: 20-020-100 UPC: 6955170800582 ID товара: 11091676052 ID варианта: 45099756564

6 долларов.57

USB ASP Программатор и Программирование Atmega

Предполагается, что вы приобрели один программатор USBasp от надежного поставщика компонентов! Подключение программатора к компьютеру состоит из двух шагов.Первый шаг — это физическое подключение программатора к USB-порту с помощью подходящего USB-кабеля, а второй шаг — установка драйверов устройств для его работы. После физического подключения просмотрите руководство производителя, чтобы установить драйверы устройств для USBasp Programmer. В этом руководстве предполагается, что у вас есть достаточные права для установки драйверов устройств в операционных системах Windows (хотя программатор USBasp будет работать с широким спектром операционных систем, я предпочитаю Windows 7-64bit).

В моем новом программаторе USBasp (http://www.robomart.com/avr-usb-programmer.html) «6-контактное соединение ISP» обеспечивает интерфейс для микроконтроллера. Вот почему я использую 6-контактный штекер с моей макетной платой. Однако, если вы используете программатор нестандартной модели, в котором 10-контактное соединение ISP обеспечивает интерфейс, осторожно переподключите макетную секцию, чтобы установить 0-контактное соединение. В этом случае необходимо выполнить еще два подключения (от контакта 2 (RxD) и контакта 3 (TxD) микросхемы Atmega8) на макетной плате.Распиновка 10-контактного разъема ISP показана ниже.


Программирование Atmega

Престижность! Теперь программатор USBasp и адаптер для программирования готовы к использованию. Следующим шагом является подготовка первой программы AVR C. AVR Studio предоставляет среду IDE для написания, отладки и моделирования программ. Мы будем использовать набор инструментов компилятора WinAVR GCC C с AVR Studio через подключаемый модуль.

Вы можете найти их по адресу:

Сначала установите WinAVR, а затем — AVR Studio (используйте расположение по умолчанию, чтобы AVRStudio мог найти WinAVR).

  • Щелкните значок AVR Studio на рабочем столе. Он открывается надписью «Добро пожаловать в AVR Studio 4». Нажмите кнопку «Новый проект»
  • В окне «Создать новый проект» нажмите «AVR GCC», добавьте «Имя проекта»: «LEDTEST» и установите «Местоположение» в удобное место, затем нажмите «Далее».
  • Выберите «Симулятор AVR» в качестве платформы «Отладка» и «Atmega8» в качестве устройства в списке устройств, затем нажмите «Готово».
  • Теперь проект готов к написанию программы.Если все правильно, вы должны находиться на этом экране (фактически этот экран представляет собой сложную среду IDE с множеством инструментов — здесь показано только окно кода)

Теперь напишите этот код в центральном окне кода, скомпилируйте программу, нажав кнопку «Build» (или нажав горячую клавишу F7)

#define F_CPU 1000000UL
#включают
#включают
int main (void) {
   // Устанавливаем регистр направления данных на вывод
   DDRC | = (1
 

Если все в порядке, вы должны получить сообщение в окне «Сборка».

(.text + .data + .bootloader)
Данные: 0 байт (0,0% заполнено)
(.data + .bss + .noinit)
Сборка выполнена, предупреждений 0 ...
 

Теперь перейдите в папку проекта и найдите внутри нее папку с именем «Default». Откройте папку, чтобы просмотреть файл «LEDTEST.hex». Откройте этот файл, чтобы просмотреть шестнадцатеричный код (шестнадцатеричный машинный код программы). Теперь вам нужно только записать этот код во флеш-память Atmega8, установленную на макетной плате! Но как?

→ Часть 4: Процесс записи флэш-памяти и объяснение программы
← Часть 2: Плата разработки ATmega и программный адаптер

wagiminator / ATmega-EEPROM-Programmer: Программатор параллельного EEPROM для 28C64B и 28C256

Программатор параллельного EEPROM для 28C64B и 28C256 с:

  • Интерфейс на основе графического интерфейса, написанный на Python
  • Возможность доступа к программатору через последовательный монитор
  • Аппаратный SPI со скоростью 8 Мбит / с для управления адресной шиной через регистры сдвига
  • Аппаратный UART с 1 Мбит / с для передачи данных на / с ПК через USB 2.0
  • Использование режима быстрой записи страницы EEPROM
  • Передача двоичных данных

Сердцем программатора EEPROM является микроконтроллер ATmega8. Адресная шина EEPROM (до 15 бит) управляется двумя последовательными регистрами сдвига 74HC595 с использованием аппаратного SPI @ 8 Мбит / с. Шина данных управляется напрямую через контакты ATmega. Адрес и шина данных управляются одновременно для достижения максимальной скорости передачи данных. Передача данных на ПК осуществляется через аппаратный интерфейс UART ATmega, передавая данные в двоичном формате со скоростью до 1 Мбит / с.Ch430N (или Ch440N) преобразует последовательные данные для USB 2.0.

EEPROM — это высокопроизводительная электрически стираемая и программируемая постоянная память. Устройство обеспечивает время доступа до 150 нс при рассеиваемой мощности всего 440 мВт. Когда устройство не выбрано, ток в режиме ожидания CMOS составляет менее 200 мкА. Доступ к EEPROM осуществляется как к статической RAM для цикла чтения или записи без необходимости использования внешних компонентов. Устройство содержит 64-байтовый страничный регистр, позволяющий одновременно записывать до 64 байтов.Конец цикла записи может быть обнаружен путем опроса данных. Как только будет обнаружен конец цикла записи, может начаться новый доступ для чтения или записи. Для защиты от непреднамеренной записи доступен дополнительный программный механизм защиты данных. EEPROM идеально подходит для замены (E) EPROM в старых 8-битных компьютерах.

Доступ для чтения

Доступ к EEPROM осуществляется как к статической RAM. Когда! CE и! OE имеют низкий уровень, а! WE высокий, данные, хранящиеся в ячейке памяти, определяемой адресными контактами, утверждаются на выходах.Выходы переводятся в состояние высокого импеданса, когда высокий уровень! CE или! OE.

Доступ для записи

Низкий импульс на входе! WE или! CE с! CE или! WE low (соответственно) и! OE high инициирует цикл записи. Адрес фиксируется на заднем фронте! CE или! WE, в зависимости от того, что происходит последним. Данные фиксируются первым нарастающим фронтом! CE или! WE. Как только запись байта была начата, она автоматически завершится по времени. Операция записи страницы позволяет записать в устройство от 1 до 64 байтов данных за один период внутреннего программирования.Операция записи страницы инициируется таким же образом, как и запись байта; за первым записанным байтом могут следовать от 1 до 63 дополнительных байтов. Каждый последующий байт должен быть записан в пределах 150 мкс от предыдущего байта. Все байты во время операции записи страницы должны находиться на одной странице, как определено состоянием входов A6 — A14. Для каждого перехода WE с высокого уровня на низкий во время операции записи страницы A6 — A14 должны быть одинаковыми. Входы от A0 до A5 используются для указания, какие байты на странице должны быть записаны.Байты могут загружаться в любом порядке и могут быть изменены в течение того же периода загрузки. Будут записаны только байты, указанные для записи; ненужного зацикливания других байтов внутри страницы не происходит.

Опрос данных

EEPROM имеет функцию опроса данных, чтобы указать конец цикла записи. Во время цикла записи байта или страницы попытка чтения последнего записанного байта приведет к тому, что дополнение записанных данных будет представлено на I / O7. После завершения цикла записи истинные данные действительны на всех выходах, и может начаться следующий цикл записи.Опрос ДАННЫХ может начаться в любой момент во время цикла записи. В дополнение к опросу данных EEPROM предоставляет еще один метод определения конца цикла записи. Во время операции записи последовательные попытки чтения данных с устройства приведут к переключению I / O6 между единицей и нулем. После завершения записи I / O6 перестанет переключаться и будут считаны действительные данные. Чтение бита переключения может начаться в любой момент во время цикла записи.

Реализация

На стороне микроконтроллера данные принимаются через UART и записываются в EEPROM в соответствии с таблицей данных или наоборот.Программатор управляется простыми командами, которые также отправляются через последовательный интерфейс:

Команда Функция
и Печать «Программатор EEPROM» (для идентификации)
v Распечатать версию прошивки
a 0100 Установить адресную шину на 0100 (шестнадцатеричный) (для тестирования)
д 0000 7fff Распечатать шестнадцатеричный дамп адресов памяти 0000-7fff (шестнадцатеричный)
f 1000 1fff ff Заполнить память (1000-1fff) значением ff (шестнадцатеричное)
r 0000 3fff Считывание адресов памяти 0000-3fff (шестнадцатеричное) и отправка в виде двоичных данных
p 0100 013f Страница записывает двоичные данные на страницу памяти 0100-013f (должны следовать байты)
л Lock EEPROM (включить защиту от записи)
u Разблокировать EEPROM (отключить защиту от записи)

Любой последовательный монитор (установите скорость передачи данных 1000000) может использоваться для управления с ПК.Однако, чтобы использовать все возможности, рекомендуется использовать прилагаемые скрипты Python. Скрипт «eepromgui.py» предлагает простой графический пользовательский интерфейс и функции для чтения и записи двоичных файлов, а также для отображения содержимого EEPROM. Скрипты были протестированы только в Linux, но должны работать во всех операционных системах. Для Windows может потребоваться драйвер для Ch430N / Ch440N.

Компиляция и загрузка

При использовании Arduino IDE

  • Убедитесь, что вы установили MiniCore.
  • Перейдите в Инструменты -> Плата -> MiniCore и выберите ATmega8 .
  • Перейдите к Tools и выберите следующие параметры платы:
    • Тактовая частота: Внешняя 16 МГц
    • BOD: BOD 4.0V
    • Компилятор LTO: LTO включен
    • Загрузчик: Нет загрузчика
    • Остальное оставьте по умолчанию
  • Подключите ваш программатор к компьютеру и к разъему ICSP устройства.
  • Перейдите в Инструменты -> Программатор и выберите своего ISP-программатора (например, USBasp).
  • Перейдите в Инструменты -> Записать загрузчик , чтобы сжечь предохранители.
  • Откройте скетч EEPROM_Programmer и нажмите Загрузить .

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

  • Убедитесь, что вы установили avrdude.
  • Подключите ваш программатор к компьютеру и к разъему ICSP устройства.
  • Откройте терминал.
  • Перейдите в папку с шестнадцатеричным файлом.
  • Выполните следующую команду (при необходимости замените «usbasp» на используемый вами программатор):
      avrdude -c usbasp -p m8 -U lfuse: w: 0x3f: m -U hfuse: w: 0xd1: m -U flash: w: eeprom_programmer_m8.hex
      

При использовании make-файла (Linux / Mac)

  • Убедитесь, что вы установили набор инструментов avr-gcc и avrdude.
  • Подключите ваш программатор к компьютеру и к разъему ICSP устройства.
  • Откройте make-файл и смените программатор, если вы не используете usbasp.
  • Откройте терминал.
  • Перейдите в папку с make-файлом и скетчем Arduino.
  • Выполните «make install» для компиляции, сожгите предохранители и загрузите прошивку.
  1. Подключите программатор EEPROM через USB к компьютеру.
  2. Вставьте EEPROM в гнездо ZIF так, чтобы контакт 1 был направлен к ручке гнезда.
  3. Запустите приложение eepromgui.py.
  1. AT28C64B Лист данных
  2. AT28C256 Лист данных
  3. ATmega8A Лист данных
  4. 74HC595 Лист данных
  5. Ch430N Лист данных

Эта работа находится под лицензией Creative Commons Attribution-ShareAlike 3.0 Непортированная лицензия. (http://creativecommons.org/licenses/by-sa/3.0/)

5.1. Подключение AVR для программирования

Программатор Pololu USB AVR v2 (внизу), подключенный к A-Star 32U4 Prime SV для программирования.

В этом разделе объясняется, как подключить программатор к микроконтроллеру AVR с помощью интерфейса внутрисистемного программирования (ISP), который также известен как внутрисхемное последовательное программирование (ICSP), последовательное программирование или последовательная загрузка.

Многие платы AVR имеют 6-контактный штекер ISP. Если на вашей плате есть такой разъем, вы можете просто подключить программатор к разъему ISP с помощью прилагаемого 6-контактного кабеля ISP. Если на вашей плате нет закрытого разъема ISP для обеспечения правильной ориентации кабеля, то вы должны убедиться, что кабель ориентирован так, что контакт 1 на разъеме кабеля совпадает с контактом 1 на вашем целевом устройстве. На разъеме кабеля ISP имеется слабый треугольник, указывающий на контакт 1, а красный провод в кабеле также указывает на контакт 1.

Если ваш AVR не имеет 6-контактного разъема ISP, вам необходимо подключить каждый из шести выводов программирования программатора к соответствующему контакту на AVR. Контакты ISP программатора помечены внизу программатора, а также на схеме ниже. Имена, которые мы используем для контактов на программаторе AVR, соответствуют именам, обычно используемым для контактов ISP в таблицах данных AVR. Например, в таблице данных ATmega328P указано, что MOSI является одним из названий вывода PB3, поэтому вам нужно будет подключить вывод MOSI на программаторе AVR к выводу PB3 / MOSI на ATmega328P.Ссылаясь на техническое описание вашего конкретного AVR и схему печатной платы, на которой AVR включен (если применимо), вы сможете определить точки подключения для контактов GND, MISO, MOSI, SCK, RST и VCC AVR. Обычно вам понадобится шесть проводов для выполнения всех необходимых подключений.

Pololu USB AVR Programmer v2.1, с надписью вид сверху.

Вам также необходимо убедиться, что целевое устройство включено.Микроконтроллер AVR должен быть запитан во время программирования, и программатор не подает питание по умолчанию. Если вы действительно хотите подавать питание на целевой AVR от программатора, см. Раздел 8.

Программатор / устройство записи

ISP со схемой для микроконтроллера AVR Atmega

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

Микроконтроллеры серии ATmega32 поддерживают 3 типа программирования

  • Параллельное программирование
  • Программирование ISP или последовательное программирование
  • Программирование через JTAG

Здесь ISP означает «системный программист».Для записи микроконтроллера только записывающего оборудования недостаточно, для этого также требуется программное обеспечение, которое загружало бы программу, имеющуюся в компьютере или запоминающем устройстве, в микроконтроллер.

Теперь программное обеспечение, о котором я говорю, называется PONY PROGRAMMER 2.06 . Моя схема адаптирована с сайта Pony Programmer. Он использует COM-порт ПК для загрузки программы в микроконтроллер. Он имеет амплитуду сигнала от +5 до +12 В, представляющую двоичную «1», и от -5 до -12, представляющую «0».

Микроконтроллер ATmega32 программируется с использованием контактов, предназначенных для связи по SPI. Чтобы включить программирование, микроконтроллер должен быть переведен в состояние СБРОС, потянув его вывод сброса на НИЗКИЙ уровень (логический 0 или, скажем, 0 В). В этом состоянии микроконтроллер может программироваться в любом режиме (параллельное программирование или последовательное программирование). Микроконтроллер всегда принимает 0 В как логику 0 и +5 В как логическую единицу.

Сигналы, передаваемые с ПК, не имеют формы, которая может быть принята непосредственно микроконтроллером.Эти сигналы от ПК должны быть адаптированы для микроконтроллера. В программаторе стабилитроны обеспечивают необходимую обработку сигналов. Он устроен таким образом, что преобразует сигнал ± 12 вольт в сигнал + 5-0 вольт, который подходит для микроконтроллера. Сопротивление необходимо для ограничения тока в узлах стабилитронов, без которого стабилитрон может перегореть. И внутренние цепи компьютера также могут получить повреждения.

Высокий сигнал (+5 В) на выводе « Reset » микроконтроллера переводит его в рабочее состояние.Низкий сигнал (Земля) переводит его в режим программирования. На выводах сброса имеются внутренние подтягивающие резисторы, и если к этому выводу ничего не подключено, микроконтроллер пытается выполнить программу, написанную в нем. Разработчики могут предоставить схему сброса резистивной емкости, но это не всегда необходимо. Как бы то ни было, в большинстве случаев для обеспечения возможности сброса используется кнопка. Здесь, в схеме горелки, на вывод сброса подается открытый коллектор, который управляется программатором через порт.Этого достаточно.

Необходимая часть работы по передаче и приему данных выполняется пони-программистом. Перейдите по предоставленным ссылкам, чтобы загрузить pony programmer. Следующая схема записи может сжечь микроконтроллер ATmega32. Подключите полученные сигналы к соседним контактам, подключите кабель к COM-порту, включите устройство, то есть микроконтроллер, и микроконтроллер готов к программированию.

Схема программатора

ISP

Изображение: Принципиальная схема ISP Burner Кабель для программирования Схема подключения

Вот как устроена схема.Теперь позвольте мне сказать вам, что микроконтроллер работает на внутреннем калиброванном RC-генераторе, показанном на рисунках. Так что кристалл не прикреплен. И все же микроконтроллер можно программировать. Посмотрим настройки программного обеспечения. Первым делом выберите порт, к которому вы подключили устройство! И устройство программирования из меню «Настройка> Настройка интерфейса…». Выберите «SI Prog I / O», это обеспечивает максимальную скорость программирования. А по поводу портов, для этого кабеля программирования должен быть com порт ! Теперь выберите порт, к которому подключен кабель.

Выбор программатора

Теперь переходим в меню выбора устройства. Здесь ATmega32 относится к семейству AVR. Таким образом, он указан в разделе «Устройства > AVR micro» . Выберите ATmega32 в качестве устройства. Автоопределение тоже подойдет.

Выбор устройства

Теперь, после этого, проверьте две важные вещи, работает ваша схема или нет. Выберите «Command> Read All»

. Меню команд

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

Work ProgressRead Successful

Вы можете записать свой шестнадцатеричный файл с его помощью (компиляторы предоставляют шестнадцатеричные файлы для программирования микроконтроллеров). Просто откройте «Файл> Открыть файл устройства…», теперь откроется окно, теперь найдите свой шестнадцатеричный файл, загрузите его в программатор пони и запишите. Программист Pony также поддерживает операции щелчка и перетаскивания. Это означает, что если вы поместите шестнадцатеричный файл в программатор pony, он автоматически его поймает.

Компоненты:

  • DB9 гнездовой разъем
  • 2 резистора по 1 кОм
  • 2 х 5.Стабилитрон 1 В
  • 1 резистор 15 кОм
  • Доска Vero
  • BC 547 или любой NPN-транзистор общего назначения
  • Мужской разъем Relimate (6PIN и 2PIN)
Ссылки для справки:

ATmega32 лист данных

Pony Programmer страница загрузки

Pony programmer 2.06 загрузить

Примечание: 1. Убедитесь, что у вас есть COM-ПОРТ в аппаратном обеспечении вашего компьютера и ваша операционная система его распознает.Проверьте это в «Панель управления> Администрирование> Управление компьютером». На панели каскадного списка найдите следующие

«Управление компьютером> Системные инструменты> Диспетчер устройств> Порты (com и LPT)». Если COM-порты присутствуют в этом списке, эта схема будет работать нормально. В противном случае ищите записывающее устройство на основе USB.

Примечание 2 . Эта горелка также будет работать с ATmega16. Для ATmega8 нужно подключить сигналы к уважаемым пинам.

Примечание 3 . Можно опустить 2-контактный штекерный разъем Relimate

Библиография

Lancos.com и Atmel

Блог г-на Гаурава Чаудхури

DIY ATMEGA USB ICSP Программатор

Особая благодарность JLCPCB за предоставленные печатные платы для запуска этого проекта. Прототип JLCPCB за 2 доллара (любой цвет): https://jlcpcb.com

Это мой нынешний USB-программатор ATMEGA (верхний):

Я построил его около шести лет назад на какой-то перфорированной плате, используя дешевый мини-клон Arduino, записанный с помощью скетча ArduinoISP, который включен в каждую установку Arduino IDE.Это довольно некрасиво со всей точечной пайкой, но надежно работало в течение многих лет. Это не самый удобный вариант, так как для этого требуется мини-кабель USB, он довольно большой и иногда может быть немного неудобным. Поэтому я хотел взять все те же компоненты и сжать все до крошечного программатора размером с брелок.

Итак, я начал с составления схемы, основанной примерно на том, как сконфигурирована Arduino mini и как она подключена для скетча ISP:

Несколько ключевых целей для дизайна:

— Включает в себя полноразмерный штекер USB-разъем и микро-гнездовой порт, чтобы я мог подключить его к компьютеру в любом случае

— Примерно вписывается в размер, почти такой же маленький, как мини-плата Arduino

.

— Сохраняйте хорошо заметные светодиоды с цветовой кодировкой

— Используйте стандартный 6-контактный ICSP 0.Разъем 1 «, поэтому я могу легко изготавливать двусторонние кабели для легкой замены

— Используйте дешевый чип USB для последовательного порта, Ch440G

Это плата, которую я придумал:

Дополнительные функции, которые я добавил, — это великолепный программный интерфейс SOICbite Саймона Меррета (https://hackaday.io/project/165917-soicbite-programmingdebug-connector-footprint) для прошивки программного обеспечения ISP на встроенном ATMEGA328P и перемычка с возможностью обрезки, JP1, чтобы предотвратить случайное стирание прошивки программатора через usb после первоначальной прошивки.

Сборка

прошла быстро, я сделал здесь видео, показывающее это и в целом описывающее процесс прошивки (мой soic clip еще не прибыл, поэтому мне пришлось сделать довольно средневековый обходной путь), а также демонстрацию программирования одного из моих других проектов. доски.

Так что на этом все, надеюсь, я буду использовать этого парня еще несколько лет. Я обнаружил, что прозрачный радиатор размером 1–1,5 дюйма идеально помещается на плату, защищая от коротких замыканий и позволяя легко видеть встроенные светодиодные индикаторы.Для следующей итерации я определенно размещу гнездовой разъем micro usb под прямым углом от 6-контактного 0,1-дюймового разъема icsp под прямым углом, хотя оба подключенных разъема могут быть немного затруднены в зависимости от обхвата используемого кабеля USB. Кроме того, переход на более новый SOIC-8 Ch440N, который не требует внешнего кристалла 12 МГц, сделает конструкцию еще проще и дешевле.

Как программировать микроконтроллер AVR Atmega16 с помощью программатора USBASP и Atmel Studio 7.0

Есть несколько способов программирования микроконтроллеров AVR. Мы программируем его с помощью последовательного программатора USBASP v2.0. Для демонстрации мы будем использовать микроконтроллер ATmega16 и Atmel Studio. Протестируем программатор с помощью скетча мигания.

Ниже приведены шаги для записи кода в микросхемы Atmega с использованием USBASP JTAG и Atmel Studio:

  1. Установка драйвера USBASP.
  2. Загрузка и установка Atmel Studio.
  3. Настройка внешнего набора инструментов в Atmel Studio e.грамм. WinAVR
  4. Настройка Atmega16 с осциллятором и одним светодиодом.
  5. Создание и загрузка эскиза в Atmega16

Обсудим подробно каждый шаг. Первым шагом будет установка драйвера USBASP в Windows 10. Тот же метод можно использовать для установки в другой версии Windows.

Шаг 1. Установка драйвера USBASP в Windows 10:

При использовании JTAG (USBASP) вам может потребоваться установить драйвер, если он не устанавливается автоматически.Если вы не установите драйвер, вы не сможете найти порт USBASP в Atmel Studio. Загрузите zip-файл USBASP по этой ссылке.

После загрузки драйвера выполните следующие действия.

1. Разархивируйте загруженный файл и сохраните его на рабочем столе (можно хранить где угодно).

2. Подключите модуль USBASP v2.0 к компьютеру. Если вы не знаете, как выглядит USBASP, вы можете увидеть картинку ниже.

3. Откройте диспетчер устройств.

4.Теперь вы можете найти подключенный USBASP Programmer.

5. Щелкните правой кнопкой мыши «USBasp» и выберите « Обновить драйвер ».

6. Выберите « Найдите на моем компьютере драйвер ».

7. Теперь найдите или просмотрите родительскую папку распакованного драйвера USBASP и выберите «Открыть».

8. Если программа успешно установлена, вы увидите сообщение, подобное приведенному ниже, и вам не нужно выполнять дальнейшие инструкции.

9. Если вы получите следующую ошибку, как показано ниже, вам необходимо отключить принудительное использование подписи драйверов.

Чтобы отключить подпись драйвера, выполните следующие шаги :

1. Чтобы отключить подпись драйвера, удерживайте клавишу Shift и, удерживая клавишу Shift, перезагрузите компьютер.

2. Нажмите Restart на панели запуска, удерживая нажатой клавишу Shift.

3. Теперь ваш компьютер перезагружается, но не отпускайте клавишу Shift, пока не увидите « Advanced Options » на синем экране.

4. Оставьте клавишу Shift и щелкните «Параметры запуска».

5. Нажмите «Устранение неполадок».

6. Выберите «Дополнительные параметры».

7. Когда вы выберете расширенный параметр, отобразится следующий экран с несколькими вариантами и кнопка «Перезагрузка» будет в правом нижнем углу.

8.Щелкните по кнопке «Перезагрузить».

9. Подождите, пока снова запустятся окна. После перезагрузки вы увидите множество вариантов.

10. Теперь это последний шаг по отключению подписи драйверов. Во многих вариантах в списке параметр 7 th — это «Отключить принудительное использование подписи драйвера ».

11. Чтобы выбрать эту опцию, вам нужно будет нажать кнопку с цифрой 7 на клавиатуре. Не путайте с кнопкой F7. Вам просто нужно нажать цифру 7 на вашем компьютере.

12. После выбора опции 7 th ваш компьютер перезагрузится. И вы успешно отключили подпись драйвера.

13. Теперь просто выполните шаги 1-8 выше, и драйвер USBASP будет успешно установлен.

Теперь, , мы завершили 1 этап программирования Atmega16 . Второй шаг включает настройку Atmel Studio 7.0 для загрузки скетча.

Шаг 2. Загрузка и установка Atmel Studio:

Следуйте инструкциям ниже:

1.Скачать Atmel Studio 7.0

2. Также вам нужно будет загрузить «WinAVR» в качестве внешней цепочки инструментов для загрузки скетча с помощью USBASP. Для скачивания используйте эту ссылку.

Теперь вам нужно создать проект «Blink» в Atmel Studio 7.0. Для этого выполните шаги.

3. Подключите USBASP v2.0 к USB-порту и оставьте его подключенным все время, пока вы не начнете с ним работать.

4. Откройте Atmel Studio.

5. Перейдите в «Файл», нажмите «Создать» и выберите «Проект».

6. Теперь назовите свой проект, выберите расположение проекта и выберите компилятор «GCC C Executable Project». Нажмите «ОК» и продолжайте.

7. Теперь вам будет предложено выбрать микроконтроллер. Выбирайте свое устройство, в нашем случае это Atmega16A. Выберите и нажмите «ОК». Вы также можете запрограммировать другие микросхемы Atmega, такие как Atmega8, Atmega32 и т. Д., Используя тот же программатор USBASP AVR.

8.Теперь ваш файл main.c создан, в котором вы можете написать свой код. Но подождите и следуйте небольшим инструкциям, чтобы закончить.

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

Шаг 3. Настройка внешней инструментальной цепочки WinAVR в Atmel Studio

1. Перейдите в «Инструменты» и выберите «Внешние инструменты».

2. Вам будет предложено окно, в котором вам нужно будет добавить имя вашей инструментальной цепочки.

3. В поле «Заголовок» введите имя вашей инструментальной цепочки. Это может быть любое название. В моем случае я выбрал «USBasp». Установите флажок «Использовать окно вывода» и снимите флажок «Запрашивать аргументы», как показано на снимке экрана ниже.

4. Теперь введите «Command». Это будет ваш путь «avrdude.exe». Вы получите это в установленном пути WinAvr. Просто найдите «WinAVR-20100110» на диске «C» или там, где установлен WinAvr.

5. Введите аргументы . Это наиболее важный шаг, поскольку этот аргумент будет использоваться для передачи определенного аргумента для выполнения определенных задач.Поскольку я использую внешнюю инструментальную цепочку, используется следующий аргумент:

    

6. Вы можете найти больше аргументов по этой ссылке.

7. Введите указанный выше аргумент в раздел аргументов. Оставьте «Исходный каталог» как есть.

8. После заполнения всех данных просто «Применить» и нажмите «ОК».

У вас есть , успешно созданная внешняя цепочка инструментов для загрузки эскиза .После создания набора инструментов мы протестируем, загрузив программу «blink.c». Вы можете найти файл main.c в конце руководства. Теперь скопируйте main.c в студию Atmel.

Шаг 4: Настройка Atmega16 с осциллятором и одним светодиодом

Подключите кварцевый генератор и светодиод к Atmega16. Принципиальная схема мигающего светодиода с Atmega16 , запрограммированного с помощью USB-программатора Atmega, приведена ниже:

Также вам нужно будет подключить микроконтроллер и USBASP, как указано в схеме ниже:

Шаг 5: Создание и загрузка эскиза в Atmega16

1.Сохраните файл main.c.

2. Подключите один светодиод к контакту PORTA0 Atmega16, как показано на рисунке выше.

3. Перейдите в «Сборка», а затем выберите «Сборка Blink».

4. Если программа верна, вы не найдете никаких ошибок и получите сообщение, как показано ниже.

5. Теперь перейдите в «Инструменты» и выберите созданную внешнюю цепочку инструментов. В моем случае это «USBasp». Нажмите здесь.

6.Если вы видите сообщение об успешном выполнении, как показано ниже, значит, вы успешно загрузили эскиз. Если вы получите какую-либо ошибку, просто проверьте, тщательно ли вы выполнили все шаги, а также проверьте подключение USBASP и Atmega16.

7. Теперь вы видите, что светодиод начинает мигать. И вы успешно загрузили программу мигания с помощью USBASP v2.0 и Atmel Studio 7.0. Вы можете использовать этот метод и загружать другие скетчи с помощью USBASB.

/> .

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *