День программатора...

Обратил внимание, что как-то незаслуженно редко упоминается AVR ISP MkII. Хотя его конструкция предельно проста (если не наворачивать лишнего), он не страдает от проблемы «курицы или яйца» (следовательно годится для новичков), его знают все (имеются в виду программы), а скорости его работы может позавидовать любой другой программатор. Попробую восполнить этот пробел…

Собственно, схема программатора примитивная (в аттаче), по сути это (почти) минимально возможный вариант включения AT90USB162, пара светодиодов и разъем. Плата простая как угол дома, один слой, 0.2мм нормы, так что должна нормально делаться типовым процессом на фоторезисте. Да и с ЛУТ-ом, скорее всего, проблем не будет. Резисторы/конденсаторы — 0603, кварц — «лодочка» KX-3. Плата весьма небольшая, так что я не видел смысла городить коробку, а просто «одел» ее в термоусадку:

Из особенностей схемы стоит отметить использование на входе STF202. Помимо того, что она защищает вход и занимает места не больше, чем пара резисторов, у нее есть еще одна полезная особенность: она включена так, что устройство опознается как Full Speed. Врядли это влияет на скорость прошивки, но однозначно положительно сказалось на стабильности работы связки программатор-avrdude. Некоторые контроллеры (например, ATmega32) шьются даже с указанием -B1 (максимальная скорость), так что ~14К прошивки пишется за секунду, чтение и того меньше. Надеюсь, новичков не отпугнет малознакомое название микросхемы, на самом деле она не является редкостью и стоит, вобщем, копейки (~2.80грн в розницу в IMRAD-е, а космодром берется привезти их менее чем за две гривны мелким оптом).

Обращаю внимание, что номера контактов на схеме «зеркальные» (поменяны местами четные и нечетные контакты) по отношению к стандартному AVR ISP разъему (так что ориентироваться на схему как на справочник не нужно :) ). Это сделано из-за того, что штатно в плату паяется не привычный «папа» под шлейф, а «мама» (см.фото выше). С этой же целью разъем выведен на длинную сторону платы, а не на короткую. С такой конфигурацией в большинстве случаев программатор можно ставить прямо в разъем целевой платы, избавляясь от лишних проводов. Если же, все-таки, становится нужен шлейф, то на выручку приходит еще один непаянный «папа», который вставляется как показано на фотке ниже, а на его контакты одевается шлейф. Таким образом получается удобное универсальное решение. Ну а если, все-таки, вы предпочитаете шлейф, то углового «папу» можно запаять прямо на плату со стороны компонентов.

Как я уже писал, у этого программатора нет проблемы «курицы и яйца», то есть «чем запрограммировать программатор». В микросхемах серии AT90USB и ATmega16/32U4 имеется прошитый с завода DFU bootloader. Его можно включить принудительно, прижав к земле вывод HWB и сбросив контроллер, но изначально (в смысле в микросхеме, которой еще не касался программатор) он включается автоматически без дополнительных движений. Так что для того, что бы прошить свежеспаянный программатор достаточно воткнуть его в USB и воспользоваться утилитой Flip (брать на атмеловском сайте) в винде, либо воспользоваться dfu-programmer в линухе. После успешной прошивки программатор надо отключить и снова подключить к USB, что бы устройство было перенумеровано заново. После этого программатор обнаруживается и готов к работе.

Схема, плата и прошивка в аттаче. Заодно положил туда makefile и файлы описания платы для тех, кто захочет поэкспериментировать с прошивкой. Что бы собрать прошивку достаточно взять свежую версию LUFA, добавить, по аналогии с имеющимися, файлы описания платы из аттача и поправить makefile по аналогии с тем, что в аттаче. Прошивка самая минимальная (поддерживается только прошивка по ISP), поскольку остальное мне было не нужно. Из-за этого минимализма прошивка легко помещается даже в AT90USB82. Простота схемы и платы дают широкое поле для экспериментов и расширений. Например, если соединить резистором (~100-200 Ом) PD2 (RXD1) и PD3 (TXD1), то PD3 и PD4 (XCK) образуют, соответственно, сигналы DATA и CLOCK для PDI, который используется для прошивки ATXMEGA. Правда, для работы с ATXMEGA понадобится либо перейти на питание 3.3В, либо поставить согласователь уровней. Замечу, что если перейти на 3.3В, то либо не стоит пользоваться внутренним регулятором напряжения (выход которого доступен на VCAP), либо не питать целевую плату от программатора. Внутренний регулятор не расчитан на внешнюю нагрузку и не имеет защит, так что любое КЗ по питанию на целевой плате будет стоить вам программатора. К слову, подобное решение применяется в некоторых дешевых клонах AVRISP mkII.
  • +3
  • 14 февраля 2012, 04:18
  • evsi
  • 1
Файлы в топике: mkII.zip

Комментарии (47)

RSS свернуть / развернуть
схема программатора примитивная (в аттаче)
Лучше бы ее все же в посте продублировать.
стоит, вобщем, копейки (~2.80грн в розницу в IMRAD-е, а космодром берется привезти их менее чем за две гривны мелким оптом).
Ты ничего не перепутал? Две-три гривны (~10-20 рублей, не уверен насчет курса гривны) за МК с USB — это вообще даром, но по моему — так дешево даже ATtiny13 не везде стоит, а AT90USB162 я видел только начиная с 3-4 баксов.

Алсо, для меня AVR ISP mkII интересен в первую очередь дополнительными возможностями. Что умеет полная схема? Меня в первую очередь интересуют HVSP/HVPP/PP. Еще я слышал, оно умеет PDI и TPI для иксмег и новых тини?

И еще. Эта минимальная схема умеет отключаться от таргета, чтобы не приходилось дергать программатор туда-сюда при отладке?
0
  • avatar
  • Vga
  • 14 февраля 2012, 04:46
>>Ты ничего не перепутал? Две-три гривны (~10-20 рублей, не уверен насчет курса гривны) за МК с USB — это вообще даром, но по моему — так дешево даже ATtiny13 не везде стоит, а AT90USB162 я видел только начиная с 3-4 баксов.

Я так понял, это про STF202.

>>Алсо, для меня AVR ISP mkII интересен в первую очередь дополнительными возможностями. Что умеет полная схема? Меня в первую очередь интересуют HVSP/HVPP/PP. Еще я слышал, оно умеет PDI и TPI для иксмег и новых тини?

PDI умеет, всё остальное замечено не было =)

>> И еще. Эта минимальная схема умеет отключаться от таргета, чтобы не приходилось дергать программатор туда-сюда при отладке?

Оригинальный не умеет. Зато при снятии питания программатора напрочь зажимает ресет на таргете — иногда использую как ключ выключения девайса =)
0
По моим наблюдениям, схемы MkII выложенные в виде картинок, почему-то быстро исчезают вместе со страницами. Подозреваю атмел бдит. Так что лучше уж так.

По поводу цены: речь шла об STF202, саму USB162 как-то сложно считать малознакомой.

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

Что понимается под «отключаться от таргета»? Отпускать ему ресет — умеет. Собственно, целевая плата так и живет — работает то, что прошито, потом программатор зажимает ресет, пишет что нужно и отпускает ресет, плата начинает работу с начала.
0
Что понимается под «отключаться от таргета»?
Так называемое «Exit Programming Mode». Когда после заливки прошивки программатор переводит все свои выходы в Z и не отсвечивает. А то например с подключенным FT232 программатором (без допбуфера, как на PB 1.1) девайс не работает)

Пока что я все же хочу собрать AVRdoper. Он умеет отключаться от схемы, SP/HVSP программирование, довольно дешев.
0
Как я уже писал, у меня девайсы с подключенным программатором работают. Ну и, с учетом наличия исходников прошивки, допилить ее, при необходимости, всегда можно.
0
Вот схема подключения TPI, а вот PDI. В моем варианте на сброс заведена та же нога (B4), так что можно повторять «в лоб», хотя я бы между точкой соединения D2/D3 и собственно ногами контроллера поставил бы резисторы ~100-200ом (в Xplain сделано именно так).
0
Резисторы там без надобности.
0
ну если по уму делать, то там и защита бы совсем не помешала.
0
Если по уму делать, то надо буферы ставить.
Можно конечно и ограничительные резисторы поставить, но на все линии.
Ставить два резистора на D2 и D3 не имеет смысла. В каждый момент времени работает либо D2, либо D3 пин, в то время как противоположный переводится в высокоимпедансное состояние.
0
В моей схеме ограничительные резисторы есть, хотя, видимо, номинал хорошо бы увеличить на порядок.
По поводу RX/TX, я, в принципе, согласен, но atmel в Xplain сделал, почему-то, именно так, как я описал. Я исхожу из того, что «видимо они что-то знают», тем более, что экономия одного резистора врядли представляет интерес.
0
[не в тему]
На работе пользуем фирменные AVR ISP mkII. У товарищей страдает надёжность. Слабым местом у них оказался… разъём программирования! Тот что втыкается в целевую плату… Рано или поздно он перестаёт контачить и его приходится переобжимать. И тут встаёт проблема — найти в продаже IDC-6 не так-то просто, обычно размеры начинаются с 10-ти пинов.
[/не в тему]
0
Наберите побольше в chipnn.ru/99.php пока есть, а то они и вправду редко попадаются.
0
Спасибо, мы пару месяцев назад взяли приличный запас в Платане. Они там как-то неожиданно появились и потом неожиданно кончились =).
0
А до этого одевали десятки и пилили их напильником до размеров шестёрки =)
0
Это еще один повод избавиться от шлейфа.
0
У нас есть приборы, к разъёму программирования которых без шлейфа не подлезешь. Особенно в собранном состоянии.
0
Понятно, что всякое бывает. Я по этой причине и включил в описание способ подключения шлейфа. Но обычно, все-таки, я предпочитаю обходиться без него. Впрочем, с авр-ками я сейчас мало вожусь, STM32 значительно интереснее :)
0
этож сколько его надо дрочить мучить чтобы он сломался оО…
0
Немного. Китайские где-то на третьей-пятой сотне передёргиваний перестают контачить. На производстве это может быть пару дней всего.
0
У этих разъемов коммутационная стойкость довольно невысока, особенно у IDC и PBx. Достаточно быстро разбалтываются вилочки и стирается покрытие. Не предназначены они для частой коммутации.
0
я в мк90 купил штук 20 таких разъемов и штук 10 таких проводов уже обжатых) без проблем) спросите у Ильи может они и сейчас у него есть.
0
А можете в avrdude, например, померить за сколько секунд полностью зашивается atmega8?
Вот даже специально пустая прошивка занимающая все память. Тынц.

И ещё, вас не напрягает невозможная работа одновременно и с avrstudio и с avrdude?
Я именно из за этого отказался от этого программатора.
0
  • avatar
  • Bonio
  • 14 февраля 2012, 18:41
Вот лог записи тестовой прошивки:
siy@stan:~/zztemp/LUFA-110528/Projects/AVRISP-MKII> avrdude -B1 -P usb -c avrisp2 -p m32 -U flash:w:m32.hex:i

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.00s

avrdude: Device signature = 0x1e9502
avrdude: NOTE: FLASH memory has been specified, an erase cycle will be performed
         To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "m32.hex"
avrdude: writing flash (13240 bytes):

Writing | ################################################## | 100% 1.04s

avrdude: 13240 bytes of flash written
avrdude: verifying flash memory against m32.hex:
avrdude: load data flash data from input file m32.hex:
avrdude: input file m32.hex contains 13240 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 0.57s

avrdude: verifying ...
avrdude: 13240 bytes of flash verified

avrdude: safemode: Fuses OK

avrdude done.  Thank you.

siy@stan:~/zztemp/LUFA-110528/Projects/AVRISP-MKII> 


Поскольку я не пользуюсь avrstudio (равно как и виндой), то не напрягает.
0
К слову, прошивку можно допилить, что бы она анализировала состояние какого-нибудь пина и переключалась в нужный режим автоматом. Я видел одну прошивку, которая именно так и работает, но, увы, она была без сорсов. Впрочем, врядли это сложная задача, учитывая, что соответствующий дефайн встречается в сорсах всего 2 раза.
0
я чего то не понял? это ведь AVR ISP MkII он же avrstudio поддерживается…
0
Поддерживается. Но прошивка в нем не из родного AVR ISP MkII, а из проекта LUFA. С этой прошивкой (точнее не с ней, а с libusb портированной из линукса в винду) есть одна проблема под виндой: работает либо avrstudio либо avrdude. В принципе, как я писал выше, ее можно допилить, что бы она переключалась между режимами, но это требует некоторых усилий. Я этого не делал просто потому, что не пользуюсь ни avrstudio, ни виндой. В линухе такой проблемы отродясь не было.
0
есть одна проблема под виндой: работает либо avrstudio либо avrdude
А с чем эта проблема связана? И для чего там вообще libusb?
И какой интерфейс у этого программатора (точнее, класс устройства)?
0
Я не копал детальнее в чем именно там проблема, поскольку, как я уже писал, мне это было не актуально. Думаю, все подробности по поводу класса и тому подобного, в том числе воркэраунд для проблемы, будет правильнее глянуть прямо в сорсах LUFA, что бы я не выступал в качестве испорченного телефона.
0
Из простых это лучший? программатор. Но микруху хрен достанешь. Хотя завал атмела вроде как прошел
0
У нас их полно. Например, вот, вот или вот. Причем первые два это то, что есть на складе, у последнего на складе может не быть, но за 2-3 дня они привозят.
0
а проблема с EEPROM решена? помню он раньше шил не полностью EEPROM на некоторых микроконтроллерах, в том числе и на меге8
0
Я с таким не сталкивался. Думаю, что если проблема была, ее давно пофиксили, LUFA периодически обновляется.
0
Можно ли сделать на ATMega32U2? Она с аппаратным USB. Что поменять в прошивке?
0
Вполне можно, я думаю. В makefile надо указать правильный чип и пересобрать начисто.
0
А как пересобрать? В архиве только leds.h. Можно подробней про сборку? Lufa скачал, но там вообще много всего. Только просьба, как для начинающего. Я до этого в основном с пиками работал, а сейчас решил на AVR начать, собрал программатор типа AVRDoper, прошил у друга, он определился как ком-порт, а прошивалки его не видят. Ком порта аппаратного тоже нет. мегуУ2 можно хотя бы через бутлоадер прошить. Спасибо.
0
Пробовали avrdude подсунуть этот компорт?

По поводу сборки:
Берем LUFA версии 110528, содержимое подкаталога Firmware из архива в топике копируем поверх корневого каталога самой LUFA, заходим в Projects/AVRISP-MKII и правим в makefile строчку MCU на нужную. Затем make и получаем готовую прошивку. Внимательное изучение makefile поможет разобраться с возможными вариантами конфигурации и прочими деталями.
0
Ком-порт пробовал подсовывать всем, в том числе и дудке, не видится как программатор… Вероятно, прошивка не та.
Попробую сделать на макетке, как будут результаты, отпишусь. Хотя, наверное, вначале просто шить через flip попробую.
Спасибо.
0
Так и должен видеться. Дудке и прочим нужно указать правильный тип программатора — STK-500 (STK-500v2). кроме того, для некоторых программ (в первую очередь атмеловских) нужно назначить доперу порт в диапазоне COM1-COM4, а то не увидят.
0
порт назначил com2, тип программатора указывал STK-500, STK-500v2, AVRISP, MK2, AVR910… FIFO отключал, управление потоком менял, скорость понижал, повышал…
Вот сейчас подумал, а может FUSE SPI отключил случайно, хотя шили с другом параллельным программатором из командной строки, у него фузы нормальные, считали, подправили, чтобы от кварца работал, прочитали — прошился правильно. Спи вроде не трогал…
Но все равно спасибо. Вечером еще поковыряюсь. Может соберу из хлама комп с аппаратным ком-портом да громовым перешью другой прошивкой. Увидим.
0
Неожиданно озадачился вопросом. А если таргет нерабочий, программатор должен определяться прошивалками? А то вспомнилось, что Тини2313, которая у меня одна в дипе и которую приваял к хвосту разъема ISP для проверки программатора, не хотела прошиваться во время моих первых экспериментов с АВР еще в позапрошлом году. Может в ней проблема.
Или отдельно тему открыть?
0
Определился только с прошивкой USBASP, по ходу дела оказалось, что одна из крафических оболочек к дудке не работает. Но, во всяком случае, это уже прогресс, Громова можно отложить, а то для него пришлось комп отдельный собрать..)))
0
Из достоинств по сравнению с USB-BIT вижу только цену чипа и возможность работы со студией.
Хотя… с ценой еще большой вопрос. Атмега сама стоит почти столько же сколько FT, разница не велика.
А учитывая перспективу замены FT232 на CP2102…
Прибавив наличие UART…
В общем сомнительная затея.
Я лично собрал себе usb-bit и настроил под него дудку с SinaProg. Очень приятная связка.
0
У нас FT стоит почти вдвое дороже и совсем не много дороже CP2102 (которая и близко не даст такой скорости). Наличие UART в программаторе мне как-то фиолетово.
0
А учитывая перспективу замены FT232 на CP2102…
А что, CP2102 умеет битбанг? Сомневаюсь.
0
Ага, косякс… А слона то и не приметил…
0
Ну двумя ногами дергать как обычный компорт она может :)
0
Даже больше. Но скорость…
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.