Ошибка could not find USB device "USBasp" при попытке прошить микроконтроллер через USBasp почти всегда означает, что Windows не установила драйвер libusb — сам программатор при этом обычно исправен. USBasp — это открытый проект программатора для микроконтроллеров AVR, разработанный Томасом Фишлем (Thomas Fischl) и опубликованный на его сайте www.fischl.de/usbasp. Именно оттуда берутся оригинальная схема, прошивка и документация.

Проект распространяется по открытой лицензии, поэтому клонов USBasp на рынке множество — от аккуратных плат до дешёвых версий с урезанной схемой. В этой статье разберём, что представляет собой устройство, как его подключить, установить драйверы, прошивать чипы через avrdude и что делать при типичных сбоях.

Что такое USBasp и почему ссылаются на fischl.de

USBasp — это USB-программатор для внутрисхемного программирования (ISP) микроконтроллеров семейства AVR: ATmega, ATtiny и других. Аппаратно он построен на микроконтроллере ATmega8 (или совместимом) и реализует USB-интерфейс программно, без отдельной микросхемы-преобразователя.

Сайт fischl.de — первоисточник проекта. Там опубликованы принципиальная схема, разводка платы, исходный код прошивки и готовые бинарные файлы. Когда в инструкциях встречается ссылка «www fischl de usbasp», речь идёт именно об этой странице как об официальном источнике.

Поскольку проект открытый, большинство продаваемых плат — это клоны. Они функционально совместимы, но могут отличаться компоновкой, наличием перемычек и даже версией предустановленной прошивки.

💡

USBasp — открытый проект Томаса Фишла; страница fischl.de/usbasp является официальным источником схемы, прошивки и документации.

Распиновка и подключение к целевому микроконтроллеру

Программатор подключается к целевой плате через стандартный ISP-разъём — 10-пиновый (KANDA) или 6-пиновый. Многие клоны оснащены 10-пиновым разъёмом, а для перехода на 6-пиновый используется адаптер.

Используются следующие линии интерфейса ISP:

  • 🔌 MOSI — данные от программатора к микроконтроллеру;
  • 📥 MISO — данные от микроконтроллера к программатору;
  • ⏱️ SCK — тактовый сигнал синхронизации;
  • 🔄 RESET — сброс, переводящий чип в режим программирования;
  • VCC и GND — питание целевой схемы и общий провод.

На многих платах USBasp есть перемычка выбора напряжения питания цели (обычно 5 В или 3,3 В) и перемычка JP для подачи питания на целевую плату. Расположение и маркировка перемычек зависят от конкретного клона — сверяйтесь с шелкографией своей платы.

⚠️ Внимание: не подавайте питание на целевую плату одновременно от программатора и от внешнего источника — это может вывести из строя стабилизатор или порты микроконтроллера. Выберите один источник питания.

Установка драйверов в Windows

Главная особенность USBasp — отсутствие стандартного USB-чипа. Устройство определяется системой как USBasp, и для него требуется драйвер на базе libusb. Без него avrdude не увидит программатор, даже если устройство отображается в диспетчере устройств.

Наиболее распространённый способ установки — утилита Zadig, которая подменяет драйвер устройства на libusb:

  • 🖥️ Подключите USBasp к порту USB компьютера;
  • 📋 Запустите Zadig и в меню Options включите List All Devices;
  • 🎯 Выберите в списке устройство USBasp;
  • ✅ Укажите драйвер libusbK или libusb-win32 и нажмите установку.

В Linux отдельный драйвер обычно не нужен — ядро поддерживает устройство напрямую, но может потребоваться правило udev для доступа без прав root. В macOS ситуация аналогична: система видит устройство через стандартный USB-стек.

💡

Если Zadig не видит USBasp в списке, попробуйте другой USB-порт (лучше напрямую, без хаба) и проверьте кабель — в некоторых кабелях есть только линии питания.

Прошивка микроконтроллеров через avrdude

Стандартный инструмент для работы с USBasp — консольная утилита avrdude. Она входит в состав toolchain для AVR и поддерживается Arduino IDE при выборе программатора USBasp.

Базовая проверка связи с целевым чипом выглядит так — утилита должна определить сигнатуру микроконтроллера:

avrdude -c usbasp -p m328p

Здесь -c usbasp задаёт тип программатора, а -p m328p — модель целевого чипа (в примере ATmega328P). Запись прошивки во флеш-память выполняется командой вида:

avrdude -c usbasp -p m328p -U flash:w:firmware.hex:i

☑️ Проверка перед прошивкой

Выполнено: 0 / 5

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

⚠️ Внимание: будьте предельно аккуратны с записью fuse-битов (младший, старший, расширенный байты). Неверные значения могут отключить ISP-интерфейс или перевести тактирование на внешний источник, после чего чип перестанет отвечать программатору. Перед изменением фьюзов сверяйтесь с даташитом на конкретный микроконтроллер.

Медленный SCK и перемычка Slow SCK

Распространённая ситуация: новый микроконтроллер с заводскими фьюзами тактируется от внутреннего RC-генератора с делителем, и его тактовая частота низкая. По правилам ISP частота SCK должна быть заметно ниже тактовой частоты целевого чипа, иначе программирование невозможно — avrdude выдаёт ошибку инициализации.

Для этого на многих платах USBasp предусмотрена перемычка Slow SCK (медленный режим тактирования). Установите её при первой прошивке нового чипа, а после перенастройки фьюзов на более высокую частоту перемычку можно снять. На части клонов эта перемычка отсутствует или не реализована в прошивке — тогда помогает обновление прошивки программатора.

📊 С какой проблемой вы столкнулись при использовании USBasp?
Windows не видит устройство
avrdude не находит программатор
Ошибка сигнатуры чипа
Не прошивается новый чип (медленный SCK)
Всё работает без проблем

Обновление прошивки самого USBasp

Многие недорогие клоны поставляются с устаревшей версией прошивки. Симптомы — ошибки при работе с новыми версиями avrdude, отсутствие поддержки медленного SCK, предупреждение warning: cannot set sck period. Обновление прошивки решает часть этих проблем.

Процедура требует второго программатора (другого USBasp, Arduino в режиме ArduinoISP или любого ISP-программатора):

  • 🔗 Замкните на обновляемом USBasp перемычку самопрограммирования (часто маркируется JP или SELF — расположение зависит от клона);
  • 💾 Подключите второй программатор к ISP-разъёму обновляемого;
  • 📦 Запишите актуальный hex-файл прошивки USBasp через avrdude, указав модель чипа программатора (обычно ATmega8 или ATmega88);
  • 🔓 Снимите перемычку и проверьте работу устройства.

Файл прошивки берите только с официальной страницы проекта на fischl.de — сторонние «улучшенные» версии могут быть несовместимы с разводкой конкретного клона.

Как узнать версию прошивки USBasp

При инициализации avrdude выводит строку с версией прошивки программатора, если она поддерживается. Запустите avrdude -c usbasp -p m328p и посмотрите первые строки ответа — там указана версия, если прошивка её сообщает.

Типичные ошибки и их диагностика

Большинство проблем с USBasp сводится к ограниченному набору причин. Таблица ниже поможет сориентироваться:

СимптомВероятная причинаЧто проверить
Устройство не определяется системойКабель без линий данных, неисправный портДругой кабель и порт USB напрямую
avrdude: could not find USBaspНе установлен драйвер libusbПереустановка драйвера через Zadig
Ошибка инициализации targetНет питания цели, перепутаны линии ISPПеремычка питания, распиновка разъёма
Неверная сигнатураНеправильная модель в -p или плохой контактМаркировка чипа, качество соединений
cannot set sck periodУстаревшая прошивка программатораОбновление прошивки USBasp

Если после всех проверок программатор не оживает, возможна аппаратная неисправность — например, повреждение стабилитронов на линиях USB или самого микроконтроллера. Такие платы стоят недорого, и часто проще заменить устройство, чем ремонтировать.

💡

Держите под рукой переходник с 10-пинового разъёма на 6-пиновый и набор проводов «мама-мама» — цоколёвка ISP-разъёмов на целевых платах встречается разная.

Часто задаваемые вопросы

Подходит ли USBasp для прошивки Arduino?

Да. USBasp поддерживается Arduino IDE: выберите в меню программатор USBasp и используйте функцию загрузки через программатор. Учтите, что при этом стирается загрузчик (bootloader) — вернуть его можно той же средой через «Записать загрузчик».

Работает ли USBasp в Windows 10 и 11?

Работает, но требуется установка драйвера libusb через Zadig, поскольку стандартного подписанного драйвера у проекта нет. Процедура одинакова для обеих версий системы.

Чем USBasp отличается от USBtinyISP и AVRISP mkII?

Все три — ISP-программаторы для AVR, но с разной реализацией. USBasp программно реализует USB на ATmega8 и является открытым проектом; USBtinyISP — тоже открытый, на ATtiny; AVRISP mkII — фирменное решение Atmel/Microchip. Для большинства любительских задач возможностей USBasp достаточно.

Можно ли прошивать чипы с питанием 3,3 В?

Можно, если на плате программатора есть перемычка выбора напряжения — переключите её на 3,3 В. Если перемычки нет, уточните схему конкретного клона: подача 5 В на 3,3-вольтовую схему может повредить целевой чип.

Почему новый ATtiny не определяется программатором?

Возможная причина — низкая заводская тактовая частота чипа при слишком быстром SCK программатора. Установите перемычку Slow SCK, если она есть, либо обновите прошивку USBasp до версии с поддержкой автоматического снижения скорости.