Ошибка avrdude: error: program enable: target doesn't answer при попытке прошить ATmega328P почти всегда означает одно из трёх: неправильно подключены линии ISP, на микроконтроллер не подано питание или ранее были ошибочно записаны фьюз-биты, отключившие тактирование. Прежде чем менять программатор, проверьте цоколёвку разъёма и наличие напряжения на выводах VCC и AVCC чипа.
Микроконтроллер ATmega328P — сердце плат Arduino Uno и множества самодельных устройств. Чтобы записать в него прошивку напрямую, без загрузчика, нужен ISP-программатор, работающий по интерфейсу SPI. В этой статье разберём, какие программаторы совместимы с этим чипом, как их подключить и настроить, а также как диагностировать типовые сбои при прошивке.
Какие программаторы подходят для ATmega328P
ATmega328P поддерживает внутрисхемное программирование по протоколу ISP (In-System Programming) через линии MOSI, MISO, SCK и RESET. Это значит, что подойдёт любой программатор, реализующий AVR-совместимый ISP-интерфейс. Наиболее распространённые варианты:
- 🔌 USBasp — недорогой и самый популярный программатор на базе ATmega8; определяется в avrdude как -c usbasp.
- 🛠️ AVRISP mkII (оригинал или совместимый клон) — поддерживается фирменной средой Atmel Studio / Microchip Studio.
- 🧩 Arduino как ISP — скетч ArduinoISP превращает любую плату Arduino в полноценный программатор.
- ⚡ USBtinyISP — ещё один бюджетный вариант, совместимый с avrdude и Arduino IDE.
Отдельно стоит упомянуть прошивку через загрузчик (bootloader) по UART — так работают платы Arduino при обычной загрузке скетча через USB. Этот способ не требует программатора, но занимает часть флеш-памяти и не позволяет менять фьюз-биты. Для восстановления «окирпиченного» чипа или записи фьюзов нужен именно ISP-программатор.
💡Для записи фьюз-битов и восстановления чипа без загрузчика нужен ISP-программатор; USB-UART переходник для этого не подходит.