Ошибка target doesn't answer при попытке прошить ATmega328 через USBasp почти всегда означает одно из трёх: перепутаны линии MOSI/MISO, микроконтроллер не получает питание, или ранее были выставлены фьюзы на внешний кварцевый резонатор, которого на плате нет. Эта связка — программатор USBasp и микросхема ATmega328 (в том числе версия ATmega328P) — одна из самых распространённых в DIY-электронике, и прошить её можно буквально за несколько минут, если правильно собрать схему и корректно вызвать avrdude.

В этом руководстве разберём подключение по интерфейсу ISP, установку драйверов, команды avrdude для чтения и записи прошивки, а также типичные проблемы и способы их диагностики. Материал подходит как для «голого» чипа на макетке, так и для прошивки ATmega328P, установленного на плату типа Arduino Uno через штыревой разъём ICSP.

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

Программатор USBasp построен на микроконтроллере ATmega8 и работает через USB без отдельного COM-порта. Он поддерживает внутрисхемное программирование (ISP) практически всех AVR-контроллеров, включая ATmega328. Для работы потребуется минимальный набор:

  • 🔌 Программатор USBasp с 10-пиновым или 6-пиновым ISP-разъёмом (или переходник 10→6 pin).
  • 💻 Компьютер с Windows, Linux или macOS и установленной утилитой avrdude.
  • 🔧 Сам микроконтроллер ATmega328/ATmega328P на макетной плате или в устройстве с выведенным разъёмом ICSP.
  • 🔋 Источник питания: либо джампер +5V/+3.3V на самом USBasp, либо внешнее питание целевой платы.
  • 📂 Файл прошивки в формате .hex.

Обратите внимание на версию прошивки самого программатора. Старые экземпляры USBasp могут не уметь понижать скорость шины SPI перемычкой JP3 (slow SCK), что критично для чипов с заводской тактовой частотой 1 МГц. Если перемычки нет, низкую скорость можно задать программно — параметром -B в avrdude.

💡

USBasp прошивает ATmega328 по интерфейсу ISP через шесть линий: MOSI, MISO, SCK, RESET, VCC и GND. Корректность этих подключений определяет 90% успеха.