Глиф Учебники

Ошибка avrdude stk500_recv() programmer is not responding

Справочник · Arduino · 3 минуты чтения

Сообщения вида

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

значат одно: Arduino IDE отправила плате запрос на загрузку, а загрузчик платы не ответил. Загрузчик (bootloader) — маленькая программа в микроконтроллере, которая после сброса пару секунд ждёт новый скетч.

Что проверить

Проверяйте причины по порядку, пока скетч не загрузится, — первые три встречаются чаще всего.

  1. Выберите правильный порт

    В списке выбора платы или в Tools → Port может быть выбран чужой порт — например, встроенный COM1 или порт другого устройства. Отключите плату и посмотрите, какой порт исчез из списка, затем подключите снова и выберите именно его. Если порта нет вовсе — смотрите справку Arduino не определяется компьютером.

    Появилось уведомление «Done uploading» — дело было в порте.

    Не помогло — дальше: «Проверьте плату и процессор»

  2. Проверьте плату и процессор

    В Tools → Board должна быть ваша плата: для Uno — Arduino Uno, для Nano — Arduino Nano. Загрузчики разных плат ждут скетч на разной скорости, и при неверном выборе связи не будет.

    Для Arduino Nano почти всегда помогает Tools → Processor → ATmega328P (Old Bootloader). На многих совместимых Nano записан старый загрузчик, а пункт ATmega328P рассчитан на новый. Если и так не грузится — верните обычный ATmega328P.

    Скетч загрузился — запомните, какой процессор подошёл вашей плате.

    Не помогло — дальше: «Отключите всё от выводов 0 и 1»

  3. Отключите всё от выводов 0 и 1

    Выводы 0 (RX) и 1 (TX) соединены с микросхемой USB, через них скетч и попадает в плату. Модуль Bluetooth, GPS или просто провод на этих выводах мешает загрузке. Отключите их на время загрузки или перенесите модуль на другие выводы (для этого есть встроенная библиотека SoftwareSerial).

    Без проводов на выводах 0 и 1 скетч загрузился — дальше подключайте модуль к другим выводам.

    Не помогло — дальше: «Закройте программы, которые держат порт»

  4. Закройте программы, которые держат порт

    Другая программа держит порт открытым: второе окно Arduino IDE, терминал, программа для 3D-принтера, слайсер. Закройте её. В Windows ошибка тогда часто звучит как Access is denied или «порт занят».

    После закрытия программы скетч загрузился — не держите её открытой во время загрузки.

    Не помогло — дальше: «Сбросьте плату вручную»

  5. Сбросьте плату вручную

    Перед загрузкой IDE сама перезапускает плату через USB. Если на плате это не срабатывает, помогает ручной сброс: нажмите Upload, и как только в панели Output закончится компиляция и появится строка о загрузке (Uploading…), коротко нажмите кнопку RESET на плате. Момент нужно поймать — иногда со второй-третьей попытки.

    С ручным сбросом загрузка прошла — плата исправна, просто сама не перезапускается.

    Не помогло — дальше: «Смените кабель, разъём, драйвер»

  6. Смените кабель, разъём, драйвер

    Кабель с плохим контактом или переходник USB может пропускать данные с ошибками. Попробуйте другой кабель и другой порт компьютера, без разветвителя. Для плат с CH340 переустановите драйвер с сайта производителя.

    С другим кабелем или портом загрузка проходит — старый кабель лучше выбросить.

    Не помогло — дальше: «Проверьте загрузчик и саму плату»

  7. Проверьте загрузчик и саму плату

    Если ничего не помогло:

    • Новый голый микроконтроллер ATmega328P или плата после экспериментов могут быть без загрузчика. Его записывают программатором через разъём ICSP; программатором может служить вторая Arduino со скетчем File → Examples → 11.ArduinoISP → ArduinoISP. Это отдельная процедура — следуйте официальной инструкции Arduino по ArduinoISP.
    • Плата могла пострадать от неверного питания или короткого замыкания. Проверка: загружается ли Blink на другую плату с того же компьютера и кабеля — если да, дело в плате.

Быстрая проверка

Отключите от платы всё, кроме USB, выберите правильную плату и порт, откройте File → Examples → 01.Basics → Blink и нажмите Upload. Если Blink загрузился — плата исправна, и дело в подключённой схеме или в скетче.