Программатор — важнейший инструмент разработчика устройств на микроконтроллерах. Можно даже сказать — главный инструмент, я думаю, доказывать это никому не нужно. Для своих первых конструкций я собирал известный всем STK-200, который работает исправно и надёжно и по сей день. Всем он хорош: и простотой изготовления, и отсутствием дефицитных дорогих комплектующих, и, конечно, поддержкой множества средств разработки. Но наряду с этим у него два больших недостатка: необходимость портов LPT или COM, и невысокая скорость записи (считывания). В современных ноутбуках, как правило, вышеуказанных портов нет, они довольствуются USB. ?, хотя, можно собрать преобразователь интерфейса COM — USB, благо схемных решений хватает, но проблема скорости записи (считывания) остаётся, и с этой проблемой сталкиваются все, кто движется по лестнице освоения микроконтроллеров вверх))) Для работы в оболочке Algorithm Builder собирался программатор Громова — простейшая и надёжная конструкция. Он тоже отлично работает, но ему присущи те же недостатки, что и для STK-200. В последующем изготавливались пару экземпляров USBasp. Этот программатор работает в общем-то довольно шустро, к тому же с ним можно работать прямо не выходя из редактора Programmer Notepage пакета WinAVR , но частенько отмечалась нестабильная работа. Причём закономерности сбоев я так и не увидел — это могло зависеть и от компьютера и от конкретного типа или даже экземпляра микроконтроллера. Кроме того записывать фьюзы с помощью USBasp в Programmer Notepage довольно муторно — нужно вручную прописывать в makefile проекта. Есть оболочка для работы с USBasp, называется она USBASP_AVRDUDE_PROG, но там список поддерживаемых контроллеров достаточно скуден((( На странице сайта товарища Medved я обнаружил описание его варианта клона AVRISP mkII, который разработал Dean Camera в рамках своего проекта LUFA. Плату я перерисовал в Sprint Layout, добавив по совету Medved светодиод активности программатора. Также добавил джампер для отключения питания программируемого контроллера от порта USB, т.к. изначально планировал его использовать для прошивки контроллеров семейства ATXmega (об этом ниже). Печатную плату сделал методом ЛУТ, который прекрасно описан здесь товарищем DI HALT. Собрал программатор, получилось вот что.
Прошивать AT90usb162 через бутлоадер мне не захотелось, и вот по какой причине. Т.к. придётся менять фьюзы (по умолчанию включен CKDIV8), всё равно нужно подключаться к каком-нибудь программатору. А если это так, то и прошится лучше сразу через ISP. Решил всё это сделать через CVAVR программатором STK-200. Подключился – и тут первая засада – CVAVR не видит контроллера. Пораскинул мозгами, прочитал ещё раз соответствующую ветку у Medved. Ага, вывод RESET не тот, что нужен. Бросил RESET с колодки ISP прямо на кристалл отдельным проводником. Кликаю «read chip signature» — всё в порядке, кристалл читаеться. Решил сначала прописать фьюзы, но поскольку в CVAVR почти не работаю, набокопорил и отключил вывод RESET, к тому же затактировал чип от внешнего источника)))) Полный набор! С досады хотел выкинуть уже всю плату в мусорку, но вспомнил, что полтора года назад разрабатывал приборчик под громким названием «Реаниматор для AVR» (в своё время я его выкладывал на Радиокот). Это устройство исправляет криво настроенные фьюзы по умолчанию, т.е. как указано в даташите. ?, хоть делал я его по алгоритму, описанному для ATmega8, но он лихо реанимировал ATmega8535, 16, 32, 8515. Раз такое дело, терять нечего, то решил испробовать его и на залоченой AT90USB162. В исходнике для Реаниматора поменял значение младшего фьюза (старший, где находится и RSTDSBL, оказался таким же как и в меге8). Самой мозготёркой оказалось подпаяться к ногам USB162-й на плате, но я мужественно это преодолел))) Подаю питание, дрожащей рукой нажимаю кнопку «Перезапись», и, о чудо !!! – загорелся зелёный светодиод «Done». Реанимация принесла свои плоды, работоспособность по ISP восстановлена. После этого вдумчиво настроил фьюзы, залил прошивку. Подключил клон к своему нетбуку. Нетбук, как ему и полагается обнаружил новое устройство, сам установил драйвера и выдал сообщение, что устройство готово к работе. Зашёл в AVRStudio, законнектился с первого раза, начал проверять… Уважаемые коллеги, впечатления самые, что ни есть лучшие! Шьёт, читает с несравнимой с USBasp скоростью! Работа стабильная. Отмечу один момент. На вкладке main окна AVRISP
есть кнопочка Settings. Под ней указана частота работы программатора по ISP. Так вот эта частота, должна быть не более четверти от частоты, на которую настроена работа, программируемого Вами контроллера с помощью фьюзов. Т.е. если контроллер работает на 1 МГц , то выставленная с помощью вышеуказанной кнопки Settings частота ISP не может быть более 250 кГц, контроллер просто на будет видится программатором и студия будет выдавать, что-то типа:
Это требование нужно обязательно учитывать. Проверял на чипе с внешним кварцем 16 МГц, устанавливал частоту ISP 4 МГц – работает великолепно! Прошивку можно скачать хоть на LUFA, хоть у Medved.
Ну, и напоследок пару слов о режиме PDI, необходимом для работы с семейством Xmega. Как выяснилось после обращения к первоисточнику LUFA, товарищ Medved в своей схеме просто не вывел соответствующие ноги интерфейса PDI с контроллера. Но мы его за это ругать не будем, поскольку его статья оказалась толчком к новым исследованиям))). А славянская привычка читать инструкцию по эксплуатации и техописание после того как уже всё сломано (имею в виду себя) заставит меня в ближайшем будущем доработать печатку и собрать ещё один AVRISP mkII, т.к. осваивать Xmega просто необходимо.
Да, народ на форумах жалуется, что AT90USB162 пропали из продажи. Посмотрел на «Космодроме» — действительно исчезли, но остались 82-е. Так вот, если удалось достать любой микроконтроллер AVR c аппаратным USB (AT90USB82, ATmega16USB и др.), то LUFA для этих случаев приводит исходники. Поменять тип контроллера, перекомпилировать заново и зашить не составит труда. Успехов, друзья!



Отличная работа 🙂
А вот возможность комментить незарегистрированным пользователям, лучше включить!
Спасибо:) Сайтосторением раньше не занимался, поэтому много не знаю — учту.
Будьте добры, выложите пожалуйста, печатную плату
Выложил:) Качайте на здоровье! Удачи!
Некоторый ахтунг по поводу совета использовать AT90USB82…
Читаем файл AVRISP-MKII.txt в проекте LUFA… видим авторское предупреждение «While this application can be compiled for USB AVRs with as little as 8KB of FLASH, for full functionality 16KB or more of FLASH is required. On 8KB devices, ISP or PDI/TPI programming support can be disabled to reduce program size».
Сергей.
Вы правы, Сергей))) Если воспользоваться 82-й мегой, то какой-то из режимов — либо ISP, либо PDI нужно исключить. После компиляции полного варианта выходит 9940 байт флеша. Для реализации ISP проще всего в файле XPROGProtocol.c закомментить содержимое функций, т.е. не удалять, а оставить пустыми, и можно смело компилить под 82-ю. Куплю данный кристалл — отпишусь по результатам. Спасибо за справедливое замечание))).
Здравствуйте! Собирал программатор по вашей схеме, только с не большими изменениями под smd . Спаял, подключил и винда пишет, что устройство не определено, попробовал снова подключить, определила как AT90USB162. Установил драйвера, в диспетчере устройств появилась строчка Atmel и AT90USB162, только почему то в инструкции по установки драйверов в папке Flip’a такой строчки нету,и выглядит она как и тут http://microsin.ru/content/view/685/44/
Решил прошить через Flip и когда выбираю Select a Communication Medium — usb — open выдает сообщение Could not open usb device.
Если Вы знаете в чем проблема, то подскажите пожалуйста, а то я уже совсем отчаялся, не знаю то ли когда плату переделывал ошибся, то ли спаял криво((((
Уважаемый Sans! Я прошивал не через бутлоадер, а через ISP программатором STK-200, используя Code Vision — мне так показалось проще, ведь всё равно нужно установить фьюзы тактирования на внешний кварц (только для работы ISP нужно бросить временную перемычку с 5-й ноги ISP-разъёма на RESET непосредственно контроллера). Да и для работы по бутлоадеру нужно было вывести на плате две кнопки — с RESET-а и вывода HWB на корпус для выхода в этот режим:
— нажимаем кнопку SW1 RESET
— удерживая кнопку SW1 RESET, нажимаем кнопку SW2 HWB
— удерживая кнопку SW2 HWB, отпускаем кнопку SW1 RESET
— отпускаем SW2 HWB
это цитата с microsin.
Программируйте через ISP — мой вам совет. Удачи!
Собрал программатор, тоже кое где переделал плату под смд, программировал через ISP. Проверил с микроконтроллером Atmega8 на CodeVisionAVR и AVR studio, все классно работает!
На днях с «Космодрома» должны прислать AT90USB82. Попробую её в AVRISP mkII. О результатах отпишусь. Всем удачи!
Здравствуйте!
А можете добавить информацию о правильных установках FUSE (допустим скрин из CVAVR), чтобы другие не ошибались при программировании.
Заранее спасибо.
По умолчанию фьюзы такие: CKSEL = «1110», SUT = «01», CKDIV8 = «0». — нужно перепрограммировать CKDIV8 — записать туда 1, т.е. отменить деление на 8.
Здравствуйте!
Негде нету схеми данного програматора с TPI/PDI раземами!! Оч нужно!! Помогите найти!
PDI_DATA — это соединённые вместе через резисторы 390 Ом выводы RxD1 и TxD1, а PDI_CLC — XCK, т.к. PDI реализован на USART. Загляните сюда: http://clock.cc.ua/
Спасибо большое за Вашу статью…
? все-таки, хотелось бы уточнить применение для программирования xMega…
Ведь xMega, как я понял, имеют питание до 3.6 Вольта, а AT90USB162 питается от 5 Вольт. Можно ли подавать 5-вольтовые сигналы на xMeg-у? Если нет, то как с этим бороться?
Заранее спасибо!
Прошу прощения… Посмотрел внимательно на схему.
http://avrdevices.ru/usb-programmator-dlya-avr/
Там контроллер питается от Ucap, как я понимаю, это 3.3 Вольта. То есть, с уровнем сигнала все должно быть в порядке.
Кстати, увидел новую версию:
http://avrdevices.ru/analog_avrisp_mkii_v20/
Там использован кварц на 16 МГц. При этом допускается питание разным напряжением 3.3/5 Вольт.
Можно ли питать контроллер от выхода LM1117IDT-3.3 ?
Будет ли при напряжении питания 3.3 Вольта работать на 16 МГц?
Здравствуйте, David! Отвечаю на Ваши вопросы. Обращаю Ваше внимание, что в данном варианте программатора, равно, как и в описанных на avrdevices, не выведены необходимые для режима PDI (программирование Xmega) выводы. Если Вы соберёте полный вариант (и для ISP, и для PDI), то при программировании Xmega снимайте джампер, подводящий питание к разъёму программирования (если это будет 5В), а схему с Xmeg-ой питайте отдельным источником 3,6В. Не обязательно использовать кварц 16 МГц — поставьте 8 МГц, сделайте изменения в mikefile, перекомпилируйте и заново зашейте. С выхода LM1117IDT-3.3 питать можно, но правильно подключитесь (стр. 186 даташита AT90USB162). В даташите написано:• Maximum Frequency
– 8 MHz at 2.7V — Industrial range
– 16 MHz at 4.5V — Industrial range
хотя я думаю, что работать на 16 Мгц от 3,3В будет — нужно проверять на конкретном камне. Удачи Вам!
Собрал, 16 Мгц 3,3В работает нормально, прошил 128 мегу
А вот кто сможет объяснить предназначение всех джамперов? Заранее спасибо
? ещё, у тебя нету схемки???
Джампер на 13-й ноге — управление загрузчиком. Второй джампер коммутирует напряжение питания на программируемую плату. Ссылка на схему указана в статье. Удачи!
Спасибо.
Вот моё устройство
http://upwap.ru/1362108
http://upwap.ru/1362105
Последовательность действий:
Установил драйвера
Во флипе выбрал хекс файл и нажал Ран
Когда прошилось, нажал Старт Апликейшен
Устройство определилось
В студии тоже оно нашлось
Вопрос в том что я не закидывал файл ЕЕПРОМ и не выставлял фьюзы. Как это можно сделать? Помогите плз, вся работа стоит)
Спасибо.
Последовательность действий:
Установил драйвера
Во флипе выбрал хекс файл и нажал Ран
Когда прошилось, нажал Старт Апликейшен
Устройство определилось
В студии тоже оно нашлось
Вопрос в том что я не закидывал файл ЕЕПРОМ и не выставлял фьюзы. Как это можно сделать? Помогите плз, вся работа стоит)
EEPROM и фьюзы запрограммируйте в Code Vision (он поддерживает AT90USB162) через STK-200.
То есть сторонний программатор так и так нужен?
Цитата из статьи: …Т.к. придётся менять фьюзы (по умолчанию включен CKDIV8), всё равно нужно подключаться к каком-нибудь программатору. А если это так, то и прошится лучше сразу через ISP…
Здравствуйте.
Разрешите поинтересоваться, какие успехи у автора с AT90USB82 в AVRISP mkII?
Здравствуйте! Готовлю расширенную статью по вышеописанному программатору. Общался по «мылу» с автором LUFA — кое что он мне подсказал. 82-ю мне прислали, блин, в MLF-корпусе (5х5 мм!), но программатор успешно собран))) ?дут испытания — скоро отпишусь.
Позавчера приехали микросхемы. После двух дней мучений все заработало. ?спользовал кварц 16 МГц и питание 3.3 Вольта.
Правда, когда попытался подать на входы Vcc и AVcc 3.3 Вольта от внешнего стабилизатора 2950A, а на UVcc подал 5 Вольт с питания USB, то ничего не работало. Но потом сделал питание от Ucap (по схеме) и все заработало.
Большое спасибо!
Добрый день
Добавьте пожалуйста информацию о правильных установках FUSE (в CVAVR), только напишите напротив какого фьюза ставить галочку, объясните на пальцах проще говоря.? если есть возможность дайте схемку на которой указано какие элементы использованы.
Заранее спасибо.
Если кристалл новый (что скорее всего у вас и есть), то считайте значения фьюзов, и напротив фьюза CKDIV8 измените значение на противоположное. Элементы используйте ЛЮБЫЕ малогабаритные.
Уважаемый Sans, подскажите пожалуйста назначение перемычки, которая подтягивает ногу PD7 к земле, зачем она нужна?)
? еще один вопрос: я поставил кварц на 8МГц и прошил через FLIP прошивкой с сайта Medved-а, нужно ли еще что-нибудь делать? Просто не имею возможность прямо сейчас опробовать приборчик, т.к. надо еще изготовить кабель для соединения программатора с тем разъемом, который я использую в своих проектах.
Я отвечу за Sansa, если он не против))) Перемычка нужна для запуска бутлоадера. После прошивки через FLIP Вам нужно правильно выставить фьюзы. Выше по ветке всё написано. Удачи Вам!
Фьюз CKDIV8 выставил, как надо. Теперь новый, очень глупый вопрос 🙂 Хочу затестить девайс, какой прогой можно воспользоваться? Я хочу просто прочитать содержимое ATmega8. Попробовал SinaProg — почему-то не получилось.
Глупых вопросов не бывает, а вот ответов…))) Пользуйтесь AVRStudio — качайте с атмеловского сайта. Удачи.
Урааа!!! Все получилось и работает 🙂 По крайней мере данные читаются / фьюзы прошиваются. STK200 послужил мне верой и правдой 2 года, надеюсь этот будет не менее надежен 🙂 Наконец-то можно прямо с ноута прошивать новые контроллеры! раньше мог делать это только через bootloader, но его еще надо откомпилить и прошить! Спасибо авторы за статью и s_black за подсказки!
Пожалуйста! Но я и есть автор, поэтому мне два спасиба))) Успехов в начинаниях!
Оу, сори я сначала пишу, потом читаю… Буду двигаться дальше и следить за минералами сайта!
Сделал, а подключить не выходит — не видит его студия. Все пишут о драйверах. Где их взять??
Драйвера уже установлены в Студии. ?щите ошибку монтажа или назначение ног в исходниках.
доброго времени суток!
разработка отличная на вид. все спаял, решил прошить через isp при посредстве code vision. все нормально, нашелся, определился, но при заливке стал выдавать ошибки что-то в стиле «по адресу такому -то type mismatch. ошибок таких много. что бы это значило?
Точно сказать тяжело((( Посмотрите монтаж.
Все нормально, правда, так и не понял, почему. прошил через другой code vision, кстати более ранней версии. прошилось тоже с третьего раза. всегда такая нестабильная работа с микроконтроллерами?
однако, программатор работать под code vision все равно отакзывается. под avr studio 5 — работает отлично.
спасибо за статью, это мой первый программатор, который сделан по вашей схеме и печатке.
Мой Вам совет — выбросьте КодВижн в топку! Мало того, что там синтаксис С перекручен, так ещё и генератор начального кода голову думать отучает! А с прошивкой фьюзов я тоже попал (см. статью выше). Хотя, конечно, выбор платформы дело личное — прямо вижу горящие взоры эмбеддеров, пользующих CV)))
Завсегда пожалуйста!
Ох и завёл всех в заблуждение s_black
Цитата: Прошивать AT90usb162 через бутлоадер мне не захотелось, и вот по какой причине. Т.к. придётся менять фьюзы (по умолчанию включен CKDIV8), всё равно нужно подключаться к каком-нибудь программатору.
На самом деле абсолютно всё-равно в каком состоянии фьюз CKDIV8, так как
он отключается программно в прошивке. В итоге никакие фьюзы изменять не надо, а значит прошивать можно через бутлоадер смело.
Здравствуйте! Т.к. варианты прошивок я видел с частотами 8 и 16 МГц, то, соответственно CKDIV8 отключать всё равно нужно. Если Вы приведёте мне кусок кода где показано как отключается этот фьюз программно, я с удовольствием Вам скажу — да, дружище, Вы абсолютно правы, программатор можно не подключать вообще. Но даже, если это окажется и так, статья изначально называется «…. опыт (т.е. МОЙ опыт) изготовления….», а не «Руководство по изготовлению…»
Прежде всего ссылка на исходники: .
В файле Projects\AVRISP-MKII\AVRISP-MKII.c из функции main первой командой идёт вызов SetupHardware(), из которой, в свою очередь вызывается clock_prescale_set(clock_div_1) (которая и является установкой деления частоты на 1).
Я уже благодарил за статью, очень дельная, я по ней сделал свой первый программатор. Тогда же я пожаловался, что при прошивке codevision то ругается, то нормально работает. недавно делал товарищу такой же программатор и понял в чем дело, если hex файл в папке, названной не латиницей — прошивальщик будет недоволен.
Да, это распространённые грабли. Я недавно в Кейле чуть голову не сломал — всё не мог понять почему проект не собирается. Причина оказалась такая же — путь к workspace лежал через папку с названием Мои документы.
А AVRStudio 5 увидит этот программатор?