USBasp AVR программатор определяется системой как устройство, но AVRDUDE выдаёт ошибку could not find USB device — чаще всего причина в отсутствующем драйвере libusb, а не в неисправности самого адаптера. Это типичная ситуация при первом подключении к Windows, и решается она за несколько минут без пайки и замены железа.
USBasp — это недорогой внутрисхемный программатор для микроконтроллеров Atmel AVR (ATmega, ATtiny и других), построенный на микросхеме ATmega8 и использующий программную реализацию USB. Он подключается к целевому контроллеру через интерфейс ISP (In-System Programming) и позволяет записывать прошивку, читать память, менять фьюзы прямо на готовой плате — будь то Arduino, самодельное устройство или плата 3D-принтера.
В этой статье разберём распиновку разъёмов, установку драйверов, работу с консольной утилитой и графическими оболочками, а также типовые ошибки и способы их диагностики.
Что такое USBasp и для чего он нужен
Программатор USBasp создан на базе открытого проекта Томаса Фишла (Thomas Fischl) и выпускается множеством производителей в виде готовых плат с разъёмом USB-A или USB Type-B. Внутри стоит ATmega8 (реже — ATmega48/88), а прошивка эмулирует USB-устройство программно, без отдельного USB-чипа вроде FTDI или CH340.
Основное назначение — прошивка микроконтроллеров AVR через шести- или десятипроводной ISP-кабель. Типовые задачи:
- 🔧 Запись загрузчика (bootloader) в чистые чипы ATmega328P для самодельных Arduino-совместимых плат.
- 🔧 Прошивка микроконтроллеров напрямую из .hex-файлов, минуя загрузчик.
- 🔧 Восстановление «залоченных» контроллеров после неверно выставленных фьюзов (частично — см. раздел про ошибки).
- 🔧 Обновление прошивок плат 3D-принтеров, радиолюбительских конструкций, контроллеров ЧПУ.
Важно понимать ограничение: USBasp работает только с линейкой AVR по протоколу ISP. Микроконтроллеры STM32, ESP8266/ESP32, ARM-чипы других семейств он не прошивает — для них нужны свои программаторы (ST-Link, J-Link, встроенные USB-загрузчики).
Распиновка и подключение к целевой плате
Большинство плат USBasp комплектуются 10-пиновым разъёмом IDC (стандарт KANDA), реже встречается 6-пиновый вариант. Сигналы в обоих случаях одинаковые, отличается только разводка. Основные линии ISP:
| Сигнал | Назначение | Куда идёт на AVR |
|---|---|---|
| MOSI | Данные от программатора к МК | Вывод MOSI (например, PB3 у ATmega328P) |
| MISO | Данные от МК к программатору | Вывод MISO (PB4 у ATmega328P) |
| SCK | Тактовый сигнал | Вывод SCK (PB5 у ATmega328P) |
| RESET | Сброс, перевод в режим программирования | Вывод RESET микроконтроллера |
| VCC / GND | Питание целевой платы | Шины питания целевого устройства |
Точные номера выводов MOSI/MISO/SCK зависят от конкретного микроконтроллера — сверяйтесь с даташитом именно вашей модели. У ATtiny85, например, это совсем другие ножки, чем у ATmega328P.
⚠️ Внимание: не подавайте питание на целевую плату одновременно от программатора и от внешнего источника. Если плата уже запитана своим блоком питания, джампер питания на USBasp лучше снять, оставив общий провод GND. Встречное питание может вывести из строя стабилизаторы или порты.
Порядок безопасного подключения: сначала соедините ISP-кабелем программатор и обесточенную целевую плату, проверьте совпадение GND, затем подключайте USB к компьютеру. Отключение — в обратном порядке.
💡Если шлейф в комплекте 10-пиновый, а на целевой плате 6-пиновый ISP (как у Arduino), удобно использовать переходник 10→6 либо подключиться отдельными проводами Dupont по схеме из даташита.