Avrisp mkii программа для прошивки
Долгое время я программировал микроконтроллеры AVR клоном программатором STK500. Он прекрасно уживается с AvrStudio4. И работает прямо из среды этой программы. Так что я программировал AVR чипы и был очень счастлив. Но время шло и появилась AtmelStudio5, потом AtmelStudio6 , и постепенно я переехал на более новую версию AtmelStudio6. Переехал не потому, что перестала устраивать AvrStudio4, а просто удобство писания прог на СИ в 6-ой версии, как мне показалось малек удобнее чем на 4-ке. Есть и подсветка синтаксиса и всплывающие подсказки ну и куча разных фишек при отладке.
Но к сожалению мой любимый программатор-клон STK500 работал с новой 6-ой версией через пень-колоду. То подключится, то не подключится. Ну и писал я поэтому проги на 6-ой версии, а зашивал чипы из под 4-ой. Со временем меня это достало. И я решил сделать себе новый программатор для 6-й версии студии.
Требования к программатору были таковы:
1. Чтоб был прост, без лишних наворотов и не нужных примочек.
2. Чтоб работал надежно как кувалда, долго и счастливо.
3. Высокая скорость прошивания чипов. Ибо мой клон STK-500 не шибко быстрый.
4. Должен очень стабильно работать с AvrStudio4 и AtmelStudio6.
Срезал так же интерфейсы 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.
Сначала загружаем саму программу (скетч) самого бутлодера.
File - Examples - ArduinoISP - ArduinoISP
компиляция.
Прошивка самого бутлоудера из среды Ардуино через COM порт , которым управляем сам бутлодер, - это глупость.
Поэтому так не делаем:
Board - Arduino/Genuino UNO
Port - COM15
Programmer - AVR ISP
Burn Bootloader
Прошивать бутлодер надо не через USB-VCOM интерфейс!
Прошить бутлодер можно только через внешние программаторы - например AVRISP MKII
Родные драйвера от AtmelStudio Jungo для AVRISP MKII в среде Ардуино не подойдут:
Надо чтобы для среды Ардуино были установлены драйвера libusb-win32 для AVRISP MKII
Устанавливаем libusb-win32 driver для AVRISP MKII :
и получаем:
Отсоединяем обязательно USB
Board -> Arduino/Genuino UNO
Port -> неважно
Programmer - AVRISP mkII
Burn Bootloader -
Зачем-то чего-то компилирует куда-то ,а потом все-равно из каталога C:\Program Files (x86)\Arduino\hardware\arduino\avr\bootloaders\optiboot берет optiboot_atmega328.hex и прошивает именно его
Burn Bootloader - это удобно для восстановление бутлодера по умолччанию.
при Burn Bootloader получаем:
Это нормально загрузился бутлодер из каталога C:\Program Files (x86)\Arduino\hardware\arduino\avr/bootloaders/optiboot/optiboot_atmega328.hex
Теперь вместо программы бутлодера просто загрузим программку мигания диодом
Прошивать надо теперь так:
Board -> Arduino/Genuino UNO
Port -> неважно
Programmer - AVRISP mkII
Upload Using Programmer !
И о чудо - все мигает как надо !
Кстати компилили мы туда:
C:\Users\p\AppData\Local\Temp\arduino_build_227975\ArduinoISP.ino.hex
C:\Users\p\AppData\Local\Temp\arduino_build_227975\ArduinoISP.ino.elf
C:\Users\p\AppData\Local\Temp\arduino_build_227975\ArduinoISP.ino.eep
а шьем
C:\Program Files (x86)\Arduino\hardware\arduino\avr/bootloaders/optiboot/optiboot_atmega328.hex (дата 02.10.2017г.)
Ну и теперь путь открыт к прошивке любой платы Atmega например контроллер Atmega128A AU на плате ККТ Штрих-ФР-К имеет ARVISP MKII 6-пиновый разъем.
Мегаклон программатор AVRISP MKII для микроконтроллеров AVR
Если есть желание сэкономить на покупке оригинального устройства, но получить полную функциональность, то предлагаем схему мегаклона программатора AVRISP mkII .
- Микроконтроллер AT90USB162 – 1шт.
- Светодиоды на 2,25В, 15 мА, цвет красный – 7 шт.
- Стабилизатор напряжения для поверхностного монтажа, входное напряжение до 15 В, выходное 3,3 В, 1000 мА – 1 шт.
- Кварцевый генератор 16 МГц – 1 шт.
SS12 – 1 шт. - SMD конденсаторы 18 пкФ – 2 шт., 100 нФ – 2 шт., 10 мкФ – 3 шт.
- SMD резисторы 10 кОм – 1 шт., 220 Ом – 8 шт., 1 кОм – 3 шт., 470 Ом – 7 шт., 20 Ом – 2 шт.
- SMD предохранитель 63 В, 500 мА – 2 шт.
- Резистор с выводами 0,25 Вт, 220 Ом – 3 шт., 10 кОм – 1 шт.
мини-USB – 1 шт., ВН10 – 1 шт.
PS с фиксацией, 30 В – 2 шт. - Кнопки SWT-5 без фиксации, 12 В, 50 мА – 4 шт.
Плюсом микросхемы является наличие встроенного загрузчика, что позволяет не использовать другой программатор для прошивки. Для обновления прошивки используется программа FLIP от Atmel. Скачивая программу здесь , обратите внимание на наличие встроенного JRE. Рекомендуем устанавливать программу с included JRE во избежание проблем.
Программа есть, теперь нужна прошивка.
Вы можете скачать готовую прошивку c сайта разработчика LUFA. Вам потребуется :
- В Atmel студии вызвать командную строку (у меня в седьмой версии Tools-CommandPromt). Написать cd (диск куда распакован архив):\lufa-master\ Projects\AVRISP-MKII\make all
Пора переходить к записи её в программатор. Для этого запускаем программу FLIP.
- Загружаем прошивку через File -> Load HEX File…
- Выбираем микроконтроллер через Device -> Select (или пиктограмму) AT90USB162.
- Зажимаем кнопки HWB и Reset Programmer на устройстве.
- Подключаем программатор к usb порту ПК.
- Нажимаем на пиктограмму USB.
- Нажимаем Run.
Инсталляция драйвера программатора AVRISP mkII под win7
Для работы программатора необходим драйвер usb порта, поставляемый с программной средой Atmel STUDIO. Поэтому придётся установить её на компьютер.Версия Atmel студии 6.2 работает на операционных системах Win7 и выше (включая серверные версии от 2008 SR2), 32- и 64-битных. Минимальные требования к аппаратной части ПК невысоки и заключаются в наличии процессора с частотой 1.6 Гц и ОЗУ 1 Гб для 32-битных, 2 Гб для 64-битных операционных систем. Загрузить актуальную сборку студии или драйвер можно здесь .
Драйвер для USB идёт в комплекте с Atmel студии и должен быть установлен до подключения программатора к ПК. Посмотрим, как это выглядит на примере Win7 + AtmelStudio 7. Запуск и сам процесс установки стандартен для Windows-приложений, и при подготовке к инсталляции появляется такое окно.
Ещё один момент – драйвера Atmel не имеют цифровой подписи, а для Win7 её наличие обязательно, иначе драйвер не будет установлен.
Чтобы не тратить кучу времени на переустановку программы и выявление причин проблемы, а гарантировано достигнуть успеха с первой попытки, предлагаем следующий алгоритм действий:
- Использовать чистую ОС для установки. Подходящим вариантом будет использование виртуальной машины с ОС Win7, например, VMware Workstation или VirtualBox.
- Отключить проверку цифровой подписи драйверов. Для этого нажать комбинацию клавиш Win+R и ввести в строку gpedit.msc. Далее открываете параметр, как на рисунке ниже.
- Два раза щёлкнув по параметру «Цифровая подпись драйверов устройств», выбрать в открывшемся окне «Отключить» и подтвердить кнопкой «ОК». Перезагрузить компьютер.
- Запустить установку Atmel студии от имени Администратора .
Если вы будете использовать программную среду AVRDude, то придётся поменять драйвер для подключения. Делается это быстро при помощи программы Zadig , являющейся менеджером USB драйверов. Установив программу, выберите в списке AVRISP mkII и замените на libusb-win32 (v1.2.6.0).
Инструкция по использованию программатора AVRISP mkII
Порядок работы из среды Atmel студия описан в соответствующих руководствах и не отличается для оригинального устройства и мегаклона.Кратко рассмотрим органы управления и индикации программатора.
- Кнопка S5 Reset Programmer перегружает устройство.
- Кнопка S1 Reset ISP/TPI перегружает интерфейсы соответствующие программирования.
- Кнопка S2 Reset PDI служит для перезагрузки интерфейса PDI.
- А вот кнопка S3 HWB, как уже упоминалось ранее, необходима при обновлении прошивки устройства.
- Кнопка S4 PDI on необходима для включения PDI интерфейса.
- Для выбора напряжения 3,3/5 В служит кнопка S6.
D3 – наличие питающего напряжения (от USB).
D4 – ошибка связи USB.
D5 – готовность интерфейса USB.
D6 – наличие напряжения целевого устройства.
D7 – статус работы (в порядке).
При работе с программной средой важно учесть несколько замечаний.
- Есть возможность подключать несколько программаторов к одному компьютеру.
- Каждая копия Atmel студии может работать только с одним программатором. Для работы нескольких, запускайте необходимое количество копий программы.
- Чтобы среда разработки не пыталась постоянно обновлять версию прошивки, удалите файл \tools\AVRISPmkII\avrispmkii_fw.zip из директории программы.
- Недостаточное питание от usb порта. Попробуйте сменить порт или использовать usb хаб с автономным питанием (500 мА на выходе).
- Частые сбои при программировании могут быть обусловлены высокой частотой ISP. Для устранения неполадки понизьте частоту ISP в настройках Atmel студии.
Заявка на поставку импортных микросхем
Кроме этого, мы выполняем полный комплекс услуг по организации проверки и испытаниям электронных компонентов импортного производства , включая входной контроль, проверку на работоспособность, а также специальные проверки, механические и климатические испытания.
На нашем форуме уже была инфа про то, что платы Arduino Leonardo, Micro и ProMicro легко переделываются в программатор AVRISP MKII. Но никаких подробностей никто не рассказывал, хотя очевидно, что это будет интересно всем. Мне как раз нужен был программатор для АтмелСтудии, и я на выходных разобрался сам, и результатами хочу поделиться.
Есть такая библиотека "LUFA" для МК с USB на борту, в ней куча примеров работы через USB, один из которых собссно наш программатор. Но есть одна засада, те исходники что выложены не работают с atmega32u4 на котором собраны все вышеупомянутые ардуины. Хотя официально нигде про это не написано. Но оказывается есть некая подпаченная версия исходников, которая с этим мк работает. Уже не помню, где я её нашёл, главное с ней всё завелось без проблем.
В чём плюсы этого программатора -он умеет шить все AVR, работает в разных программах, а главное в atmel студии и конечно с avrdude. Правда были какие-то версии avrdude с которыми он не работает, но с последней 6.3 точно работает. Это нужно учитывать. Последний avrdude так же используется в ArduinoIDE 1.6.12 Так что с ним так-же удобно работать, с тиньками можно просто нажимать кнопку "загрузка" без выбора пункта "загрузить через программатор"
Программатор быстрый, и у него нет заморочек с джамперами что б читать медленные МК. Учитывая что дешевая плата промикро стоит сейчас порядка 200 рублей, и кроме неё больше в принципе ничего не нужно -программатор получается ещё и очень дешевым. В общем очевидный конкурент народному программатору USBAsp. На фото -прошивка тини25 ардуиной микро в качестве программатора avrisp mk2
Схема подключения проста:
Все выводы ISP на программаторе соединяются с одноимёнными на программируемом чипе кроме Reset,
его нужно подключить на вывод 8 (portb,4). Ещё можно измерять напряжение на программируемом чипе (в атмел студии) для этого вывод А5 (ADC0) подключить к целевому MK, при условии конечно что он питается от своего источника. Иначе будет измеряться напряжение с программатора.
Ардуино MICRO/LEONARDO | ЦЕЛЕВОЙ МК |
MISO | MISO |
MOSI | MOSI |
SCK | SCK |
pin8 (PB4) | Reset |
Gnd | Gnd |
Vcc | Vcc |
A5 | Vcc* |
На фото работа с модулем программатора в атмел студии 7.
Прошить ардуино микро можно без программатора, собственным её загрузчиком. Например воспользоваться avrdude и командной строкой :
Читайте также: