Если программатор USBasp при подключении к ПК выдаёт ошибку error: program enable: target doesn't answer или система вообще не определяет устройство, частая причина — устаревшая прошивка микроконтроллера ATmega8 внутри самого программатора. Обновление прошивки USBasp выполняется вторым программатором через штатный ISP-разъём — сам себя без специальной перемычки он прошить не может.
В отличие от обычной прошивки целевого микроконтроллера, здесь USBasp выступает в роли программируемого устройства. Ниже разберём, какая прошивка нужна, как замкнуть перемычку самопрограммирования и какими командами avrdude залить новый firmware.
Когда требуется обновление прошивки USBasp
Обновление имеет смысл не всегда. Сначала проверьте, действительно ли проблема в прошивке, а не в драйвере или кабеле. Типичные признаки устаревшей версии firmware:
- 🔴 avrdude выдаёт предупреждение «cannot set sck period» и советует обновить прошивку;
- 🔴 программатор не определяется в системе даже после установки драйвера libusb;
- 🔴 устройство работает нестабильно с новыми версиями avrdude;
- 🔴 купленный клон изначально содержит старую или криво залитую прошивку.
Китайские клоны USBasp часто поставляются с модифицированной прошивкой, которая конфликтует с новыми версиями avrdude. Если программатор работает стабильно и не выдаёт ошибок — обновлять его не обязательно.
Что понадобится для обновления
Для перепрошивки USBasp потребуется второй программатор: это может быть ещё один USBasp, AVRISP mkII, USBtinyISP или даже плата Arduino, работающая в режиме ArduinoISP. Без второго программатора обновить firmware невозможно — USBasp не поддерживает самопрограммирование через USB напрямую.
Также подготовьте:
- 🛠️ установленный пакет avrdude (входит в состав Arduino IDE и WinAVR);
- 🛠️ файл прошивки в формате
.hex— официальная версия от автора проекта Thomas Fischl; - 🛠️ шлейф или перемычки для соединения ISP-разъёмов (MOSI, MISO, SCK, RESET, VCC, GND);
- 🛠️ пинцет или джампер для замыкания перемычки самопрограммирования.
⚠️ Внимание: скачивайте прошивку только с официального сайта проекта USBasp (fischl.de) или из проверенных репозиториев. Файлы с непонятных форумов могут содержать несовместимую версию под другой микроконтроллер — заливка прошивки для ATmega88 в плату с ATmega8 приведёт к неработоспособности.
Подготовка: перемычка самопрограммирования
На плате USBasp предусмотрены контакты для перевода устройства в режим программируемой цели. На оригинальной плате это перемычка JP2 (или контакты, подписанные как SELFPROG), на китайских клонах — часто нераспаянные площадки рядом с микроконтроллером.
Порядок действий: найдите на плате пару контактов самопрограммирования, замкните их джампером или припаяйте временную перемычку. На некоторых клонах вместо JP2 нужно замкнуть контакт RESET микроконтроллера на землю — распиновку конкретной платы сверяйте с её схемой, так как разводка клонов различается.
Как найти перемычку на китайском клоне
На большинстве синих плат клонов USBasp перемычка расположена рядом с кварцевым резонатором и подписана JP2 или JP3. Если подписей нет, прозвоните мультиметром контакты от вывода RESET микроконтроллера ATmega8 — нужная пара контактов замыкает RESET на землю. При сомнениях найдите фото своей ревизии платы в интернете по маркировке на шелкографии.
Пошаговая инструкция по обновлению прошивки
После замыкания перемычки подключите внешний программатор к ISP-разъёму USBasp. Питание можно подать от программатора, если он поддерживает питание цели 5 В, либо подключить USBasp к USB-порту компьютера.
☑️ Перед прошивкой USBasp
Далее проверьте связь с микроконтроллером командой чтения сигнатуры:
avrdude -c usbasp -p m8 -v
Если сигнатура прочиталась корректно (для ATmega8 это 0x1e9307), заливайте прошивку. Команда записи firmware:
avrdude -c usbasp -p m8 -U flash:w:usbasp.atmega8.2011-05-28.hex:i
Имя hex-файла укажите то, что соответствует скачанной вами версии. После записи avrdude автоматически выполнит верификацию — дождитесь сообщения об успешной проверке, затем отключите программатор и снимите перемычку.
Настройка фьюзов ATmega8
На свежем или «восстановленном» микроконтроллере одной записи flash-памяти недостаточно — нужно проверить фьюз-биты. Для USBasp на ATmega8 с внешним кварцем 12 МГц стандартные значения: hfuse=0xC9, lfuse=0xEF. Они задают тактирование от внешнего кварца и отключают bootloader-секцию.
Записать фьюзы можно командой:
avrdude -c usbasp -p m8 -U hfuse:w:0xC9:m -U lfuse:w:0xEF:m
⚠️ Внимание: ошибка в значениях фьюзов способна «залочить» микроконтроллер — например, при отключении RESET (фьюз RSTDISBL) или выборе несуществующего источника тактирования чип перестанет отвечать по ISP. Перед записью сверяйте значения с документацией проекта USBasp и никогда не меняйте фьюзы «наугад».
Если микроконтроллер уже был рабочим и вы только обновляете firmware, фьюзы трогать не нужно — они сохраняются при записи flash.
Типичные ошибки и их решения
Даже при правильной процедуре обновление может не пройти с первого раза. Ниже — частые проблемы и способы их диагностики.
| Ошибка / симптом | Вероятная причина | Решение |
|---|---|---|
| target doesn't answer | Перемычка не замкнута или нет контакта по ISP | Проверить джампер и прозвонить линии MOSI/MISO/SCK/RESET |
| invalid signature | Неверно указан чип или перепутаны провода | Проверить ключ -p m8 и распиновку шлейфа |
| verification mismatch | Повреждённый hex-файл или помехи по питанию | Скачать прошивку заново, сократить длину шлейфа |
| could not find USB device | Не установлен драйвер libusb на ПК | Установить драйвер через Zadig |
| Программатор не виден после прошивки | Не снята перемычка самопрограммирования | Отключить USB, снять джампер, подключить заново |
Отдельно стоит ошибка cannot set sck period — это не сбой, а предупреждение о том, что старая прошивка не поддерживает программное изменение частоты SCK. Она лечится как раз обновлением firmware либо перемычкой «медленного режима» (JP3 на оригинальной плате).
Проверка результата после обновления
После снятия перемычки подключите обновлённый USBasp к компьютеру. Система должна определить устройство без ошибок, а avrdude — прочитать сигнатуру любого подключённого целевого микроконтроллера, например ATmega328P.
Команда для финальной проверки:
avrdude -c usbasp -p m328p
Если сигнатура целевого чипа читается и предупреждение о версии прошивки исчезло — обновление прошло успешно. Самый надёжный признак корректной прошивки — стабильное чтение и запись реального микроконтроллера без единой ошибки верификации.
Часто задаваемые вопросы
Можно ли обновить прошивку USBasp без второго программатора?
Нет. USBasp не имеет USB-загрузчика, поэтому для записи новой прошивки в его ATmega8 обязательно нужен внешний ISP-программатор: второй USBasp, Arduino в режиме ArduinoISP или любой другой совместимый с avrdude.
Какая версия прошивки USBasp самая свежая?
Официальная последняя версия от автора проекта датирована 2011 годом — проект давно не обновляется, но эта прошивка стабильно работает с современными версиями avrdude. Существуют также сторонние модификации с поддержкой TPI и PDI, однако их стоит использовать только при понимании отличий.
Что делать, если после прошивки USBasp не определяется?
Сначала проверьте, снята ли перемычка самопрограммирования — это самая частая причина. Затем убедитесь, что прошивка записана под правильный микроконтроллер (ATmega8, а не ATmega88/48), фьюзы выставлены на внешний кварц, а драйвер libusb установлен в системе.
Подойдёт ли прошивка от ATmega8 для клона на ATmega88?
Нет, прошивки для разных микроконтроллеров несовместимы. В комплекте с официальной прошивкой идут отдельные hex-файлы для ATmega8 и ATmega48/88 — выбирайте файл строго под чип, установленный на вашей плате.
Опасно ли обновлять прошивку USBasp?
При соблюдении процедуры риск минимален: даже при неудачной записи микроконтроллер можно перепрошить повторно, ведь ISP-интерфейс остаётся доступным. Реальную опасность представляет только некорректная запись фьюзов, поэтому без необходимости их не меняйте.