Обновление прошивки USBasp: пошаговая инструкция

Ошибка error: program enable: target doesn't answer при работе с USBasp нередко указывает на устаревшую прошивку программатора, которая не поддерживает нужную скорость SCK или конфликтует с новыми версиями avrdude. Обновление прошивки USBasp — рабочий способ устранить подобные сбои, но процедура требует второго программатора: USBasp не умеет обновлять сам себя.

В этой инструкции разберём, как определить, что обновление действительно нужно, где брать прошивку, как перевести устройство в режим самопрограммирования и какие команды выполнить. Материал подходит для классических клонов USBasp на микроконтроллерах ATmega8 и ATmega88.

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

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

  • 🔧 avrdude выдаёт предупреждение вида warning: cannot set sck period и отказывается работать с некоторыми контроллерами.
  • 🐌 Программатор не может прошить целевой чип на низкой тактовой частоте, а перемычка slow SCK на плате отсутствует или не помогает.
  • 📦 В сообщениях avrdude фигурирует устаревшая версия прошивки — проверить её можно при любом обращении к устройству, утилита выводит версию в лог.
  • ⚡ Целевой микроконтроллер исправен и отвечает через другой программатор, но USBasp его «не видит».

Если же устройство вообще не определяется системой, причина чаще в драйвере (на Windows обычно решается установкой libusb-драйвера через Zadig) или в аппаратной неисправности — прошивка тут ни при чём.

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

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

  • 🖥️ Второй ISP-программатор: ещё один USBasp, AVRISP mkII, USBtinyISP или Arduino, прошитая скетчем ArduinoISP.
  • 🔌 Шлейф ISP 6 или 10 пин для соединения двух программаторов.
  • 💾 Файл прошивки с официального сайта проекта USBasp (архив содержит готовые .hex под разные микроконтроллеры).
  • ⚙️ Установленная утилита avrdude — она входит в состав Arduino IDE и распространяется отдельно.

Важно правильно выбрать файл прошивки: он должен соответствовать микроконтроллеру на плате вашего USBasp. Чаще всего это ATmega8, реже — ATmega48/88. Маркировка читается на корпусе чипа. Прошивка от другого контроллера просто не заработает.

Выбор и загрузка файла прошивки

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

Внутри архива имена файлов обычно содержат указание на контроллер, например вариант для ATmega8. Если на плате установлен кварц на 12 МГц — это стандартная конфигурация, под неё и собраны основные бинарники. Сомневаетесь в частоте — посмотрите маркировку кварцевого резонатора рядом с чипом.

📊 Какой микроконтроллер установлен на вашем USBasp?
ATmega8
ATmega48
ATmega88
Не знаю, ещё не смотрел

Перевод USBasp в режим самопрограммирования

Чтобы USBasp принял новую прошивку, его нужно перевести в режим, при котором он сам становится целевым устройством. Для этого на плате предусмотрен джампер, обычно подписанный как JP с пометкой self programming или похожей. На разных клонах маркировка отличается: встречаются варианты J2, JP1, SELF.

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

⚠️ Внимание: замыкайте только джампер самопрограммирования. Перемычка питания (выбор 5V/3.3V) и джампер slow SCK выполняют другие функции, их состояние на процесс обновления не влияет.
  1. Отключите оба программатора от USB.
  2. Установите перемычку самопрограммирования на обновляемом USBasp.
  3. Соедините ISP-разъёмы двух программаторов шлейфом, соблюдая распиновку (MOSI к MOSI, MISO к MISO, SCK к SCK, RESET, VCC, GND).
  4. Подключите к компьютеру именно «мастер» — тот программатор, который будет прошивать.

☑️ Готовность к прошивке USBasp

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

Прошивка через avrdude

Дальнейшие действия выполняются в командной строке. Сначала убедитесь, что мастер-программатор видит целевой чип — выполните чтение сигнатуры:

avrdude -c usbasp -p m8

Здесь -p m8 указывает на ATmega8; для ATmega88 используйте m88. Если в ответ пришла корректная сигнатура — связь есть, можно прошивать. Если avrdude сообщает об ошибке инициализации, проверяйте шлейф и перемычку, не переходя к записи.

Команда записи прошивки выглядит так:

avrdude -c usbasp -p m8 -U flash:w:usbasp.atmega8.xxxx.hex:i

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

⚠️ Внимание: не прерывайте процесс записи и не отключайте шлейф до появления сообщения об успешной верификации. Обрыв на середине оставит устройство с повреждённой прошивкой, и восстановить его можно будет только тем же способом — через внешний программатор.
Что делать, если avrdude не видит целевой чип

Проверьте, что питание целевой платы подаётся — многие USBasp питают цель от своего VCC, но на некоторых клонах эта линия отключаемая. Убедитесь, что шлейф не перевернут: контакт 1 обычно помечен треугольником или полоской. Попробуйте добавить ключ -B для снижения скорости, например -B 10, если мастер поддерживает настройку SCK.

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

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

Финальная проверка — реальная прошивка целевого микроконтроллера, с которым раньше наблюдались проблемы. Если обновление выполнялось из-за ошибки SCK, убедитесь, что предупреждение исчезло и запись проходит на нужной скорости.

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

СимптомВероятная причинаДействие
target doesn't answer при прошивке USBaspНет перемычки self-programming или перепутан шлейфПроверить джампер и распиновку ISP
verification error после записиПлохой контакт шлейфа, помехиПересоединить шлейф, повторить запись
Устройство не определяется ПК после прошивкиЗаписан hex не под тот контроллерПрошить корректный файл повторно
cannot set sck period остаётсяПрошивка не обновилась или старая версия файлаСверить версию в выводе avrdude
avrdude не находит мастер-программаторДрайвер не установлен (Windows)Установить драйвер через Zadig

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

FAQ: частые вопросы об обновлении USBasp

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

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

Нужно ли менять фьюзы при обновлении прошивки?

В штатной процедуре — нет. Фьюзы уже корректно выставлены на работающем устройстве. Менять их без точного понимания значений опасно: неверная комбинация может заблокировать контроллер.

Как узнать текущую версию прошивки USBasp?

Подключите программатор к ПК и выполните любое обращение через avrdude, например чтение сигнатуры целевого чипа. Утилита выводит версию прошивки программатора в служебных строках лога.

Что делать, если на плате нет джампера self-programming?

На многих клонах предусмотрены только контактные площадки без штыревой вилки. Их нужно замкнуть припаянной перемычкой на время прошивки, а после — убрать. Расположение площадок уточняйте по шелкографии конкретной платы.

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

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