Главная страница » Arduino » Arduino: avrdude stk500_recv и not in sync — как исправить
Arduino: avrdude stk500_recv и not in sync — как исправить
Arduino

Arduino: avrdude stk500_recv и not in sync — как исправить

05.10.2026 17

Порядок проверки Arduino Uno и классического Nano, если скетч собрался, но не загружается: выбираем плату, порт и Processor, тестируем Blink и разбираем ограничения CH340.

Скетч скомпилировался, но Arduino IDE повторяет avrdude: stk500_recv(): programmer is not responding и stk500_getsync(): not in sync. На этапе загрузки программа не получила ожидаемого ответа. Переписывать скетч обычно рано: сначала проверяют выбранную плату, порт, процессор классического Nano и соединение с загрузчиком.

Этот порядок рассчитан прежде всего на классические Arduino Uno, Nano и Mega с AVR. Uno R4, Nano Every, Nano ESP32 и другие платы используют другую аппаратную платформу и могут иметь иной механизм загрузки. Похожее название платы не означает совместимость её настроек в IDE.

Что означает stk500_recv и not in sync

Arduino IDE сначала компилирует программу для выбранной платы, затем запускает инструмент записи прошивки. В рассматриваемом случае это avrdude. Название stk500 относится к протоколу обмена; оно само по себе не требует покупки отдельного программатора.

avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x00

Последняя строка exit status 1 только сообщает о неуспехе операции. Причину ищите выше. Значение resp=0x00 не является диагнозом «сгорел микроконтроллер»: тот же результат может появиться при неверной плате, неподходящем загрузчике, помехах на UART и других сбоях обмена.

СообщениеНаправление проверки
stk500_recv / stk500_getsyncПлата, процессор Nano, порт, сброс, UART и загрузчик
ser_open: access is denied / resource busyПрограмма, занявшая порт, и права доступа
can't set com-stateНастройка COM-порта Windows и совместимость драйвера
No such file or directoryВыбранный порт исчез или изменился
Ошибка компиляцииИсходник, библиотека и пакет платформы до загрузки

Для can't set com-state есть отдельная инструкция по COM-порту и драйверу CH340. Не переносите её действия на любое сообщение avrdude: ошибка выбора загрузчика и ошибка настройки драйвера возникают на разных этапах.

Шаг 1. Оставьте плату и USB-кабель

Отключите питание, снимите подключённые модули и shield, затем подключите одну плату к компьютеру. Особенно важны выводы D0/RX и D1/TX: внешнее устройство на этих линиях может мешать обмену при загрузке. Верните модули после успешного теста.

Возьмите USB-кабель с передачей данных, подключите плату напрямую, без сомнительного удлинителя или концентратора. Свечение индикатора питания подтверждает питание, но не исправность сигнальных проводов USB. При возможности повторите проверку с другим заведомо рабочим кабелем.

Минимальный стенд разделяет причины. Если Blink загружается на пустой плате, а после подключения модулей появляется ошибка, искать нужно в подключениях, питании или занятых линиях. Новая установка IDE в этом случае вряд ли поможет.

Шаг 2. Выберите реальный порт и точную модель

Посмотрите список портов в IDE, отключите плату, запомните исчезнувший порт и подключите её снова. Выберите появившийся порт. В Windows это обычно COM-имя, в Linux или macOS — путь устройства. Не копируйте COM-номер с чужого скриншота: он зависит от вашего компьютера и подключения.

Выберите точную модель в меню платы. Для классического Uno нужен соответствующий Uno из пакета Arduino AVR Boards. Для классического Nano выберите Arduino Nano, а не Nano Every. Для Mega проверьте модель и процессор своей платы. Автоматическое определение неизвестного USB-UART не всегда способно выбрать правильную плату за вас.

Если порт вообще не появляется, диагностика stk500 пока вторична. Сначала проверьте кабель и обнаружение устройства операционной системой. Если IDE показывает порт Bluetooth или другого оборудования, его выбор не создаст соединение с Arduino.

Шаг 3. Для классического Nano проверьте Processor

В меню Tools → Processor для классического Nano есть несколько вариантов. Оригинальные Nano, продаваемые с 2018 года, получили обновлённый загрузчик. У более старых плат и части совместимых плат применяется другой вариант; некоторые платы используют ATmega168 вместо ATmega328P.

  1. Выберите Arduino Nano из Arduino AVR Boards.
  2. Для платы с ATmega328P попробуйте ATmega328P и загрузите Blink.
  3. Если связи нет, выберите ATmega328P (Old Bootloader) и повторите загрузку.
  4. Вариант ATmega168 применяйте, когда он соответствует микроконтроллеру платы.

Переключение Processor меняет параметры, которыми IDE пытается связаться с установленным загрузчиком. Оно не перепрошивает загрузчик само по себе. Надпись CH340 описывает USB-UART, а не версию загрузчика ATmega328P: наличие этого чипа не позволяет выбрать Processor по одному признаку.

Когда рабочий вариант найден, зафиксируйте его вместе с моделью платы. На следующем запуске IDE проверьте настройки перед загрузкой. Это особенно полезно, если вы чередуете несколько Nano и Uno на одном компьютере.

Шаг 4. Загрузите стандартный Blink

Откройте встроенный пример File → Examples → 01.Basics → Blink. Этот тест убирает зависимость от библиотек вашего проекта и показывает, может ли IDE загрузить простую программу при выбранных параметрах. Не добавляйте код датчиков до завершения проверки.

Закройте другие экземпляры IDE, внешние терминалы и программы мониторинга COM-порта. При занятости порта часто появляется отдельное сообщение ser_open, но проверка всё равно полезна. Нажмите обычную кнопку Upload. Команда Upload Using Programmer предназначена для другого способа записи и не является исправлением обычной загрузки через USB.

Если Blink загрузился, верните свой скетч без подключённых модулей. Если загружается и он, подключайте периферию по одному устройству. Сохраните состояние, при котором ошибка возвращается: оно даст конкретную точку для проверки схемы.

Шаг 5. Посмотрите подробный журнал загрузки

В настройках IDE включите подробный вывод для загрузки. Название пункта зависит от языка интерфейса. Повторите одну попытку и сохраните журнал целиком: выбранный порт, параметры запуска avrdude и первую ошибку. Сравнивать только последнюю строку двух разных ошибок бесполезно.

Для диагностики запишите модель платы, маркировку микроконтроллера и USB-UART, версию IDE и пакета Arduino AVR Boards, ОС, выбранный Processor, порт и результат Blink. Пути к домашней папке и другие личные данные перед публичной отправкой журнала можно убрать.

Если stk500 сменился на ser_open, это изменение этапа сбоя. Вернитесь к доступности порта, а не продолжайте выбирать загрузчик. Если Blink проходит только с определённым кабелем, зафиксируйте результат проверки USB-соединения.

Сброс, loopback и загрузчик: когда они нужны

Попробуйте штатный RESET на своей плате и повторите загрузку. Автоматический сброс обычно должен переводить классическую AVR-плату в загрузчик перед записью. Если ручной сброс меняет поведение, запишите наблюдение: оно полезно для проверки цепи сброса, но не доказывает её неисправность.

Arduino предлагает loopback-тест для ряда классических Uno, Mega и Nano. Он проверяет часть пути через последовательный адаптер, а не весь микроконтроллер. Выполнять соединения нужно по официальной инструкции для своей платы, предварительно отключив питание.

Ограничение для CH340: официальная инструкция Arduino указывает, что этот loopback-тест всегда завершится неуспехом на некоторых производных платах с USB-UART CH340. Такой результат нельзя использовать как универсальное доказательство поломки этих плат.

Перезапись загрузчика через ISP рассматривается после проверок модели, Processor, кабеля, порта и периферии. Для неё нужны правильная схема подключения, совместимый программатор или другая Arduino и параметры целевой платы. Операция может затронуть существующий скетч. Не начинайте с неё только из-за resp=0x00.

Частые вопросы

Нужно ли менять Programmer в меню IDE?

Для обычной загрузки через USB на классический Uno или Nano произвольная смена Programmer обычно не решает эту ошибку. Сначала используйте обычную Upload и правильные Board, Processor и Port. Настройка внешнего программатора относится к записи через ISP и загрузчику.

Поможет ли проверить скетч онлайн?

Онлайн-проверка скетча Arduino помогает с исходником в пределах возможностей сервиса, но не проверяет физический кабель, выбранный COM-порт и ответ загрузчика. Если ошибка появилась после успешной компиляции, связь проверяют на компьютере с платой.

Почему ошибка возвращается после подключения датчика?

Сравните назначение выводов и питание. Периферия на D0/D1 может пересекаться с UART, а исполнительное устройство способно создавать просадку питания. Для планирования подключений классических AVR-плат пригодится конструктор Arduino с проверкой конфликтов GPIO; электрические параметры модуля проверяются отдельно.

Проверка результата

Рабочий результат — завершённая загрузка и выполнение программы. Загрузите Blink, убедитесь в ожидаемом поведении платы, отключите и снова подключите USB, проверьте выбранный порт и повторите Upload. После этого верните периферию и свой скетч.

Если проблема остаётся на минимальном стенде, журнал и результаты последовательных проверок помогут решить, нужен ли ремонт цепи сброса, восстановление загрузчика или проверка на другом компьютере. Для первых шагов с IDE есть руководство по первому скетчу Arduino.

Первичные источники: справочник ошибок avrdude, выбор Processor у Nano, loopback и ограничение CH340, подробный журнал IDE.

Понравилась статья?

Поставьте лайк и сохраните полезный материал в закладки.

Комментарии (0)
Добавить комментарий
Ваш комментарий
Кликните на изображение чтобы обновить код, если он неразборчив

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