Ошибка 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
☑️ Проверка перед прошивкой
Если avrdude сообщает, что сигнатура не совпадает, сначала проверьте модель чипа в команде и качество контактов — принудительная прошивка с флагом игнорирования сигнатуры может «окирпичить» устройство при неверно указанной модели.
⚠️ Внимание: будьте предельно аккуратны с записью fuse-битов (младший, старший, расширенный байты). Неверные значения могут отключить ISP-интерфейс или перевести тактирование на внешний источник, после чего чип перестанет отвечать программатору. Перед изменением фьюзов сверяйтесь с даташитом на конкретный микроконтроллер.
Медленный SCK и перемычка Slow SCK
Распространённая ситуация: новый микроконтроллер с заводскими фьюзами тактируется от внутреннего RC-генератора с делителем, и его тактовая частота низкая. По правилам ISP частота SCK должна быть заметно ниже тактовой частоты целевого чипа, иначе программирование невозможно — avrdude выдаёт ошибку инициализации.
Для этого на многих платах USBasp предусмотрена перемычка Slow 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 до версии с поддержкой автоматического снижения скорости.