USBasp: обновление прошивки программатора

Если программатор USBasp при подключении к ПК выдаёт ошибку error: program enable: target doesn't answer или система вообще не определяет устройство, частая причина — устаревшая прошивка микроконтроллера ATmega8 внутри самого программатора. Обновление прошивки USBasp выполняется вторым программатором через штатный ISP-разъём — сам себя без специальной перемычки он прошить не может.

В отличие от обычной прошивки целевого микроконтроллера, здесь USBasp выступает в роли программируемого устройства. Ниже разберём, какая прошивка нужна, как замкнуть перемычку самопрограммирования и какими командами avrdude залить новый firmware.

Когда требуется обновление прошивки USBasp

Обновление имеет смысл не всегда. Сначала проверьте, действительно ли проблема в прошивке, а не в драйвере или кабеле. Типичные признаки устаревшей версии firmware:

  • 🔴 avrdude выдаёт предупреждение «cannot set sck period» и советует обновить прошивку;
  • 🔴 программатор не определяется в системе даже после установки драйвера libusb;
  • 🔴 устройство работает нестабильно с новыми версиями avrdude;
  • 🔴 купленный клон изначально содержит старую или криво залитую прошивку.

Китайские клоны USBasp часто поставляются с модифицированной прошивкой, которая конфликтует с новыми версиями avrdude. Если программатор работает стабильно и не выдаёт ошибок — обновлять его не обязательно.

Что понадобится для обновления

Для перепрошивки USBasp потребуется второй программатор: это может быть ещё один USBasp, AVRISP mkII, USBtinyISP или даже плата Arduino, работающая в режиме ArduinoISP. Без второго программатора обновить firmware невозможно — USBasp не поддерживает самопрограммирование через USB напрямую.

Также подготовьте:

  • 🛠️ установленный пакет avrdude (входит в состав Arduino IDE и WinAVR);
  • 🛠️ файл прошивки в формате .hex — официальная версия от автора проекта Thomas Fischl;
  • 🛠️ шлейф или перемычки для соединения ISP-разъёмов (MOSI, MISO, SCK, RESET, VCC, GND);
  • 🛠️ пинцет или джампер для замыкания перемычки самопрограммирования.
⚠️ Внимание: скачивайте прошивку только с официального сайта проекта USBasp (fischl.de) или из проверенных репозиториев. Файлы с непонятных форумов могут содержать несовместимую версию под другой микроконтроллер — заливка прошивки для ATmega88 в плату с ATmega8 приведёт к неработоспособности.

Подготовка: перемычка самопрограммирования

На плате USBasp предусмотрены контакты для перевода устройства в режим программируемой цели. На оригинальной плате это перемычка JP2 (или контакты, подписанные как SELFPROG), на китайских клонах — часто нераспаянные площадки рядом с микроконтроллером.

Порядок действий: найдите на плате пару контактов самопрограммирования, замкните их джампером или припаяйте временную перемычку. На некоторых клонах вместо JP2 нужно замкнуть контакт RESET микроконтроллера на землю — распиновку конкретной платы сверяйте с её схемой, так как разводка клонов различается.

Как найти перемычку на китайском клоне

На большинстве синих плат клонов USBasp перемычка расположена рядом с кварцевым резонатором и подписана JP2 или JP3. Если подписей нет, прозвоните мультиметром контакты от вывода RESET микроконтроллера ATmega8 — нужная пара контактов замыкает RESET на землю. При сомнениях найдите фото своей ревизии платы в интернете по маркировке на шелкографии.

Пошаговая инструкция по обновлению прошивки

После замыкания перемычки подключите внешний программатор к ISP-разъёму USBasp. Питание можно подать от программатора, если он поддерживает питание цели 5 В, либо подключить USBasp к USB-порту компьютера.

☑️ Перед прошивкой USBasp

Выполнено: 0 / 5

Далее проверьте связь с микроконтроллером командой чтения сигнатуры:

avrdude -c usbasp -p m8 -v

Если сигнатура прочиталась корректно (для ATmega8 это 0x1e9307), заливайте прошивку. Команда записи firmware:

avrdude -c usbasp -p m8 -U flash:w:usbasp.atmega8.2011-05-28.hex:i

Имя hex-файла укажите то, что соответствует скачанной вами версии. После записи avrdude автоматически выполнит верификацию — дождитесь сообщения об успешной проверке, затем отключите программатор и снимите перемычку.

📊 Что вы использовали в качестве второго программатора для прошивки USBasp?
Второй USBasp
Arduino как ArduinoISP
USBtinyISP
Другой программатор

Настройка фьюзов ATmega8

На свежем или «восстановленном» микроконтроллере одной записи flash-памяти недостаточно — нужно проверить фьюз-биты. Для USBasp на ATmega8 с внешним кварцем 12 МГц стандартные значения: hfuse=0xC9, lfuse=0xEF. Они задают тактирование от внешнего кварца и отключают bootloader-секцию.

Записать фьюзы можно командой:

avrdude -c usbasp -p m8 -U hfuse:w:0xC9:m -U lfuse:w:0xEF:m
⚠️ Внимание: ошибка в значениях фьюзов способна «залочить» микроконтроллер — например, при отключении RESET (фьюз RSTDISBL) или выборе несуществующего источника тактирования чип перестанет отвечать по ISP. Перед записью сверяйте значения с документацией проекта USBasp и никогда не меняйте фьюзы «наугад».

Если микроконтроллер уже был рабочим и вы только обновляете firmware, фьюзы трогать не нужно — они сохраняются при записи flash.

Типичные ошибки и их решения

Даже при правильной процедуре обновление может не пройти с первого раза. Ниже — частые проблемы и способы их диагностики.

Ошибка / симптомВероятная причинаРешение
target doesn't answerПеремычка не замкнута или нет контакта по ISPПроверить джампер и прозвонить линии MOSI/MISO/SCK/RESET
invalid signatureНеверно указан чип или перепутаны проводаПроверить ключ -p m8 и распиновку шлейфа
verification mismatchПовреждённый hex-файл или помехи по питаниюСкачать прошивку заново, сократить длину шлейфа
could not find USB deviceНе установлен драйвер libusb на ПКУстановить драйвер через Zadig
Программатор не виден после прошивкиНе снята перемычка самопрограммированияОтключить USB, снять джампер, подключить заново

Отдельно стоит ошибка cannot set sck period — это не сбой, а предупреждение о том, что старая прошивка не поддерживает программное изменение частоты SCK. Она лечится как раз обновлением firmware либо перемычкой «медленного режима» (JP3 на оригинальной плате).

Проверка результата после обновления

После снятия перемычки подключите обновлённый USBasp к компьютеру. Система должна определить устройство без ошибок, а avrdude — прочитать сигнатуру любого подключённого целевого микроконтроллера, например ATmega328P.

Команда для финальной проверки:

avrdude -c usbasp -p m328p

Если сигнатура целевого чипа читается и предупреждение о версии прошивки исчезло — обновление прошло успешно. Самый надёжный признак корректной прошивки — стабильное чтение и запись реального микроконтроллера без единой ошибки верификации.

Часто задаваемые вопросы

Можно ли обновить прошивку USBasp без второго программатора?

Нет. USBasp не имеет USB-загрузчика, поэтому для записи новой прошивки в его ATmega8 обязательно нужен внешний ISP-программатор: второй USBasp, Arduino в режиме ArduinoISP или любой другой совместимый с avrdude.

Какая версия прошивки USBasp самая свежая?

Официальная последняя версия от автора проекта датирована 2011 годом — проект давно не обновляется, но эта прошивка стабильно работает с современными версиями avrdude. Существуют также сторонние модификации с поддержкой TPI и PDI, однако их стоит использовать только при понимании отличий.

Что делать, если после прошивки USBasp не определяется?

Сначала проверьте, снята ли перемычка самопрограммирования — это самая частая причина. Затем убедитесь, что прошивка записана под правильный микроконтроллер (ATmega8, а не ATmega88/48), фьюзы выставлены на внешний кварц, а драйвер libusb установлен в системе.

Подойдёт ли прошивка от ATmega8 для клона на ATmega88?

Нет, прошивки для разных микроконтроллеров несовместимы. В комплекте с официальной прошивкой идут отдельные hex-файлы для ATmega8 и ATmega48/88 — выбирайте файл строго под чип, установленный на вашей плате.

Опасно ли обновлять прошивку USBasp?

При соблюдении процедуры риск минимален: даже при неудачной записи микроконтроллер можно перепрошить повторно, ведь ISP-интерфейс остаётся доступным. Реальную опасность представляет только некорректная запись фьюзов, поэтому без необходимости их не меняйте.