Ошибка error: program enable: target doesn't answer при работе с USBasp чаще всего указывает не на неисправность целевого микроконтроллера, а на устаревшую прошивку самого программатора — старые версии микропрограммы не поддерживают автоматическое снижение скорости SPI для «медленных» чипов. Решение — перепрошить ATmega8, стоящий внутри USBasp, на актуальную версию прошивки от Thomas Fischl. Для этого понадобится второй рабочий программатор: USBasp не может прошить сам себя.

В этой статье разберём, как определить необходимость обновления, какие перемычки установить на плате, какую команду ввести в avrdude и как проверить результат. Материал подходит для классических клонов USBasp на ATmega8 и ATmega8A, а также для плат на ATmega48/88 — различия оговорены отдельно.

Когда нужно прошивать ATmega8 в USBasp

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

  • 🔧 Ошибка «target doesn't answer» при прошивке новых чипов с заводским тактированием 1 МГц — старая прошивка не умеет снижать скорость SCK автоматически.
  • 🐢 Отсутствие опции -B (slow SCK) в старых версиях — avrdude выдаёт предупреждение warning: cannot set sck period.
  • 💾 Покупка «пустой» платы или замена ATmega8 — новый чип требует заливки прошивки USBasp с нуля.
  • 🧱 Программатор «окирпичен» неудачной прошивкой или залит некорректным hex-файлом.

Если программатор стабильно шьёт ваши микроконтроллеры без ошибок, обновлять его «на всякий случай» не обязательно. Риск неудачной перепрошивки хоть и невелик, но существует, и без второго программатора восстановить устройство будет сложно.

Что понадобится для прошивки

Ключевое требование: для записи прошивки в ATmega8 внутри USBasp нужен второй ISP-программатор. Это может быть другой USBasp, Arduino с скетчем ArduinoISP, AVRISP mkII, STK500-совместимый программатор или даже самодельный вариант на LPT-порту для старых ПК.

Помимо программатора, подготовьте:

  • 💻 Компьютер с установленным avrdude (входит в состав Arduino IDE и WinAVR, доступен отдельно для Windows, Linux и macOS).
  • 📄 Файл прошивки usbasp.atmega8.xxxx-xx-xx.hex с официального сайта проекта USBasp (fischl.de) — брать сторонние «модифицированные» hex-файлы без проверки не стоит.
  • 🔌 Шлейф ISP 10-pin или 6-pin для соединения двух программаторов, либо перемычки «мама-мама» при разных разъёмах.
  • 🔍 Лупу или хорошее освещение — перемычки на плате мелкие, и путать их нельзя.
💡

Если второго программатора нет, самый дешёвый вариант — Arduino Uno/Nano с загруженным примером ArduinoISP. Она работает как полноценный ISP-программатор и определяется avrdude как stk500v1.