Миниатюрный USB программатор для AVR микроконтроллеров / Habr

Как театр начинается с вешалки, так программирование микроконтроллеров начинается с выбора хорошего программатора. Так как начинаю осваивать микроконтроллеры фирмы ATMEL, то досконально пришлось ознакомится с тем что предлагают производители. Предлагают они много всего интересного и вкусного, только совсем по заоблачным ценам. К примеру, платка с одним двадцатиногим микроконтроллером с парой резисторов и диодов в качестве обвязки, стоит как «самолет». Поэтому остро встал вопрос о самостоятельной сборке программатора. После долгого изучения наработок радиолюбителей со стажем, было решено собрать хорошо зарекомендовавший себя программатор USBASP, мозгом которого служит микроконтроллер Atmega8 (так же есть варианты прошивки под atmega88 и atmega48). Минимальная обвязка микроконтроллера позволяет собрать достаточно миниатюрный программатор, который всегда можно взять с собой, как флэшку.

Автором данного программатора является немец Thomas Fichl, страничка его разработки со схемами, файлами печатных плат и драйверами.
Раз решено было собрать миниатюрный программатор, то перерисовал схему под микроконтроллер Atmega8 в корпусе TQFP32 (распиновка микроконтроллера отличается от распиновки в корпусе DIP):

Перемычка J1 применяется, в случае если необходимо прошить микроконтроллер с тактовой частотой ниже 1,5МГц. Кстати, эту перемычку вообще можно исключить, посадив 25 ногу МК на землю. Тогда программатор будет всегда работать на пониженной частоте. Лично для себя отметил, что программирование на пониженной скорости на доли секунды дольше, и поэтому теперь перемычку не дёргаю, а постоянно шью с ней.
Стабилитроны D1 и D2 служат для согласования уровней между программатором и USB шиной, без них работать будет, но далеко не на всех компьютерах.
Светодиод blue показывает наличие готовности к программированию схемы, red загорается во время программирования. Контакты для программирования выведены на разъем IDC-06, распиновка соответствует стандарту ATMEL для 6-ти пинового ISP разъема:

На этот разъем выведены контакты для питания программируемых устройств, здесь оно берется напрямую с USB порта компьютера, поэтому нужно быть внимательным и не допускать кз. Этот же разъем применяется и для программирования управляющего микроконтроллера, для этого достаточно соединить выводы Reset на разъеме и на мк (см. красный пунктир на схеме). В авторской схеме это делается джампером, но я не стал загромождать плату и убрал его. Для единичной прошивки хватит и простой проволочной перемычки. Плата получилась двухсторонняя, размерами 45х18 мм.

Разъем для программирования и перемычка для снижения скорости работы программатора вынесены на торец устройства, это очень удобно

Прошивка управляющего микроконтроллера

Итак, после сборки устройства осталось самое важное — прошить управляющий микроконтроллер. Для этих целей хорошо подходят друзья у которых остались компьютеры с LPT портом 🙂 Простейший программатор на пяти проводках для AVR
Микроконтроллер можно прошивать с разъема программирования, соединив выводы Reset микроконтроллера (29 нога) и разъема. Прошивка существует для моделей Atmega48, Atmega8 и Atmega88. Желательно использовать один из двух последних камней, так как поддержка версии под Atmega48 прекращена и последняя версия прошивки датируется 2009 годом. А версии под 8-й и 88-й камни постоянно обновляются, и автор вроде как планирует добавить в функционал внутрисхемный отладчик. Прошивку берем на странице немца. Для заливки управляющей программы в микроконтроллер я использовал программу PonyProg. При программировании необходимо завести кристалл на работу от внешнего источника тактирования на 12 МГц. Скрин программы с настройками fuse перемычек в PonyProg:

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

Установка драйвера

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

Выбираем папку где лежат дрова и жмем Далее

Мигом появится окно с предупреждением о том, что устанавливаемый драйвер не имеет цифровой подписи у мелкомягких:

Забиваем на предупреждение и продолжаем установку, после небольшой паузы появится окно, сообщающее об успешном окончании операции установки драйвера

Все, теперь программатор готов к работе.

Khazama AVR Programmer

Для работы c программатором я выбрал прошивальщик Khazama AVR Programmer. Замечательная программка, с минималистичным интерфейсом.

Она работает со всеми ходовыми микроконтроллерами AVR, позволяет прошивать flash и eeprom, смотреть содержимое памяти, стирать чип, а также менять конфигурацию фьюз-битов. В общем, вполне стандартный набор. Настройка фьюзов осуществляется выбором источника тактирования из выпадающего списка, таким образом, вероятность залочить кристалл по ошибке резко снижается. Фьюзы можно менять и расстановкой галок в нижнем поле, при этом нельзя расставить галки на несуществующую конфигурацию, и это тоже большой плюс в плане безопасности.

Запись фьюзов в память мк, как можно догадаться, осуществляется при нажатии кнопки Write All. Кнопка Save сохраняет текущую конфигурацию, а Load возвращает сохраненную. Правда я так и не смог придумать практического применения этих кнопок. Кнопка Default предназначена для записи стандартной конфигурации фьюзов, такой, с какой микроконтроллеры идут с завода (обычно это 1МГц от внутреннего RC).
В общем, за все время пользования этим программатором, он показал себя с наилучшей стороны в плане стабильности и скорости работы. Он без проблем заработал как на древнем стационарном пк так и на новом ноутбуке.

Скачать файл печатной платы в SprintLayout можно по этой ссылке

Ну вроде все, если возникнут вопросы, постараюсь ответить.

habr.com

Сообщества › Электронные Поделки › Блог › FAQ USBasp программатор AVR микроконтролеров

В инете сказано, что USBasp — один из наиболее простых для повторения AVR USB программаторов.
Требует минимум внешних компонентов, имеет несколько много готовых вариантов разводки печатной платы и оболочек для программирования, а также может работать под Linux и MacOS.

Оригинальная статья по программатору: www.fischl.de/usbasp/
Статья, по которой собирал: easyelectronics.ru/usb-pr…grammator-avr-usbasp.html
Автором печатной платы является DiHalt.

Значит собираем )

Сборка устройства USBasp

1. Сборка производилась по следующей схеме. Это самая распространенная схема. Требуется минимум навесных элементов. Не смог достать емкости для кварца на 18пФ, заменил их на 22пФ. Светодиоды можно использовать любого цвета (от того, что красный с зеленым местами поменяются, принцип работы не изменится)

Подробный процесс изготовления выкладывал тут:
USBasp программатор AVR микроконтроллеров (Сборка устройства)

2. Модифицировал печатную плату под свой корпус. Пришлось немного попотеть при переделке, чтоб впихнуть в корпус от сплиттера в одну линейку и МК, и USB-разъем и IDC-10. Результат превзошел мои ожидания )
Доработанная печатная плата USBasp программатора: Скачать в формате Lay

Сверху авторская плата, снизу — мой вариант

3. Припаиваем все элементы согласно схеме. Элементов мало, вероятность ошибиться низка, но есть. Поэтому все делаем внимательно )

4. А теперь сравним оба устройства: авторское и получившееся. Чего хотел — добился. Устройство помещается в корпусе от плиттера. Найдите 10-ть отличий…

Сверху фото авторского устройства. Снизу — фото моего девайса.

Программирование микроконтроллера Mega8

1. Прошиваем микроконтроллер с помощью этого программатора:
Простой LPT программатор AVR микроконтроллеров (5-ть проводков)
Заливаем файл прошивки под названием "usbasp.atmega8.2007-10-23.hex" из этого архива:
Прошивка, программа, печатка. Установка фьюзов тоже в архиве.

Если же фьюзы установлены были неверно, и теперь микроконтроллер не определяется (т.е. был затронут одby из критичных фьюзов), а вам хотелось заново прошить МК, то исправить их можно с помощью такого устройства:
Фьюзбит Доктор. Исправляем AVR при неправильно прошитых фьюзах

на фото прошивка Mega8 с помощью 5-ти проводков

2. Подключаем к программатору адаптер для программирования микроконтроллеров.
Сам адаптер был собран ранее в этой теме:
Адаптер для прошивки AVR микроконтроллеров (8pin-20pin-28pin)

При подключении USB будет постоянно светиться зеленый (красный) светодиод

Установка драйвера для USBasp

1. Можно было запрограммировать и в самом USBasp программаторе, подключив к нему простой программатор согласно распиновке. Если все собрано и запрограммировано верно, то устройство при подключении к ПК определится и "попросит" установить двайвер.

2. На что ему вежливо ответим выбрав папку со скаченными и разархивированными двайверами.

3. Драйвера успешно установятся, если схема собранна верно и МК тоже прошит верно.

4. В диспетчере устройств определится программатор как: LibUSB-Win32 Device.
Радуемся, и тестируем )

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

1. В качестве програмки использовал avrdude в оболочке Sinaprog1.5.5.10.
Можно использовать и приложенное к архиву оболочку USBASP_AVRDUDE_PROG
Для проверки доступа к Attiny13A привожу пошагово такую инструкцию. Контроллер опознан, можно заливать прошивку в Attiny13A .

Необходимые данные для повторения устройства находятся в этом архиве:
Прошивка, программа, печатка, драйвер

Всем удачи!

www.drive2.ru

ПРОГРАММАТОР 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

radioskot.ru

Не работает AVR USB Программатор? Настроим / Habr

Не работает программатор

Данная статья написана для тех, кто только начинает учиться программировать микроконтроллеры.
Гуру микроконтроллинга здесь делать нечего, а вот новичкам, столкнувшихся с проблемами китайского производства. Или нелепой фасовкой готовых программаторов или людей делающих первый шаг в радиоэлектронику эта статья может быть весьма-весьма полезной. Я так же опишу методы поиска неисправностей, с которыми столкнулся сам. Не у всех людей есть выдержка, тем более Интернет для этого и создан, что бы делиться опытом, не так ли?
Не работает программатор AVR — тысячи запросов в Яндексе и Гугл. Не работает USB asp — еще больше. Сотни сайтов, на которые попадаешь и везде читаешь одно и тоже, как кто то собирает очередной программатор, но ни кто, повторюсь НИ КТО не пишет, почему не работает именно твой личный девайс.

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

Описание и подробности будут ниже.

Покупка и внешний вид

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

Дальше предстояло все это собрать и спаять — благо это дело я люблю, и на пайку ушло полчаса — час.

Итак. Мы собрали все, что было в пакете, спаяли по инструкции — у нас получился USBasp программатор. Подключаем его к компьютеру и о боже — Неизвестное устройство. Поиск «программатор USBasp неизвестное устройство» и получаем сотни обсуждений на форуме, где такие же, как и я обманутые или молодые и неопытные юзеры, желающие начать программировать микроконтроллеры — попадают в засаду. Ужас. Еще раз проверяем все ли правильно спаяно и не спаяли ли мы вместе две ножки AtMega8 контроллера? Нет? Правильно ли припаяли все микросхемы? Мы не будем останавливаться на этой ерунде, ведь если да — то вам стоит скачать энциклопедию юного радиолюбителя и читать. Как делал я в свое время. Но мой программатор был спаян идеально. Мультиметром я прозвонил каждую дорожку и проблем не обнаружил! И начал искать в Интернете ответ. Тем более что я не новичок в этом деле. В 2005 году я впервые столкнулся с программированием PIC контроллеров для спутниковых карт. Даже откопал древний программатор UNIPROG 2003. Вот фотки — раритет. Работал как часы. Я еще школьником был, а столько карт перешил.
Достаешь контроллер с карты, вставляешь его в специальную карту с мостиком, вставляешь карту в программатор, и PonyProg творит чудеса на 700м целероне. Вставляешь обратно карту в тюнер — каналы раскодированные. Чудо техники было на то время. Вот фото.

Решение проблемы

Дело в том, что в инструкции и на всех сайтах, где рекламируют этот программатор — советуют не ставить джампер — перемычку JP3 — в моей инструкции написано: «Перемычка ставиться в случае перепрошивки внутреннего контроллера ATMega8» Я и так долгое время грешил на то, что контроллер не прошит. И продавец просто всунул в пакет чистый чип. Но через пару часов, когда начал искать в плате пробел или обрыв — заметил маленькие полосочки и четыре дырки, соединяющие 20ю и 4ю ножку Меги8.
Выход SCK и 19ю ножку Меги8.
Почему так, вы скоро поймете. Вот скриншоты с обведенными в кружочек местами.

Как вы заметили на первой и предыдущей картинке — кроме двух перемычек я обвел еще и джампер. В комплекте повторюсь, не было ни джампера ни перемычки. Её пришлось докупать отдельно, цена 5грн за 40 ячеек. Джампер был в старой материнской плате. Повторюсь в инструкции и схеме — он НЕ НУЖЕН. Но разобравшись со схемой понимаешь что программируемый чип не получает питание +5V. Очень небрежная ошибка производителей. Припаяйте перемычку и замкните джампер.

Внимательно изучите основную работу чипа. Основные ножки:
1 ножка — RESET
17я — MOSI
18z — MISO
19 — SCK
20 — AVCC ( в инструкции к программатору именовалась как VTG)
RESET — МИНУС а VCC — ПЛЮС ( исправьте если я не прав)
На одном сайте вычитал, что при программировании чипов питание должно подключаться ко всем ножкам VCC (AVCC)

Как работает программатор

Самый глупый и самый главный вопрос возникший у меня и сотни других новичков в Интернете купивших микроконтроллер скажем ATTINY2313 и программатор — что дальше? И вот на этот вопрос так же мало ответов в сети. Очень мало фотографий реально работающей схемы. Специально для неопытных, только начинающих знакомиться с этим удивительным миром пару фотографий, что еще необходимо для прошивки чипа:

Как вы видите на фотографии нам необходимо следующее:
-Кабель, соединяющий USBasp программатор с самим контроллером(на фото он на плате с кварцевым генератором( в чипе уже есть свой генератор)
Плата собрана по статье с сайта Простая отладочная плата для устройств AVR ATTiny2313 с кварцем

-Как вы поняли, что бы выходы из программатора MOSI, MISO, USCK, VCC(VTG) и RESET подключались к выходам на настроечной плате, где установлен программируемый чип. На многих ATMEL’овских контроллерах 1я ножка RESET напротив — 4 ножки подряд ( сверху вниз с 20й по 17ю) идут VCC, SCK, MISO, MOSI. То есть в ATTINY2313 — 20ножка VCC, 19 — USCK, 18-MISO, 17-MOSI.
Соедините выход на программаторе и плату с установленным чипом соответственно.
Если вы хотите узнать расположение и распиновку чипа — вы можете скачать ДАТАШИТ любого контроллера с сайта alldatasheet.com Вот даташит на ATTINY2313
В TINY13 и в 2313 и в МЕГЕ8 одинаковая распиновка для программного ISP программирования. Только питание придется менять на плате. Но не для каждого контроллера. Например, TINY13 — так же идеально работает и без кварца на той же плате что я сделал по статье для 2313. MOSI MISO SCK VCC RESET в одинаковых местах. Так что одной платы хватит пока для тестов.

Послесловие

После проделанных манипуляций. Измерения подающего на плату от программатора питания. После того как я разобрался в каждой ножке и допаял третий джампер — наконец-то заработал мой программатор. Он определился компьютером после припайки двух металлических дорожек — как libusb-win32 devices. Но работать не хотел.

Extreme Burner писал «Cannot Comunicate with TargetChip». Я не буду писать, сколько методов я использовал, когда думал что проблема в драйверах — сотню. Даже посоветовали войти в безопасный режим и установить программу по подписыванию драйверов — но он определялся как неизвестное устройство. Вот определился, но не работал. У кого таже проблема вы поняли, да?

И на всех схемах JP3 — ТОЛЬКО для перепрошивки внутреннего чипа. Это так. Но и питание через него необходимо подавать на программируемую плату.

Повторюсь ГУРУ — эта статья для новичков. Если можете дополнить статью, или подправить я буду только рад, так как сам еще новичок. Но очень много людей не могли толком ответить на данную проблему ни в одном из форумов. Даже перечитал все англоязычные форумы.
Даже спаял Программатор Громова. Но деньги та уже потрачены — необходимо довести до ума. Вот им и посвящается данная статья. Спасибо за внимание

habr.com

Alex_EXE » Переделка программатора USB ISP в USB ASP

Многим знаком один из самых распространённыхи и доступных программаторов для прошивки AVR микроконтроллеров USB ASP. Который можно без особых проблем изготовить самостоятельно или приобрести в различных магазинах и на интернет площадках. Есть множество различных программ, которые без проблем работают с этим, народным, программатором. Так же в интернет магазинах имеет большое распространение программатор USB ISP, который схож по схемотехники с USB ASP, но отличается прошивкой и ПО, которое менее разнообразно и менее распространено.


Бывший программатор USB ISP, теперь USB ASP

Т.к. данные программаторы схожи схемотехникой — следовательно можно без особых проблем переделать и перепрошить ISP программатор в ASP, только для этого ненадолго понадобится ещё один программатор для AVR микроконтроллеров.

Зачем может понадобиться приобретать программатор ISP вместо ASP, а потом его перепрошивать:

  1. при покупки их можно перепутать
  2. продавец может ввести в заблуждение или сам перепутать
  3. в наличии остался только ISP
  4. у него оказалась более выгодная цена
  5. Вам USP ISP программатор достался в подарок

Собственно когда я приобретал второй программатор USB ASP для того, что бы он валялся на работе про запас, у продавца значился он, как ASP, а вот пришёл второй вариант. Что оказалось неприятным сюрпризом, к счастью не надолго.

USB ISP программатор очень похож на оригинал. Версий ISP программатора несколько, у них разные платы, следовательно может отличатся расположение перемычек, может немного отличаться схемотехника (не разбирался). Так же они бывают с разными контроллерами ATMega8, ATMega48, ATMega88.

Мне достался программатор USB ISP Version 2.0 с контроллером Atmega88V, маркировка на плате USB ISP mx-usbisp-v4.00. На его примере и покажу, как можно его превратить в распространённый USB ASP. Если у Вас другая версия программатора то его схемотехника, название и расположение перемычек могут отличатся. На официальном сайте USB ASP приведена принципиальная схема оригинального программатора, ссылка в конце статьи. С другими версиями программаторов USB ISP дел не имел, если встречусь — дополню статью.


Вид платы программатор USB ISP сверху


Вид платы программатор USB ISP снизу (уже модифицирован)

  1. Нужно раздобыть второй программатор.
  2. Нужно убрать перемычку B с обратной стороны платы (рядом с чёрным уплотнителем справа, на фотографии заметны следы моего вмешательства).
  3. Для замены прошивки программатора нужно будет установить прошивку UP (на время перепрошивки контроллера). Её можно припаять на время обновления, замкнуть острым пинцетом или установить любым другим способом. Данная перемычка соединяет линию сброса (reset) микроконтроллера с одноименным выводом на разъёме программирования. На схеме оригинального программатора эта перемычка имеет имя — Selfprogramming.
  4. Скачать прошивку под нужную версию контроллера с официального сайта USB ASP — http://www.fischl.de/usbasp/
  5. Подключить ПО ISP разъёму второй программатор.
  6. Перепрошить.
  7. Убрать перемычку UP.


Соединённые программаторы USB ISP и USB ASP

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

Alex_EXE | 30.09.2017 | AVR |

alex-exe.ru

Программаторы микроконтроллеров AVR | Avislab

Неболшой обзор используемых на практике программаторов для микроконтроллеров AVR. AVR ISP Prorgammer и USB программатор AVR / 89S совместимый с AVR910.

AVR ISP Prorgammer

Внутрисхемный программатор для программирования микроконтроллеров фирмы ATMEL®, как в условиях серийного производства, так и в процессе разработки и отладки изделий.

Программатор поддерживает следующие семейства кристаллов:

TinyAVR

ATtiny11L, ATtiny11, ATtiny12V, ATtiny12L, ATtiny13, ATtiny15L, ATtiny2313, ATtiny26L, ATtiny26, ATtiny28V, ATtiny28L

AVR

AT90S1200, AT90S2313, AT90LS2323, AT90S2323, AT90LS2343, AT90S2343, AT90LS4433, AT90S4433, AT90LS8515, AT90S8515, AT90LS8535, AT90S8535

MegaAVR

ATmega48, ATmega88, ATmega168, ATmega8, ATmega16, ATmega32, ATmega64, ATmega640, ATmega128, ATmega1280, ATmega1281, AT90CAN128, ATmega103, ATmega161, ATmega162, ATmega163L, ATmega169, ATmega8515, ATmega8535, ATmega2560, ATmega2561, ATmega325, ATmega3250, ATmega645, ATmega6450, ATmega329, ATmega3290, ATmega649, ATmega6490

Отличительные особенности:

– внутрисхемное программирование (не требуются дополнительные переходные панели, при этом выводы программирования используются в проекте)

– поддержка программатора популярными компиляторами AVRstudio, IAR AVR, Image Craft AVR.

– автоматическая верификация (100% гарантия соответствия зашитого кода исходному)

– высокая скорость программирования, возможность прошивки серийного номера кристалла

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

Схема этого простого, но надежного программатора:

Двусторонняя плата помещается в разъем:

Мне понадобился второй программатор, а описанный ниже USB программатор не мог шить нужный мне микроконтроллер. Поэтому я решил повторить этот LPT программатор.

Скачать схему и плату здесь.

Компьютерные тенденции таковы, что LPT порт скоро исчезнет. Поэтому пора присмотреть альтернативу.

Программатор микроконтроллеров AVR / 89S совместимый с AVR910 (USB программатор)

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

Здесь http://prottoss.com/projects/AVR910.usb.prog/avr910_usb_programmer.htm нашел наиболее подходящий вариант.

Убрав лишние детали,  немного переделал схему программатора под себя.
Получился вот такой винегрет:

Минус такой переделки – отсутствие предохранителя. Хотя, как показала практика, USB порт кротким замыканием спалить вряд ли удастся. По крайней мере, на моём компьютере не вышло, но экспериментировать не стоит.
Светодиод VL3 сигнализирует о подачи питания на программатор через порт USB. Светодиоды VL1, VL2 сигнализируют о чтении / записи программатора.
Джампер J1 – (MODify) служит для программирования микроконтроллера в новом программаторе. При его замыкании, к разъему ISP подключается внешний программатор и производится загрузка в МК программы.
После этот джампер необходимо разомкнуть и замкнуть джампер J2 – NORMal. Больше мы его не трогаем.
С помощью джампера J3 LOW SCK возможно понижать тактовую частоту порта SPI МК программатора до ~20 кГц. При разомкнутом джампере частота SPI нормальная, при замкнутом – пониженная.
Примечательная особенность, на вывод LED разъема ISP выведен меандр с частотой 1 МГц для “оживления” МК, у которых были ошибочно запрограммированы фьюз-биты, отвечающие за тактирование. ОЧЕНЬ полезная штука!

Прошивка FUSE BITS
Для нормального функционирования контроллера в схеме необходимо, чтобы были запрограммированы (установлены в “0”) биты SPIEN, CKOPT, SUT0 и BODEN. Обычно микроконтроллеры , идущие с завода, т.е. новые, имеют уже запрограммированный бит SPIEN. Остальные биты должны быть незапрограммированные (установлены в “1”).

Инсталляция
Windows 2000/XP/Vista/Seven 32-bit

Прошить контроллер. Подключить свежеиспеченный программатор к РС через свободный разъем USB. Операционная система найдет новое устройство – AVR910 USB Programmer, при предложении автоматически найти драйвер, отказаться, и указать путь к inf-файлу, в зависимости от установленной на вашем компьютере операционной системы.
В архиве с прошивкой имеется папка “AVR910.Driver” в которой расположены три директории для разных вариантов операционных систем:
-“2k_xp_32” – для операционных систем Windows 2000/XP 32-bit (используется штатный драйвер usbser.sys)
-“vista_xp_32” – Для операционных систем Windows XP/Vista/Seven 32-bit(usbser.sys + lowbulk.sys[32-bit] от Osamu Tamura)
-“vista_xp_64” – Для операционных систем Windows XP/Vista/Seven 64-bit(usbser.sys + lowbulk.sys[64-bit] от Osamu Tamura)

Особенности установки:

Windows 2000

В принципе, инсталляция не отличается от подобной для Windows XP, но есть одно НО – задержки в драйвере usbser.sys данной ОС портят цепочку команд от ПО на РС до программатора и, соответственно, цепь ответов обратно от программатора до ПО на РС… Проблему я пока не установил, но есть решение. Конечно не самое красивое, но работает надежно 🙂 Необходимо заменить файл usbser.sys в системных папках Windows 2000 на аналогичный от Windows XP. Это папки …\winnt\system32\drivers\ и …\winnt\system32\dllcashe\. Файл usbser.sys от Windows XP SP1 можно взять здесь. Естественно, что драйвер придется подменять загрузившись под другой ОС (например с загрузочного диска).

Windows XP/Vista/Seven 64 bit

Рекомендации по установке от Osamu Tamura (Recursion Co., Ltd.)

Чтобы использовать драйвера на 64 битной платформе, Вы должны отключить проверку цифровых подписей драйверов, нажимая функциональную клавишу F8 во время начала загрузки системы.
Второй вариант, использование программы “Driver Signature Enforcement Overrider“, которая подписывает драйвер как “testdriver” и активизирует “testmode”, таким образом, Вы можете загрузить драйвер без реальной цифровой подписи. Вы можете найти более детальное описание на странице программы, пройдя по ссылке выше.

Установка:
1. Загрузить “Driver Signature Enforcement Overrider“;
2. Запустите DSEO (инсталляция не требуется).
3. Выберите “Sign a System File”, нажмите кнопку “Next” и выберете файл avr910.usb.vista.xp.64.inf из директории …AVR910.Driver/vista_xp_64/.
4. Выберите “Sign a System File” еще раз, нажмите кнопку “Next” и выберете файл lowbulk.sys из директории …AVR910.Driver/vista_xp_64/.
5. Выберите “Enable Testmode”  и нажмите кнопку “Next”.
6. Перезапустите свой компьютер.

Оригинальные драйвера для AVR CDC от Osamu Tamura можно взять здесь.

Автор разработки: Рыжков Андрей aka PROTTOSS. Новокузнецк.

Вот что получилось у меня:

  

Программатор использую с программами AVRProg v.1.4 из пакета AVRStudio. На Windows XP Работают безотказно.

Программатор устанавливается как виртуальный Com-порт. Единственно, что нужно учесть, AVRProg проверяет порты от 1 до 4. Придется в диспетчере устройств передвинуть на порт до COM4, либо в настройках AVRStudio указать по какой порт искать программатор.

Схему, плату, прошивку и драйвера можно скачать здесь.

P.S. Когда мне нужно было прошить PWM контроллеры (AT90PWM3) то пришлось это делать с помощью старого доброго AVR ISP Prorgammer (через LPT порт), AVRProg v.1.4 не знает AT90PWM3. Не определенная ситуация складывается и с ATmega64.  Поэтому, основным рабочим программатором у меня остается ЛПТешный AVR ISP Prorgammer.

P.S.P.S. Не так давно знакомый купил этот USBasp программатор

Драйвера и ПО для него смотри здесь: http://www.fischl.de/usbasp/
Работает, при этом обрадовало отсутствие багов, замеченных у AVR / 89S совместимого с AVR910 (USB) программатора.

В статье AVRDUDE Windows описано ПО для работы с этими и другими программаторами.

Удачи!

Смотри также:

www.avislab.com

USBАSP программатор

В дополнение к обзору mysku.ru/blog/aliexpress/27674.html
Данный программатор USBASP V2.0 позволяет работать с любыми AVR контроллерами только в режиме ISP (In System Programming), т.е. является специализированным.

Пришёл программатор в пакетике с кабелем подключения.

Собран на базе ATMEGA8A, питается от порта USB, имеется стабилизатор 3,3V для некоторых контроллеров.
Описание и схема устройства на английском:
www.protostack.com/download/Users%20Guide%20%28AC-PG-USBASP-UG-V2.0%29.pdf
Дрвйвер
www.protostack.com/download/USBasp-win-driver-x86-x64-ia64-v1.2.5.rar


Подключается программатор к соответствующему разъёму для программирования ISP либо к адаптеру с панельками для установки микросхем контроллеров.
На плате распаяны 2 красных светодиода, показывающих состояние программатора. По идее, один светодиод должен быть зелёным, но они видимо неожиданно закончились 🙂
Питание 3,3V / 5V подаётся на порт ISP с программатора и переключается перемычкой JP1.
Также на плате есть нераспаянные перемычки:
JP2 — для обновления прошивки самого программатора.
JP3 — для установки медленного режима программирования (если тактовая частота программируемого контроллера менее 1,5MHz).

Я давно пользуюсь самодельной макетной платой с разводкой под любые DIP корпуса AVR. При желании можно найти готовую плату-адаптер с панелькой.


Удобнее всего программировать в самой среде разработки,
например Bascom AVR, но при желании можно найти отдельную программу, например SinaProg

Итог — полезное устройство любителям контроллеров AVR.

mysku.ru

alexxlab

leave a Comment