Меню

Avr isp своими рукам

Программатор AVRISP mkII на базе AT90USB162 (часть I)

Введение.

Возникла необходимость переделать ПТК Штрих-LIGHT-200 в АСПД Штрих-LIGHT-200. В процессе доработки, выяснилось, вместо привычной для Штриха ATMega128 с ISP интерфейсом, на борту была установлена ATXMega128A1 с PDI интерфейсом. Такого программатора в наличии не оказалось, соответственно варианта два: просить у коллег программатор прошить процессор, либо собрать программатор самостоятельно. Второй вариант показался сложнее — поэтому вполне очевидно, что мы выбрали именно его. За основу был взят AVRISP mkII на базе AT90USB162 для ATXMega128A1 предложенный коллегой Lion V на профсоюзе инженеров ККМ.

Сборка.

Скажем честно – основной проблемой стала именно плата, сперва по привычке попытались сделать навесным монтажом, идея оказалась хоть и реализуемой, но трудоемкой. Поэтому решили воспользоваться советом коллеги и сделать плату самостоятельно, по технологии ЛУТ, на всякий случай — наш опыт по изготовлению платы. Плата получилась не эталонного качества, но нас даже это устроило. В архиве платы двух вариантов DIP и SMD, мы выбрали SMD вариант

Схема клона программатора Atmel AVR MKII на базе AT90USB162

Сборка схемы не представляет сложностей, кварцевый резонатор 8МГц берется с ОКА102, резисторы 75, 300 Ом, не нашли откуда снять — пришлось покупать. Конденсаторы на 22 пФ не нашли, установили 27 пФ. В качестве PDI разъема используется USB разъем с материнской платы, он как раз по габаритам подходит. Длина проводников PDI разъема должна быть как можно меньше, у нас она 5 см.

Установка внутреннего ПО (новый микроконтроллер AT90USB162).

Данная методика верна только для установки ПО на новый микроконтроллер AT90USB162, для смены ПО процедура имеет некоторые отличия. При первом включении микроконтроллер AT90USB162 автоматически уходит в режим программирования, и не требует дополнительных операций для перевода в этот режим.
Программировать будем программой Flip (второе название программатор DFU Flip), которую устанавливаем на компьютер.
Подключаем собранный программатор к USB, система обнаружит новое устройство «AT90USB162 DFU» .

На этом этапе Windows 7 все сделал самостоятельно, Windows 2000 запросил DFU драйверы, которые находятся в папке «Atmel Flip usb», после установки драйверов устройство определится уже без ошибок и с другим названием «AT90USB162».

Запускаем программу Flip.


Окно программы Flip

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


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

После выбора микроконтроллера указываем тип подключения и факт подключенного устройства, для этого щелкаем по иконке с картинкой USB кабеля, в открывшемся меню выбираем тип интерфейса – USB, после чего появляется окно предложением открыть соединение с подключенным устройством, соответственно выбираем вариант «Open». При удачном подключении в StatusBar появится надпись «USB ON»


Указываем программе тип подключения, в нашем случае USB.

Выбираем файл для загрузки, в нашем случае вариант под кварцевый резонатор 8 мГц «AVRISP-MKII (8 MHz).hex». Тут важное замечание программа Flip в принципе не видит пути Windows, а понимает только DOS пути, на практике это означает, что каталог с файлом прошивки должен находится в директории с именем не более 8 знаков и в имени директории не должно быть кириллицы.

Читайте также:  Изготавливаем генератор своими руками

Правильный путь для загрузки файла прошивки. Файл загрузится.


Неправильный путь для загрузки файла прошивки, в пути к файлу есть директория с кириллицей «ПО». Файл не загрузится.


Ошибка загрузки файла прошивки при неправильном пути к файлу.

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


Окно программы после успешной загрузки файла и удачного подключения по USB интерфейсу.

Устанавливаем «галочки» Erase, Program, Verify и нажимаем клавишу «Run», при успешном программировании все radiobutton отмеченные checkbox должны гореть зеленым. После прошивки выдергиваем и снова вставляем разъем USB программатора. С этого момента программа Flip больше не будет видеть микросхему AT90USB162, а программатор теперь будет определяться системой как LUFA AVRISP MkII Clone, при этом на программаторе горят два светодиода, в нашем случае красный и желтый.


После программирования программатор будет определяться системой как LUFA AVRISP MkII Clone.

Что бы программатор виделся системой корректно, необходимо установить AVR Studio из него подтянутся USB драйвера. Windows 7 находит драйвера автоматически, Windows 2000 драйвера надо указать вручную, которые лежат в папке с установленным AVR Studio (у нас такой вариант c:\Program Files (x86)\Atmel\Atmel USB Drivers\).

Установка внутреннего ПО (ранее прошитый микроконтроллер AT90USB162).

После того, как микроконтроллер AT90USB162 будет прошит, для входа в программирование для работы с программой Flip необходима другая процедура.

— Подключаем плату через USB

— Замыкаем перемычку RESET на землю (24 нога на землю)

— Не снимая перемычки RESET, устанавливаем перемычку MOD (S1 замыкает 13 ножку на землю)

— Не снимая перемычки MOD, снимаем перемычку RESET (24 ногу отрываем от земли)

— Снимаем перемычку MOD (S1 в положение Normal, то есть 13 ножку отрываем от земли)

После этой процедуры в системе должно появиться устройство AT90USB162

и теперь снова будет работать программирование через USB с помощью программы DFU Flip. Если устройство AT90USB162 в Диспетчере Устройств не появилось, значит надо перепрошить bootloader.

Файлы.

Заключение.

Собранный программатор подключаем к плате Штрих-LIGHT-200, пытаемся прошить, и … ничего, AVR Studio выдает кучу предупреждений, но при этом отказывается шить плату. Материал по работе с программатором и разбором ошибок получился довольно громоздким, поэтому мы решили его выделить в отдельную часть.

Источник

Мегаклон программатор AVRISP MKII для микроконтроллеров AVR.

Долгое время я программировал микроконтроллеры AVR клоном программатором STK500. Он прекрасно уживается с AvrStudio4. И работает прямо из среды этой программы. Так что я программировал AVR чипы и был очень счастлив. Но время шло и появилась AtmelStudio5, потом AtmelStudio6 , и постепенно я переехал на более новую версию AtmelStudio6. Переехал не потому, что перестала устраивать AvrStudio4, а просто удобство писания прог на СИ в 6-ой версии, как мне показалось малек удобнее чем на 4-ке. Есть и подсветка синтаксиса и всплывающие подсказки ну и куча разных фишек при отладке.

Но к сожалению мой любимый программатор-клон STK500 работал с новой 6-ой версией через пень-колоду. То подключится, то не подключится. Ну и писал я поэтому проги на 6-ой версии, а зашивал чипы из под 4-ой. Со временем меня это достало. И я решил сделать себе новый программатор для 6-й версии студии.

Читайте также:  Волосы для кукол своими руками трессы

Требования к программатору были таковы:
1. Чтоб был прост, без лишних наворотов и не нужных примочек.
2. Чтоб работал надежно как кувалда, долго и счастливо.
3. Высокая скорость прошивания чипов. Ибо мой клон STK-500 не шибко быстрый.
4. Должен очень стабильно работать с AvrStudio4 и AtmelStudio6.

Рытье гугла привело меня к программатору AVRISP MKII. Далее я нарыл вагон схем этого программатора. Все нарытые мной схемы оказались похожи друг на друга, отличия были в мелочах. Из всех этих схем я соорудил свою схему, простую, без наворотов, без лишних кнопок и кучи мигающих светодиодов. Ну скажите пожалуйста, зачем мне аж 7 светодиодов на программаторе, если в самом окне программирования есть прогресс-бар показывающий сколько осталось до конца процесса программирования. Над прогресс-баром есть еще лог сообщений, в котором тоже пишется, что происходит с чипом. Ну и если что то не так с программатором, то сама студия выдает отдельное окно с сообщением в котором написано в чем проблема. Итак, я решил снести из схемы все эти светодиоды и кнопочки. Достаточно одного светодиода для визуализации процесса прошивания.

Срезал так же интерфейсы TPI(для некоторых Attiny) и PDI для Xmega, ибо не планирую в ближайшем будущем с ними работать. Пока Atmega хватает. Схема моего программатора вся на 5 вольт. Однако я уже несколько лет программировал своим древним STK500 на 5 вольт и схемы на 3.3 вольта, проблем не было, ничего не сжег. Но это уж сами решайте, шить таким образом или не шить. Кстати на выводах стоят гасящие резисторы, поэтому, по идее можно шить схемы с чипами запитанными на 3.3 вольта. Итак вот сама схема.


Как видим программатор получился 3 детали 2 запчасти. Вот и весь программатор.

Все конденсаторы керамические. Микроконтроллер ATUSB162-16AU я использовал б/у. Термофеном из какого-то устройства выпаял. Так как у меня есть старый программатор, то прошивку я залил им. И меня не сильно интересовало, есть ли в ATUSB162-16AU загрузчик. Но если вы собираете свой первый программатор, то с завода изготовителя в этих чипах ATUSB162-16AU стоит загрузчик. И можно залить прошивку в чип без программатора. Для этого надо воспользоваться программой скачанной у Atmel. Называется она FLIP. Таким образом, можно одним движением руки собрать этот программатор, не имея в наличии второго программатора. Проблема «курица и яйца» не возникает.

Вот сама плата.

Уже спаянная.

Вид сверху.

Готовый полностью.

Прошивку для программатора я взял из проекта LUFA. Понятно что там нет готового файла *.HEX для заливки в ATUSB162-16AU. Поэтому я скомпилировал его так, как писал об этом здесь. Но вам этого делать не надо, так как прошивка, разводка платы в (Sprint-Layout) и схема в нормальном виде в топике. Кстати, если не ошибаюсь, то вроде как загрузчик в ATUSB162-16AU работает на 8MHz, а сам программатор работает на 16MHz. Учитывайте это. Но в топике есть прошивка и для 8ми Мгц

Читайте также:  Звукоизоляционная прокладка для инсталляции своими руками

Грабли которые возникли при сборке и тестировании программатора: Граблей в общем то не возникло, поэтому особо писать нечего.

Настройки FUSE BIT для ATUSB162-16AU:
HIGH 0xD9
LOW 0xDE
Но если в чипе стоит загрузчик, то значения FUSE BIT будут другие.

Перед тем как втыкать программатор в USB порт вашего любимого компьютера, надо сперва поставить AtmelStudio6. Потом втыкаем программатор. Драйвера подхватываются автоматически. Если нет, то вручную указываем папку в которой находится установленная AtmelStudio6. Программатор я протестировал с AvrStudio4 и с AtmelStudio6.0, 6.1, 6.2. Тест происходил на Windows XP (32bit) и Windows 7 (64bit). В обоих случаях все поставилось и разу стало работать. На днях (16.12.2013) опробовал на Windows 8 (64bit), заработал как миленький.

Результат:
1. Схема получилась как и хотелось, с минимумом деталей. Для начинающих само то.
2. Испробован под 3 платформами WINDOWS. Нареканий не возникло.
3. Если честно, то я впечатлился скорости прошивания программатора. 54 кило прошивки программатор засандалил в кристалл за 4-5 сек (без верификации). Мой старый клон STK500 такой же объем прошивал где то за 60 сек.(без верификации). Разница в скорости прошивания явно очевидна.
4. Студии работают с ним, как с родным. Ошибок не появлялось пока не одной.

Так что считаю, что данный программатор достиг поставленных перед ним целей.

Вот видео-тест работы программатора с AvrStudio4 и с AtmelStudio6. На видео при тесте с AvrStudio4 винда глюканула малек. Она в принципе на том компе тормозит постоянно.

Так что, уважаемые начинающие радиолюбители и не очень начинающие, пробуйте. Надеюсь вам понравится. Желаю удачи.

P.S.
Забыл сказать. На схеме есть два вывода RESET. Так вот, чтоб прошивать чипы используем тот RESET, который прикреплен к ноге PB4. Аппаратный RESET используется только лишь один раз, при загрузке прошивки в ATUSB162-16AU другим программатором.

Попытался запустить данный программатор в связке AVRDUDE 5.11.1 с привлекательной утилитой AURDUDE_PROG 3.2. Но пока не работает. Возможно если получится нарыть причину, то напишу.

P.S. №2
Заметил что каждые пол года AtmelStudio обновляется следующим сервис паком. И после каждого такого обновления программатор отказывается работать, ибо не совпадает версия прошивки программатора с требуемой. И каждый раз приходится заново перекомпилировать проект из LUFA. Потом заливать новую прошивку в программатор. Версия прошивки меняется в файле V2ProtocolParams.h

Это несколько неудобно. Вот на днях обновил Studio, воткнул программатор, хрясь а он не работает. Ибо студия требует обновить прошивку программатора. Засада. Вот я решил сразу этот параметр firmvare_version_minor поменять с запасом на последующие обновления студии. Сделал его 0x50. Прошил, проверил все работает. Надеюсь этого надолго хватит. В аттаче лежат прошивки для кварца на 8 и 16 MHz.

Источник

Adblock
detector