Данный программатор является одним из вариантов схемы проекта USBasp, вот оригинальный сайт:
USBasp
К слову, мне достался вариант ATMega8L, работающий в режиме разгона, на частоте 12МГц. По документации, должно быть не более 8МГц.
Не вдаваясь в подробности, решил обновить прошивку:
— взял прошивку usbasp.2011-05-28 с вышеуказанного сайта;
— замкнул на плате контакты J2;
— подключил 10pin разъем к другому программатору;
— залил прошивку;
— выставил fuse для atmega8: HFUSE=0xc9 LFUSE=0xef
Программатор определился в системе, но перестал видеть подключенные к нему контроллеры.
Процесс поиска решения проблемы описан здесь:
Форум
В итоге решение проблемы следующее:
— на всякий случай удалил два резистора R9 (270 Ом) и R10 (100 Ом), так как не совсем понимаю для чего необходимо подтягивать RXD и TXD сигналы к GND, да ещё при помощи резисторов столь малых номиналов;
— необходимо припаять перемычку с PC2(ADC2) на GND.
После вышеуказанных манипуляций программатор снова в строю.
Для счастливых обладателей вышеуказанного программатора — желаю учиться на чужих ошибках, для остальных — позволю себе напомнить главное правило, которое может помочь во многих житейских ситуациях: «работает — не трожь!» 🙂
Надеюсь кому-нибудь данная информация поможет.
P.S. Номиналы в схеме вышеуказанного программатора наиболее близки к указанным в следующей схеме:
USB программатор AVR — USBAsp
Я купил программатор USBasp на Dx.com чтобы использовать с Arduino IDE для прошивки Arduino Pro mini.
Всё работало нормально, но выдавало вот такую ошибку:
〉 avrdude: warning: cannot set sck period. please check for usbasp firmware update
В-общем требовалось обновление прошивки программатора USBasp.
Гугление в Интернете выдало вот такое решение:
Примерно года два назад я заинтересовался программированием микроконтроллеров AVR. Изучение шло не слишком быстро, так как тема достаточно сложная, но все-таки, мной были собраны и доведены до ума несколько устройств в корпусах, с применением микроконтроллеров семейства Tiny. За это время успел обзавестись двумя программаторами, один собрал сам, это простой и всем известный программатор Громова, второй заказал с Али экспресс, по цене 3 доллара это программатор USBISP.
Для того чтобы найти и заказать его на Али-экспресс, достаточно набрать в строчке поиска USBASP USBISP. Этот программатор шел сразу в алюминиевом корпусе, аналогичном корпусе флешки, в комплекте с ним был шлейф для программирования 10 Pin. Про перепрошивку его в полноценный USBASP мы и поговорим в этой статье. Для чего это делать и в чем отличия этих программаторов, USBASP и USBISP ? Дело в том, что Китайский программатор работает только со своей оболочкой, Prog ISP, и не поддерживается, в отличие от USBASP программой AVR Studio. Несмотря на то, что Prog ISP оболочка, идет на английском языке, пользоваться ей менее удобно, чем оболочкой для USBASP Khazama.
Для USBASP существуют и другие графические оболочки, помимо Khazama работающие с консольным AVR DUDE. От себя скажу, что разница в удобстве пользования после перепрошивки сильно заметна. Например, в той же Prog ISP неудобное выставление фьюзов, с этим у Khazama полный порядок. Можно выбирать запись конфигурации фьюзов для МК по умолчанию одним кликом есть возможность выставления фьюзов, как галочками, так и из выпадающего списка.
Также присутствует функция Auto programm, в которой можно установить порядок действий, запускаемых впоследствии в один клик. Например, стирание файла, последующая запись и верификация. Есть и другие функции на выбор.
Перейдем к делу, что же нам требуется сделать для того, чтобы перепрошить программатор? Программаторы могут идти в двух вариантах, в алюминиевом корпусе, и без корпуса. Если со вторым вариантом все понятно, то с первым, если программатор в корпусе, нужно аккуратно стянуть его в сторону разъема USB на программаторе. Снимается он довольно легко, и с этим проблем быть не должно. На контакты разъема программирования с обратной стороны будет наклеена резиновая изоляционная прокладка, отклеиваем её, она нам будет мешать при пайке. При сборке в корпус не забываем приклеить её обратно, во избежание замыкания корпуса с разъемом для программирования. Далее переворачиваем и смотрим на программатор с обратной стороны. Вы должны увидеть в зависимости от разводки вашей платы следующее:
Но возможно существуют и другие варианты разводки программаторов у китайцев. Что нам требуется здесь сделать? Требуется удалить припой с двух или трех контактов на плате программатора, в зависимости от разводки вашей платы. По информации с того сайта по которой я перепрошивал свой программатор, была представлена следующая разводка:
Здесь, как мы видим на рисунке, требуется удалить припой с трех контактов, а также поставить (запаять) проволочную перемычку, чтобы перевести программатор в режим самопрограммирования.
Я воспользовался вместо кусочка провода, выводом, откушенным от резистора. И разумеется, также удалил припой с контактов на программаторе, обозначенных буквами А и В. Только в моем случае таких контактов было два.
Как мы видим на фото выше, перемычка из вывода резистора уже запаяна мной к контактам самопрограммирования программатора UP. На фото ниже можно убедиться в этом. Заодно мы можем видеть, что на контактах А и В отсутствует припой.
Припой удаляется с помощью демонтажной оплетки. Мы вытягиваем кусочек оплетки, обмакиваем его в спирто канифольный флюс, и, прогревая жалом паяльника, кладем на контакт, придавливая сверху паяльником. В результате припой с контактов должен полностью перейти на оплетку так, чтобы между ними не было замыкания. В чем и нужно убедиться, прозвонив мультиметром в режиме звуковой прозвонки. Для использования совместно с программаторами USBISP и USBASP мной был сделан переходник, который оказался удобен для программирования микроконтроллеров при отлаживании на цанговых макетных платах, и который я использовал для программирования микроконтроллера этого программатора:
К чему я писал в начале статьи о программаторе Громова? К тому, что для прошивки нам потребуется любой другой программатор. Можно точно такой же USBISP. То есть, если у вас нет второго программатора, о перепрошивке USBISP в USBASP можно забыть. А можно спаять по такому случаю программатор Громова, и прошить им микроконтроллер этого программатора. Схема программатора Громова простая, и детали необходимые для сборки, довольно дешевые. Допустим, у вас есть второй программатор. Тогда нам нужно подключить свой программатор к шлейфу программатора USBISP в соответствии с рапиновкой разъема. Её мы можем видеть на следующем рисунке:
Контакты в шлейфе идут одинаково с обоих концов. Нам потребуются соединить программаторы между собой, аналогично обычному прошиванию микроконтроллера. То есть выводы VCC, GND, MISO, MOSI, RESET и SCK обоих программаторов нужно соединить. Дополнительное питание, если прошиваем через USB программатор, USBISP, USBASP или другой с которого приходит питание с USB на прошиваемый микроконтроллер, можно не подавать. Если прошиваем через программатор Громова, то питание нужно подать. После прошивания выпаиваем перемычку, замыкаем те два или три контакта, с которых мы удаляли припой капелькой припоя, и, не собирая в корпус, подключаем наш новоиспеченный программатор USBASP к USB порту компьютера. Операционная система должна запросить драйвера. Появится следующее окно:
Соглашаемся с установкой и указываем вручную путь к папке libusb_0.1.12.1, которую можно будет скачать в архиве в конце статьи. В ней находится драйвер для USBASP. После установки в системе появится устройство USBASP:
После того, как убедимся, что все заработало, программатор определился, приклеиваем изоляционную резинку назад на место, и собираем программатор. В одной из статей про оболочку Khazama, было написано, что иногда Khazama работает некорректно без установки дополнительной программы – фильтра libusb-win32-devel-filter-1.2.6.0. Так ли это или нет — не знаю, у меня эта программа была установлена. Скачать её также можно будет в архиве в конце статьи. Сначала Khazama действительно отказывалась работать с моим программатором. Погуглив по этому вопросу на различных форумах, нашел информацию, что нужно установить частоту в программе 187.5 килогерц, что и сделал. Проблема сразу пропала. Эта функция есть только в свежих версиях Khazama, в частности Khazama AVR Programmer 1.7. Скачать её также можно в архиве в конце статьи.
Как уже писал выше про установку фьюзов, здесь с этим все отлично, можно, как выбирать из ниспадающего списка, так и устанавливать вручную галочками.
Я прошивал Tiny-2313, но эта оболочка поддерживает, помимо этого микроконтроллера, еще множество других типов МК. После запуска программы нам нужно выбрать наш микроконтроллер из списка, у меня как мы видим на скрине, выбран Tiny2313. Также в ней есть функция размещать окно поверх остальных, это расположенная справа с краю пиктограмма канцелярской кнопки. Прошивка для микроконтроллера программатора MEGA-8, HEX файл, также прикреплена в общем архиве. Фьюзы при прошивке изменять не нужно. Желаю всем удачной прошивки! Автор AKV.
Конечно вместо него можно использовать Arduino UNO с прошитым в него скетчем ArduinoISP, но это не удобно, возня с проводами, особенно если UNO всего одна, отбивает энтузиазм. Проще было заиметь отдельно такой программатор, точнее два. По двум причинам:
1) Ещё перед покупкой уже из отзывов было понятно, что качество пайки этих устройств страдает, а некоторым ещё и с расколотыми стабилитронами они приходили. Решено было подстраховаться, заказав два.
2) Один программатор к тому же можно шить другим, переставив перемычку на ведомом устройстве.
Список поддерживаемых микроконтроллеров
Культура исполнения и вправду хромает, мне в глаза сразу бросились криво припаянные гребёнки. Везде где только можно — имеются следы флюса, причём с окислами, по всей видимости, программаторы давно валялись на складе, а сборка их производилась с присущей китайцам быстротой.
Некоторые отверстия не целиком заполнены припоем
SMD-элементы тоже криво припаяны
Гребёнку чуть позже выровнял, уж больно неприятно на такую раскосую смотреть, элементы пропаял, а плату затем отмыл
Размеры платы несколько больше USB-TTL-конвертера на CP2102
Длина шлейфа около 30см, бытует мнение, что чем короче шлейф, тем лучше. Некоторые его специально укорачивают. Если заказать оригинальный USBASP — там комплектный шлейф уже 50см.
JP1 — замыкается в случае обновления прошивки самого программатораПрограмматор, как можно заметить, построен на базе Atmega8 с кварцем на 12МГц. Самый правый верхний элемент, подписанный F1, с перевёрнутой цифрой 4 — самовосстанавливающийся предохранитель, защищает USB-порт ПК/ноутбука, если на прошиваемой плате вдруг произошло короткое замыкание. Под перемычкой JP2 находится LDO-стабилизатор 662К, понижающий напряжение с 5В до 3.3В, если перемычка установлена в правое положение.
JP2 — тройная перемычка, здесь выбирается, какое напряжение будет подаваться на прошиваемый микроконтроллер, либо 5В (левое положение) и 3.3В (правое положение)
JP3 — если её замкнуть, то программирование контроллера будет происходить с пониженной частотой, однако китайцы не стали сюда впаивать гребёнку, т.к. на данной прошивке она не требуется
примечание. перед установкой драйвера необходимо отключить проверку цифровой подписи в Windows1) Скачать драйвера, распаковать в удобное место.
3) В ветке «Другие устройства» можно увидеть неопознанное устройство USBASP с оранжевым треугольничком — > навести на него курсор, нажать ПКМ -> «Обновить драйверы…»
4) Указать путь до раннее распакованной папки с драйверами — «libusb_1.2.4.0», нажать «ОК»
5) «Всё равно установить этот драйвер»
6) Готово, теперь оранжевый треугольничек пропал, драйвера поставлены
Захожу в программу Khazama AVR Programmer, выбираю из выпадающего списка ATmega8 и сперва считаю Flash-память через пункт меню «Command» -> «Read FLASH to Buffer», чтобы cохранить китайскую заводскую прошивку у себя. На всякий случай.
При этом периодически будет выпадать такая ошибка, закрыв окно, программа продолжит работу.
Идёт считывание, которое завершается всплывающим окном об успешном считывании FLASH-памяти в буфер
Теперь нужно сохранить содержимое буфера: «File» -> «Save FLASH Buffer As…». Выбрать удобное место, куда старая прошивка сохранится, дать имя (я например её назвал firmware_1) и дописать расширение *.hex — если его не писать, то она сохранится как просто файл без расширения.
Скачиваю прошивку для программатора с этой странички, архив usbasp.2011-05-28.tar.gz (в этом же архиве есть драйвера для Windows, распаковываю содержимое в удобное место.
Тем временем в Khazama загружу скачанную прошивку в буфер. «File» -> «Load FLASH File to Buffer». Выбираю прошивку, где в названии написано atmega8, поскольку прошиваемый программатор на этом чипе.
Как видно, здесь три прошивки — для Atmega8, 48 и 88. В нашем случае Atmega 8 — её и выбираю.
Прошиваю. «Command» -> «Write FLASH File to Buffer». Снова возникает ошибка, но после идёт процесс, завершающийся успехом.
Поскольку в обычном понимании «запрограммировать» означает выставить 1, то при работе со фьюзами всё ровно наоборот, от чего возникает путаница и в этом случае можно по неосторожности заблокировать контроллер и прошить потом его будет уже нельзя. Программа Khazama AVR Programmer удобна просмотром фьюз-битов — там наглядно видно и расписано, какие из них установлены, а какие нет.
Находятся они по пути «Command» -> «Fuses and Lock Bits…», откроется окно:
Где по нажатии кнопки «Read All» считаются фьюз- и лок-биты, а пресловутая ошибка успеет вылезти аж 5 раз подряд. Ошибки сыпятся именно на заводской китайской прошивке. Но если вставить в USB-порт недавно прошитый программатор, прошивкой скаченной по ссылке выше, то этих ошибок вылазить уже не будет, однако баги вылезут в другом месте, но о них позже.
AVRDUDE PROG 3.3
Консольная программа для прошивки микросхем, своего графического интерфейса не имеет, в стоке работает из командной строки, но энтузиастами было написано немало оболочек на неё, для удобства работы с ней. Одна из таких оболочек называется AVRDUDE PROG, созданная русскоязычными разработчиками. Эта оболочка, на мой взгляд удобна как раз для Flash-перепрошивки МК. После её запуска выбирается контроллер, в данном случае Atmega168 и тип программатора — USBasp. После чего можно заниматься записью/считыванием памяти. Что на заводской прошивке, что на новой — в обоих случаях никаких проблем с общением с Atmega168 не возникло. Прошил ради интереса ардуиновский стандартный blink-скетч, экспортированный в бинарный HEX-файл. Всё гладко.
Khazama AVR Programmer
Здесь достаточно выбрать микроконтроллер из выпадающего списка и можно уже работать с памятью/битами.
Однако если на самом программаторе установлена заводская прошивка, периодически будут сыпаться ошибки, о чём выше уже было упомянуто, на новой прошивке — данных ошибок уже нет.
Поскольку голый чип в SMD-корпусе SOIC8, в данном случае я поместил его в переходник SOIC8-DIP8 для удобства соединения с программатором в дальнейшем. Обзор на этот переходник можно почитать здесь.
AVRDUDE PROG 3.3
Тут выбирается из списка одноимённый контроллер, программатор USBasp и, если программатор прошит заводской китайской прошивкой, то все операции проходят ровно и гладко. Однако стоит заменить программатор на другой, с обновлённой прошивкой, то при любой операции возникает ошибка.
Появляется она из-за того, что ни программа, ни программатор не могут автоматически перейти в режим медленного программирования, необходимый для ATtiny13. Но есть как минимум два выхода:
1) Железный: замкнуть перемычку JP3
2) Программный: отредактировать файл «programm.ini» в папке с программой AVRDUDE PROG 3.3
Внести туда четыре строчки кода и сохранить. (взято отсюда)
progisp=jtag2pdiportprog=COM1portenabled=1[UsbaspSpeed]
progisp=Usbasp -B 3
portprog=usb
portenabled=0
Примечание. Здесь применён ключ «-B», который и занимается переводом программатора на пониженную частоту программирования. Значение «3» — время в микросекундах
После этого снова запустить AVRDUDE PROG 3.3 и в выпадающем списке программаторов выбрать UsbaspSpeed. Теперь работа с ATtiny13 на программаторе с новой прошивкой будет уже без ошибок, а перемычку JP3 замыкать больше не потребуется в этом случае.
Khazama AVR Programmer
Выбирается контроллер из списка и почти та же ситуация.
Программатор с заводской прошивкой нормально работает с ATtiny13, если не считать постоянно появляющихся окон с ошибкой, о чём раннее уже рассказывал.
Но с программатором на новой прошивке уже появляется иная ошибка с невозможностью прочесть сигнатуру (цифровую подпись) контроллера.
Но стоит замкнуть перемычку JP3, и можно спокойно работать
Или просто задать частоту работы из выпадающего списка по пути «Command» -> «Programm Options», я выставил частоту 187.5кГц.
Примечание. Частота программирования должна быть меньше тактовой частоты прошиваемой микросхемы не менее, чем в 4 раза. Но если посмотреть на считанные с ATtiny13 фьюзы, то на последней строчке Int.Rc.Osc. указано 9.6МГц.
Как минимум, у новичка возникнет вопрос — почему на выставленных в KHazame 1.5МГц — появляется та же ошибка? А также почему, если в AtmelStudio написать например код мигания светодиода с частотой раз в секунду и в макросе прописать:
то загрузив код на Attiny13, светодиод будет мигать очень медленно?#define f_cpu 9600000
— посмотрим на предпоследнюю строчку, где Divide Clock by 8 Internally [CKDIV8=0] — это включенный предделитель частоты, который делит эти 9.6МГц на 8, и поэтому реальная частота чипа здесь — 1.2МГц. Поэтому при выборе частоты 187.5кГц или меньше, ошибки исчезают и можно работать нормально с контроллером.
Примечание 2. Способ с выбором частоты в KHazame по скорости работы в несколько раз выигрывает у метода с физическим замыканием перемычки JP3, потому как в последнем случае частота понижается до 8кГц.
Сперва нужно запустить среду, предполагается, что некий код у нас уже написан и собран. В моём примере это простая мигалка светодиодом — Blink.
На верхней панели инструментов выбрать «Tools» — «External Tools…»
Откроется небольшое окно, нажать «Add»
В самом верхнем поле «Title:» ввести любое удобное название, я написал «Atmega168», т.к. та конфигурация, что приведу чуть ниже относится конкретно к этому контроллеру, и для любого другого контроллера она настраивается индивидуально.
В большом поле наверху, название инструмента будет автоматически продублировано.
Вторая строка, поле «Command:» — здесь нужно указать путь до файла «avrdude.exe», который находится в папке с вышерассмотренной программой
Третья строка, поле «Arguments:» необходимо ввести собственно саму конфигурацию
Конфигурация для Atmega168
-p m168 -c usbasp -P usb -U flash:w:$(ProjectDir)Debug\$(TargetName).hex:a
Конфигурация для ATtiny13
-p t13 -c usbasp -B 3 -P usb -U flash:w:$(ProjectDir)Debug\$(TargetName).hex:a
Здесь можно заметить уже два изменения: помимо «t13», добавился уже знакомый ключ «-B» со значением «3» для снижения скорости программированияТеперь, если снова кликнуть по «Tools», там появится только что созданный инструмент. И по нажатии по нему откомпилированный код будет автоматически прошит в контроллер.
Но эта операция происходит в два клика, что не очень удобно. Надо вынести этот инструмент на главную панель инструментов, чтобы он был всегда на виду.
Для этого нужно снова зайти в «Tools», затем кликнуть по пункту «Customize…»
Откроется следующее окно:
Перейти во вкладку «Commands» — нажать кнопку «Add Command…»
Ещё одно окно появится. В нём — в левой колонке выбрать «Tools», а в правой колонке выделить «External Command 1». Нажать «OK»
«External Command 1» окажется наверху списка, и, обратите внимание на саму панель инструментов — в интерфейсе появился пункт «Atmega168».
Но как мне кажется, место ему отведено не совсем удачное, желательно его сдвинуть вправо, для этого нажимается кнопка «Move Down» (одно нажатие = сдвиг на одну позицию вправо). После этого можно закрывать окно по кнопке «Close» и шить чип прямо из студии в один клик через обозреваемый программатор.
При перепрошивке чипа таким методом, на секунду появляется консольное окно AVRDUDE. Но может возникнуть необходимость как-то сохранить этот лог для дальнейшего его просмотра — тогда в окне «External tools» нужно поставить галку на «Use Output window».
И теперь лог будет отображаться в окне вывода, что внизу программы ATmel Studio 7. Данная галка может задаваться отдельно для каждого добавленного в «External tools» контроллера.
Как рекомендует выставить разработчик:
HFUSE=0xc9
LFUSE=0xef
Это нужно снять две галки с «BODEN» и «SUT1» (выделено красным овалом),
поставить две галки на «CKOPT» и «SUT0» (выделено зелёным прямоугольником),
справа в колонке при этом будут отображаться HEX-значения изменённых битов (выделено жирным красным прямоугольником): Lock Byte: 3F, Fuse High Byte: C9, Fuse Low Byte: EF.
Если всё сходится, можно нажимать «программирование»
ВНИМАНИЕ. Злой фьюз-бит RSTDISBL — не трогать ни в коем случае, иначе его установка заблокирует контроллер и прошить потом через USBASP его уже будет нельзя._____________________________________
Список ссылок
1) Описание USBASP
2) AVRDUDE PROG 3.3 (форум)
3) Khazama AVR Programmer 1.7
4) Китайская стоковая прошивка (10кб)
5) Архив с прошивками для USBASP и драйверами для Windows — сайт создателя проекта
«Перепрошить» китайский программатор USBasp может даже новичок. Для этого достаточно:
1. Перевести USBasp в режим, разрешающий программирование встроенного микроконтроллера! Обычно это делается установкой соответствующей перемычки или замыканием определенных контактов на плате!
Например, у программатора на фото — это контакты, отмеченные линией!
2. Подключить USBasp к любому программатору, который поддерживает программирование AVR контроллеров!
Выходы контактного разъема USBasp должны быть соединены в точности так же, как и при «прошивке» обычного микроконтроллера! То есть:
GROUND (GND) — общий провод GND <—>GND
VCC (питание) должно быть не больше 5V! VCC <—> VCC
SCK (serial clock) — последовательная синхронизация! Импульсы генерирует MASTER (ведущее устройство) SCK <—> SCK
MOSI (MASTER OUT SLAVE IN) – это выход сигнала с MASTER (ведущего) устройства на SLAVE (ведомое)
MISO (MASTER IN SLAVE OUT) – вход для ведущего устройства, на который сигнал приходит с выхода ведомого!
RESET (сброс) – обратите внимание именно на этот контакт поступает сигнал для начала программирования! По умолчанию вывод RESET встроенного в USBasp контроллера не подключен – подключается он замыканием соответствующих выводов (установкой перемычки) см. фото!
Внимание, если ваш USBasp работает нормально, не спешите его сразу «перепрошивать» – сделайте вначале резервную копию «прошивки»!
Перед «прошивкой» желательно полностью стереть чип, не изменяя FUSE Bits!
Фьюз биты AVR микроконтроллера – это специальные ячейки памяти для конфигурации его работы. Помните, что неправильная установка даже одного фьюз бита, может привести к тому, что контроллер начнет работать совсем не так, как ожидалось, и возможно даже перестанет реагировать на команды с обычного ISP программатора!
Если «прошить» USBasp у вас не получается, скорее всего:
— неправильно подсоединены выводы – попробуйте поменять местами MOSI и MISO, предварительно убедившись, что всё соединения имеют надежный контакт!
— неправильно выбран тип микроконтроллера – выберите его вручную!
После загрузки в USBasp новой прошивки обязательно разомкните выводы (снимите перемычку), чтобы программатор смог работать в обычном режиме!
Стоит также заметить, что для «перепрошивки» USBasp не обязательно использовать программатор – его можно заменить даже дешевой платой Arduino, поддерживающей USB! Например, китайским аналогом Arduino Nano! Разумеется, предварительно в плату Arduino необходимо загрузить скетч (программу) «Arduino ISP».
Прошивка микроконтроллеров Atmega без arduino через USBasp:
Существуют простые и дешевые программаторы для прошивки м/к Atmega ,которые поддерживает среда Arduino IDE- необходимо просто выбрать соотвествующий программатор USBasp в настройках Arduino IDE.USBasp необходим,если вы просто прошиваете микроконтроллеры Amtel.Программатор основан на м/к Atmega 8 и использует програмный USB.
Цена такого программатора на ebay.com около 3$.Он имеет выход питания 5v/3.3 v(переключается перемычкой JP1) ,а так же соотвествующие выводы SCK,MISO,MOSI,RESET для подключению напрямую к микроконтроллеру.На картинке показаны выводы на самом программаторе — на разъеме шлейфа соответственно будет зеркально относительно ключа (у 5 вывода),не забывайте об этом.
Для работы в операционной системе Windows необходимы драйвера.Linux же не требует их.
Данный программатор легко превратить в друое устройство,например в I2C-USB переходник , USB контроллер с GIO или контроллер чтения термодатчиков DS18B20.
Программирование через USBasp в Arduino IDE
Для программирования микроконтроллеров,подключенных через USBasp в Arduino IDE необходимо выбрать его в программе согласно скриншоту.
Программирование осуществляется через меню файл,выбрав пункт
«Загрузить с помощью программатора».Не забываем выбрать микроконтроллер в меню «сервис» ->»плата».
Программирование через USBasp утилитой avrdude
Утилиту avrdude можно найти в папке /hardware/tools/ в дистрибутиве Arduino IDE или скачать в интернете.
Для того,чтобы залить прошивку в микроконтроллер необходимо выполнить команду:
avrdude -c usbasp -p m8 -U flash:w:имя_файла.hex . где -p m8 — это модель микроконтроллера.В данном случае atmega 8.
Дополнительно так же можно установить фьюзы дописав :-U hfuse:w:0xХХ:m -U lfuse:w:0xХХ:m .Где ХХ — соотвествующие фьюзы микроконтроллера ,необходимые для конкретной прошивки.
Обычно прошивку можно осуществить через команду make flash ,если Вы имеете исходный код прошивки и установленную WinAVR.
В других средах программирования выбор программатора осуществляется через соответсвующее меню программы.
Обратите внимание,
Что на некоторых микроконтроллерах с завода,например на серии Attiny включен по умолчанию фьюз CKDIV8 ,который устанавливает делитель на 8 и из-за этого USBasp не программирует такие микроконтроллеры пока не установить перемычку JP3 на USBasp.Для настройки фьюзов воспользуйтесь калькулятором фьюзов чтобы выставить нужные настройки , в том числе выключить данный делитель.Фьюзы прошиваются через avrdude командой avrdude -c usbasp -p имя_м/к -U lfuse:w:0xХХ:m .
Пример для установки фьюзов attiny85 для внутреннего генератора 8мгц с выключенным делителем на 8 :
avrdude -c attiny85 usbasp -p -U lfuse:w:0x62:m
При программировании через Arduino IDE можно установить нужные фьюзы выбрав в меню «записать загрузчик»,выбрав перед этим необходимый микроконтроллер.
«Допиливание» программатора.
или исправляем ошибку: avrdude: warning: cannot set sck period. please check for usbasp firmware update
При программировании некоторых микроконтроллеров(например у серии ATtiny) возможны не фатальные ошибки.Хотя и программирование микроконтроллера происходит,но обновить прошивку микроконтроллера на программаторе рекомендуется.
Что для этого нужно ? Вы можете использовать плату arduino как программатор или использовать другой USBasp программатор.Для программирования используются те же выводы SCK,MISO,MOSI,RESET.
Порядок действий для прошивки через arduino:
1. Подключаем выводы SCK,MISO,MOSI,RESET к Arduino согласно инструкции.
2. Установавливаем перемычку self programming (на фото обозначена как JP2),обычно место для перемычки не распаяно.
3. Качаем последнюю версию прошивки usbasp.2011-05-28 тут и кидаем в папку путь_к_папке_ардуины_/hardware/tools/.
4. Перейдем в консоль (cmd или bash) Вашей операционной системы в папку через команду cd путь_к_папке_ардуины_/hardware/tools/ и далее вводим команды для Windows,не забывем указать верный порт,на котором подключена Arduina:
avrdude -C avrdude.conf -c avrisp -P COM1 -b 19200 -p m8 -v
Программа выдаст сообщение ,где покажет состояние фьюзов и другую информацию:
Если Вы видите такие же сообщения- значит подключено все правельно и можно прошивать командой:
avrdude -C avrdude.conf -c avrisp -P COM1 -b 19200 -p m8 -U flash:w:usbavr.hex -U lfuse:w:0xef:m -U hfuse:w:0xc9:m
Успешная прошивка:
Для прошивки из Linux все аналогично, заменяется часть строки:
./avrdude -C avrdude.conf -c avrisp -P /dev/ttyUSB0 …
Порядок действий для прошивки через другую USBasp:
Прошивка аналогична прошивке обычного микроконтроллера: подключаем выводы SCK,MISO,MOSI,RESET один в один шлейфом идущим в комплекте с программатором.Не забываем про перемычку JP2.
Указываем опцию -c usbasp вместо -c avrisp
Доработка программатора USBasp
При программировании некоторых микроконтроллеров (например серии ATtiny) возможны не фатальные ошибки. И хотя программирование микроконтроллера происходит успешно, обновить прошивку на программаторе рекомендуется.
Что для этого нужно ? Вы можете использовать плату arduino как программатор или использовать другой USBasp программатор.Для программирования используются те же выводы SCK,MISO,MOSI,RESET.А) Порядок действий для прошивки через arduino:
1. Подключаем выводы SCK,MISO,MOSI,RESET к Arduino согласно инструкции.2. Установавливаем перемычку self programming (на фото обозначена как JP2),обычно место для перемычки не распаяно.
3. Качаем последнюю версию прошивки usbasp.2011-05-28 тут и кидаем в папку путь_к_папке_ардуины_/hardware/tools/.4. Открываем консоль Linux, вводим проверочную команду (не забывем указать верный порт, на котором подключена Arduina !!!):
avrdude -C avrdude.conf -c avrisp -P /dev/ttyUSB0 -b 19200 -p m8 -vПрограмма выдаст сообщение, где покажет состояние фьюзов и другую информацию:
Если Вы видите такие же сообщения — значит подключено все правильно, можно прошивать командой:
avrdude -C avrdude.conf -c avrisp -P /dev/ttyUSB0 -b 19200 -p m8 -U flash:w:usbavr.hex -U lfuse:w:0xef:m -U hfuse:w:0xc9:m
Успешная прошивка:
Прошивка аналогична прошивке обычного микроконтроллера: подключаем выводы SCK,MISO,MOSI,RESET один в один шлейфом идущим в комплекте с программатором. Не забываем про перемычку JP2.
Указываем опцию
-c usbasp вместо -c avrisp в командах приведенных выше.___
http://homes-smart.ru/index.php/oborudovanie/arduino/proshivka-mikrokontrollerov-atmega-cherez-usbasp
€ 5
€ 10
€ 15
USBasp — внутрисхемный программатор USB для контроллеров Atmel AVR.Это просто состоит из ATMega88 или ATMega8 и нескольких пассивных компонентов. Программист использует драйвер USB только для прошивки, специальный контроллер USB не требуется. Пожалуйста, обратитесь к Readme.txt для получения подробной информации о сборке, установке и использовании USBasp.
Партнерский номер | Стоимость | Рейхельт № |
---|---|---|
C1 | 4,7u | RAD 4,7 / 35 |
C2 | 100n | X7R-5 100N |
C3, C4 | 22p | KERKO 22P |
D1, D2 | 3V6 стабилитрон | ZF 3,6 |
CON1 | USB-B | USB BW |
CON2 | 10pol | WSL 10 Вт |
IC1 | ATmega8-16 | ATMEGA 8-16 (не запрограммировано!) |
JP1, JP2 | 2pol 2,54 мм | SL 1X36G 2,54 |
LED1 | 3 мм LED зеленый | LED 3MM 2MA GN |
LED2 | 3 мм LED красный | LED 3MM 2MA RT |
Q1 | 12 МГц | 12,00-HC49U-S |
R1, R2 | 68 | 1/4 Вт 68 |
R3 | 2,2к | 1/4 Вт 2,2к |
R4, R5, R6, R7 | 270 | 1 / 4W 270 |
R8 | 10k | 1/4 Вт 10k |
R9, R10 | 1k | 1 / 4W 1k |
M1, M2 | Перемычка | JUMPER 2,54GL SW |
M3 | Розетка 28S | GS 28-S |
M4 | Кейс | TEKO 10007 |
M5 | PCB | — |
| usbasp_single_side.t3001.zip Томас Фишл Односторонняя печатная плата, TARGET 3001! файл макета Размер: 90х40 мм (оптимизировано для случая Hammond 1591ATBU) | |
| lv_usbasp.tar.gz Павел Шрамовский (11/2007) С Низковольтный интерфейс . Односторонняя печатная плата, файлы макетов EAGLE, некоторые компоненты SMD | |
| Бернхард Валле Двухсторонняя печатная плата, файлы макетов EAGLE, список деталей с номерами заказов для Reichelt.де и Конрад.де Размер: оптимизирован для случая Hammond 1591ATBU | |
| http://thomaspfeifer.net/atmel_usb_programmer.htm Томас Пфайфер Односторонняя печатная плата, файлы макетов в формате PDF, компоненты SMD | |
| Томаш Островский Файлы макетов односторонней печатной платы, PDF и EPS, только четыре детали 0805 SMD, остальные дискретные компоненты | |
| USBasp_CH.почтовый индекс Кристиан Хейгемейр Односторонняя печатная плата, с некоторыми компонентами SMD 0805, PDF-файлы С дополнительными кнопками для сброса и отключения цели | |
| USBasp.сЧ,
USBasp.pcb ComponentSide.pdf, TopSide.pdf, Schematics.pdf Журов Павел Односторонняя печатная плата, формат P-CAD 2002 и файлы PDF Крестовина TXD и RXD добавлены для разъема ISP | |
| usbasp_gr.RAR Я.А. де Гроот Доска односторонняя (формат EAGLE), размеры 3 на 8 см и использует только обычные компоненты. | |
| usbasb_mg.zip Матиас Гёрнер Односторонняя печатная плата, Eagle-формат, с PS / PDF-файлами встроенные розетки для целевых чипов ATmega8 и ATmega32 | |
| Тарбол с макетом Ханнес Эстлунд Двухсторонняя печатная плата, SMD компоненты, очень маленькая | |
| Сергей Богданцев (01/2010) 3.Версия 3V, только ATMega48. Односторонняя печатная плата, формат компоновки ExpressPCB + гнездовая плата для различных AVR. Без будущего последовательного интерфейса чип изначально должен быть запрограммирован другим программистом. | |
| Дизайн Eaglefiles (sch / brd) и CAD (dxf) Hans Hafner, HTL Mössingerstrasse-Klagenfurt, Österreich, Hans.hafner (at) htl-klu (dot) at (01/2010) Фрезерный станок с ЧПУ (имеется файл DXF), компоновка Eagle, только несколько деталей SMD | |
| Различные версии USBasp: Простая сборка версий не smd, smd и очень маленький USBasp Свен Хедин (01/2011) Орел файлы доступны. | |
| USB-ключ AVR программатор Фабио Балтьери (09/2011) Очень маленький USB-ключ, как размеры. SMD запчасти. | |
| AVR ISP Programmer Ярослав Вадель (04/2012) Маленький программистSMD запчасти. | |
| Целевой проект и PDF-файлы (макет / схема) Мариус Шефер (09/2013) | |
| Миниатюрная плата USB с USB-совместимой прошивкой Стефан Бервольф (04/2014) | |
| USBasp на макетной плате с разъемом для дочерних плат контроллера. Фабиан Хаммель (11/2018) | |
| Тьяарт ван Асвеген разработал плату SMD: файлы DIP TRACE и GERBER. Тьяарт ван Асвеген (09/2019) | |
| Многофункциональный (например,грамм. различные уровни напряжения, встроенный преобразователь USB в последовательный порт, разъем USB-C) USBasp-совместимый дизайн.
Программист AVR Github проекта. Брайан Пепин (12/2019) | |
| USBasp с разъемом ZIF и сквозными отверстиями.KiCad дизайн на Github Бруно (04/2020) |
Я получил очень дешевый программатор USBASP для AVR от ebay. Длинный кабель с 10-контактными разъемами и переходником от 10 до 6-контактный.
Используется для программирования Arduino, когда загрузчик не нужен при запуске или когда он занимает слишком много места в оперативной памяти.
Вы можете запрограммировать схему в Arduino, когда USBASP подключен с помощью опции меню Sketch: Upload Using Programmer.Это также удаляет загрузчик, освобождая место.
Когда я подключил USBASP к Uno и попытался сделать это с эскизом, загрузка не удалась с ошибкой:
avrdude: предупреждение: не может установить период sck. пожалуйста, проверьте обновление прошивки usbasp
Известная проблема, прошивка. Вздох, еще одна работа. Это то, что я сделал, чтобы все заработало как хотелось.
Немного погуглил, а это мой рецепт. По сообщению Роджера Кларка, выполненного мной на Windows 7.
Arduino USBASP 5 В ———— 2 GND ———— 10 13 ———— 7 12 ———— 9 (MISO) 11 ———— 1 (MOSI) 10 ———— 5 (СБРОС)
Обратите внимание, что выемка на разъеме находится над контактом 3-5-7. Картинка выше показывает контакты в обратном направлении. Вот так выглядит разъем в кабеле спереди, где должны быть выполнены соединения:
XXX --------------- | 1 3 5 7 9 | | 2 4 6 8 10 | -----------------
avrdude -C../etc/avrdude.conf -c avrisp -P COMXX -b 19200 -p m8 -v
Если все подключено правильно, вы должны увидеть информацию о плате USBASP, которую вы собираетесь запрограммировать, например
... AVR Part: ATMEGA8 ... avrdude: устройство AVR инициализировано и готово принять инструкции
Последнее сообщение — знак того, что все подключено, и у вас есть ATMEGA8, как у меня на USBASP.
Если вы получили сообщение об ошибке о неверной подписи, у вас либо неисправен USBASP, либо вы допустили ошибку проводки.
avrdude -C ../etc/avrdude.conf -c avrisp -P COMXX -b 19200 -p m8 -U flash: r: original_firmware.bin: r
Это должно прочитать прошивку и сохранить ее в файл с именем original_firmware.bin (в той же папке, что и avrdude.exe)
avrdude -C ../etc/avrdude.conf -c avrisp -P COMXX -b 19200 -p m8 -U вспышка: usbasp.atmega8.2011-05-28.hex
Основная причина, по которой вы хотите обновить эту прошивку, — это разблокировать медленную функцию для дешевых (e-bay или Aliexpress) программаторов USBasp, как показано на рисунке. Функция slow-sck позволяет программировать микросхемы AVR, работающие на источнике тактовой частоты очень низкой частоты (то есть 128 кГц).
Когда ваш программатор USBasp печатает это предупреждение, это означает, что требуется обновление прошивки!
avrdude -p attiny13 -c usbasp -B 1024 -F -P usb avrdude: установите частоту SCK на 500 Гц avrdude: предупреждение: не может установить период sck.пожалуйста, проверьте обновление прошивки usbasp. avrdude: ошибка: программа включена: цель не отвечает. 1 avrdude: инициализация не удалась, rc = -1 avrdude: устройство AVR инициализировано и готово принять инструкции avrdude: подпись устройства = 0x685ba2 avrdude: Ожидаемая подпись для ATtiny13 - 1E 90 07 Аврдуде сделано. Спасибо.
Нам нужно установить перемычку JP2 для USBasp-программатора, который мы хотим обновить.Эта перемычка активирует самопрограммирование провайдера. Может случиться так, что вам нужно будет добавить на печатную плату недостающий пин-заголовок для JP2. То же самое с pin-header для перемычки JP3, которая включит «Slow-SCK», когда у нас будет обновлено встроенное ПО. В конце концов, сделайте короткие соединения на печатной плате, если нет места для разъемов.
Figure-1 Плата программатора AVR USBasp (источник: tosiek.pl)
Рисунок-2 AVR USBasp программатор схема
Программное обеспечение поддерживается Томасом Фишлом, автором программатора USBasp, и его можно найти на его официальной странице загрузки — https: // www.fischl.de/usbasp/.
cd $ HOME wget https://www.fischl.de/usbasp/usbasp.2011-05-28.tar.gz tar -xvf usbasp.2011-05-28.tar.gz
На этом шаге мы уверены, что перемычка JP2 первого программиста, которую мы хотим обновить, находится на своем месте (пока JP3 не установлена). Теперь мы будем использовать второй программатор USPasp для записи новой прошивки в чип первого программиста. Итак, нам нужно подключить первый программатор USBasp и второй программатор с помощью разъемов IDC-10, а затем подключить второй программатор к компьютеру с помощью разъема USB.
cd $ HOME / usbasp.2011-05-28 avrdude -p atmega8 -c usbasp -U flash: w: bin / firmware / usbasp.atmega8.2011-05-28.hex: i -F -P usb
После обновления прошивки нам нужно сбросить перемычку JP2 и установить JP3 (Slow-Clock).
avrdude -p attiny13 -c usbasp -B 1024 -F -P usb avrdude: установите частоту SCK на 500 Гц avrdude: устройство AVR инициализировано и готово принять инструкции Чтение | ################################################## | 100% 0.02s avrdude: подпись устройства = 0x1e9007 (вероятно, t13) avrdude: безопасный режим: предохранители в порядке (E: FF, H: FF, L: 7B) Аврдуде сделано. Спасибо.
Это было бы все! Теперь, если установлен JP3, вы можете программировать микросхемы AVR, работающие с очень низкими частотами.
,