USBasp - программатор контроллеров AVR.А также до безобразия похожий "USB ISP" - совместимый с stk500v2.Имея две Ардуины можно в одну из них залить скетч ISP и использовать ее в качестве программатора, например, для второй ардуины (о чем я уже писал) - зачем нужен какой-то программатор еще? С одной стороны это верно, но есть некоторые нюансы. Так из мало существенных можно привести, например, то что ардуина взаимодействует с компом через COM-порт - а он хоть и виртуальный, его скорость не выше 115200 бод. Вдобавок к этому скетч ISP вообще предусматривает работу лишь на скорости 19200 бод. Вобщем долго и уныло, но не смертельно, если пользоваться таким программатором разово, а не в процессе отладки. Но есть и другой момент - стабильность. Тут я в результате многих экспериментов так и не понял в чем причина: просто иногда то не детектится программатор, то контроллер подключенный к нему. Каким альтернативным программатором обзавестись? Купить или собрать? Как вариант для сборки приглянулся AVR910 - свободный контроллер ATmega8 в наличии был, оставалось лишь собрать обвеску. Но так как кустарщины не хотелось, а примера трассировки платы под AVR910 на вышеуказанном сайте автора нет ... стал искать дальше. Как всегда заглянул на ебэй. И был приятно удивлен, что все труды по сборке программатора, включая детали оцениваются в 5 баксов!
http://www.fischl.de/usbasp/ - USBasp - USB programmer for Atmel AVR controllers (Официальная страничка этого радиолюбительского программатора, от германских разработчиков). Там же выложены все материалы необходимые для самостоятельной сборки, приведены различные примеры готовых решений, а также предлагается купить комплект (корпус, плата, все радиодетальки) - по цене порядка 16 евро. Смущает не только цена за "полуфабрикат", но и размер получаемого в результате изделия - и в том числе из-за несуразно-большого корпуса. Вобщем в топку европейцев с их хапужничеством и стремлением гигантизму! Вернемся к нашему донглу. Распайка коннектора чудная какая-то ... В комплекте с китайским USBasp идет 10-ти контактный кабель-шлейф, который (мягко сказать) не годится для непосредственного применения его с ардуиной в качестве целевой платформы. Ввиду этого пришлось сделать свой шлейфик с использованием обжимных разъемов. Необходимую распиновку несложно прикинуть по схеме ниже: Или использовать подготовленную мной табличку (номера по порядку проводников в шлейфе):
Что получилось - на фотке ниже ... С одного из концов проводники приходится собирать "вразброс" - я обжал 6-ти контактный классически (порядок проводов в шлейфе соответствует номерам контактов в разъеме), а в 10-ти контактом собрал их в соответствии с табличкой (выше). Для работы с программатором USBasp можно использовать управляющую программу avrdude (имхо наиболее удобная и функциональная, а также гибко конфигурируемая) или Khazama AVR - единственным преимуществом которой можно отметить лишь визуализацию и расшифровку значений fuse-битов (битов конфигурации контроллеров - фьюзов) а также наглядное отображение hex-дампа, в остальном она менее универсальна и более глючна ... Кстати, для удобства формирования fuse-битов (например, в случае использования avrdude) - можно воспользоваться следующим скриптом: http://www.engbedded.com/fusecalc/ - Engbedded Atmel AVR® Fuse Calculator Вот ... Кстати, информацию по самостоятельной сборке такого программатора можно найти здесь. MiGeRA (март 2012) Обновление прошивки в донгле USBasp (дополнение).Несмотря на то что проект USBasp уже давно заброшен разработчиком (последнее обновление комплекта файлов проекта датируется 2011 годом) - имеет смысл обновить прошивку в сём (описываемом) донгле, в нем она еще старее ... Забекапить что есть - не удавалось (читались симметричные паттерны, защита видать стоит - зачем? - для опенсорса то?). Но обновить прошивку можно. Посмотрев на схему оригинального проекта и поразглядывав сей черный донгл, потыкался, покликался ... Короче делаем так: 1. Замыкаем отверстия под джампер J2 булавкой (предварительно согнув ее пассатижами до V-образной формы и откусив ушко) - можно конечно и джампер впаять :-)) 2. Коннектим наш ISP-кабель (самоизготовленный, см. выше) к другому программатору (я использовал Little-Wire) - и данные теперь пойдут в обратную сторону ;-) 3. Заливаем новую версию прошивки (в моем случае: usbasp.atmega8.2011-05-28.hex) в контроллер (ATmega8L) софтом, соответствующим программатору (в моем случае avrdude - при помощи команды: avrdude -v -pm8 -cusbtiny -Uflash:w:usbasp.atmega8.2011-05-28.hex). Также проверяем и при необходимости корректируем фьюзы (avrdude -v -pm8 -cusbtiny -Ulfuse:w:0xEF:m и avrdude -v -pm8 -cusbtiny -Uhfuse:w:0xC9:m) 4. Вот и все, кстати залитая прошивка успешно читается обратно ;-) И еще обратил внимание, что при работе теперь не только горит желтый диод D2 (при подключении к USB), но и мигает красный D3 при активности программатора (раньше вроде не мигал). MiGeRA (июль 2014) Еще один, "почти" USBasp - или ... (дополнение).Когда-то несколько лет назад (во времена создания выше изложенного материала) был куплен еще и такой вот маленький и изящный программатор: Вобщем-то брал я его в расчете что это такой-же USBasp, только более компактный, да еще и в таком прикольном алюминиевом корпусе ... Ан нет! Однако особой нужды в его работоспособности на фоне сонма других программаторов не было, а посему он был благополучно заброшен. Нашел его случайно и совсем недавно, стал вспоминать что это, почему, как ... Вобщем не иначе как отличие в одной букве оказалось существенным :-O При подключении к компу он определяется как HID-устройство и чем работать с ним непонятно, дудка про такой не знает, а тем-более Студия :-/ На этот раз решил его раздербанить и посмотреть что внутри (сразу после приобретения было жалко) - но "дербанить" не пришлось, корпус легко открывается путем сдвига в сторону разъема USB. Внутри плата и конструкция очень похожая на USBasp (для сравнения см. фотку): Кроме габаритов навскидку разница в контроллерах - в "новом" маленьком установлен mega88 (напомню, в первом - mega8L). Казалось бы все просто - берем из древнего архива материалов по USBasp прошивку на mega88 (она там есть), замыкаем "ресет" и шьем (аналогично описанному выше) ... Все замечательно, но результат нулевой, девайсина после прошивки не заводится вообще! Хорошо, проверяем и корректируем фьюзы - загорается синий светодиод и не более. М-да ... Китайскую прошивку не восстановить, она была также залочена, да и толку от нее? Вобщем думал опять прятать эту фиговину в долгий ящик, да решил погуглить. По-хорошему на этом можно заканчивать повествование с благодарностью в адрес человечка написавшего этот замечательный материал и приложившего к нему все необходимое - лаконично и по-существу, пара кликов и все заработало ... ЗЫ. Все же несколько прокомментирую что и как получилось в моем видении :-)) 1. А никто нам "USBasp в металлическом корпусе" и не обещал, да, схемотехника у них почти идентичная, почти ... 2. Версия, платы в моем случае, 4.0 датирована октябрем 2014 года. Примененный контроллер mega88 (шьется на ура любым программатором после закорачивания проволочкой контактных площадок "-UP-" и питанием от программатора) не имеет прямой совместимости с mega8L, как по прошивке, так и по фьюзам. 3. Сей донгл есть возможность превратить как в USBasp (оптимально для работы с avrdude, ардуиной, ну и в случае если нет другого USBasp), так и в AVRDoper - клон stk500v2 (для роботы с Atmel Studio). 4. В режиме AVRDoper видится как COM-порт и требует установки (не подписанного) драйвера AVR-CDC (может не работать на портах USB 3.0). Скорость в Atmel Studio до 1.8MHz, т.е. вполне себе неплохо (режим только ISP-программатора, без отладки). Однако чтобы достигнуть подобной скорости в дудке - требуется патч, без него скорость черепашья. Между тем, удобно что не требуется менять драйвер при работе в Atmel Studio или с avrdude - обращение через номер COM-порта. MiGeRA (март 2019) | |||||||||||||||