Микроконтроллер ATmega328P отказывается определяться программатором, а avrdude выдаёт ошибку target doesn't answer — чаще всего причина в неправильном подключении линий SPI или в ранее выставленных фьюзах, отключивших тактирование. Эта ситуация знакома почти каждому, кто переходит от готовых плат Arduino Uno к работе с «голым» чипом на макетке или в собственном устройстве.
Прошить ATmega328P можно несколькими способами: через дешёвый программатор USBasp, превратив плату Arduino в программатор по схеме Arduino as ISP, либо через последовательный порт, если в чип уже записан загрузчик. Ниже разберём каждый метод, порядок подключения, работу с фьюзами и типичные ошибки, из-за которых чип «не шьётся».
Что понадобится для прошивки
Минимальный набор зависит от выбранного способа, но базовые требования одинаковы. Понадобится сам микроконтроллер ATmega328P (в корпусе DIP-28 удобнее для макетки), программатор и соединительные провода. Для тактирования от внешнего кварца потребуются кварцевый резонатор и два керамических конденсатора — обычно используют кварц на 8 или 16 МГц и конденсаторы порядка 18–22 пФ, точные значения стоит сверить с документацией на конкретный резонатор.
Из программного обеспечения чаще всего применяют avrdude — консольную утилиту, которая идёт в комплекте с Arduino IDE. Подойдёт и графическая оболочка поверх avrdude, если командная строка неудобна.
- 🔌 Программатор USBasp, USBtinyISP или плата Arduino для режима ISP
- 🧷 Провода для подключения шести линий ISP-интерфейса
- ⚡ Стабильное питание 5 В или 3,3 В — в зависимости от схемы устройства
- 💻 Утилита avrdude или Arduino IDE установленной версии
Держите под рукой даташит на ATmega328P: распиновка выводов ISP (MOSI, MISO, SCK, RESET) указана в разделе Memory Programming, и сверка с ней исключает ошибки подключения.