"avrdude: stk500_getsync(): not in sync: resp=0x00", или некто по имени Avr не позволяет мне загрузить мою программу

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

avrdude: stk500_getsync(): не синхронизировано: resp=0x00

Все, что я хочу сделать, это просто загрузить свою программу, но avr мне не позволяет. Он даже неразборчив, так что может ли кто-нибудь сказать мне, что, черт возьми, он пытается сказать и как от него избавиться?


т. е.:

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

avrdude: stk500_getsync(): не синхронизировано: resp=0x00

Что это значит и как я могу это исправить?

, 👍183

Обсуждение

Довольно распространенное сообщение об ошибке, не всегда тривиальное для решения: http://electronics.stackexchange.com/search?q=avrdude%3A+stk500_getsync%28%29%3A+not+in+sync%3A+resp%3D0x00, @jippie

Хорошее название! У меня самого была такая ошибка..., @TheDoctor

+1 за титул :D... Я действительно ненавижу этого чувака так же сильно, как и ты!, @David Refoua

Этот пост в июне 2018 года решил эту проблему для меня (1-й ответ): https://arduinoprosto.ru/q/51729/ch340-nano-avrdude-stk500-getsync-not-in-sync-resp-0xa4, @Michael Sims

У меня была такая же проблема, и я попробовал общие предложения безрезультатно. Я мог видеть вывод старого кода на последовательном мониторе. Я переключился на UECIDE, и он был построен и загружен без каких-либо проблем или изменений. Не знаю, что происходит, но это было легко исправить., @kdahlhaus

Я работал с НАНО. И я обнаружил, что эту проблему можно решить, выбрав старый загрузчик 328 p, @Sohan Arafat

Для меня это было так же просто, как испорченный USB-кабель. Это был тот же самый кабель, которым я пользовался в прошлом, но, думаю, он в конце концов сдох. Важно отметить, что если вы получаете сообщение об ошибке синхронизации, и вы также не видите, что ваш Arduino отображается на вашем компьютере как подключенный USB-накопитель, то это определенно плохой USB-кабель., @Simon K


21 ответ


Лучший ответ:

115

Это вызвано общей ошибкой соединения между вашим компьютером и Arduino и может быть вызвано множеством различных конкретных проблем.

Вот несколько простых вещей, которые часто могут исправить эту ошибку:

  • Отсоедините и снова подсоедините USB-кабель.
  • Нажмите кнопку сброса на плате.
  • Перезагрузите Arduino IDE.
  • Убедитесь, что вы выбрали правильную плату в Tools ► Board►, например Если вы используете Duemilanove 328, выберите его вместо Duemilanove 128. Плата должна сказать, какая версия находится на микрочипе.
  • Убедитесь, что вы выбрали правильный порт в разделе Инструменты ► Последовательный порт ►. Один из способов выяснить, на каком порту он находится, - это выполнить следующие действия:
    1. Отсоедините USB - кабель.
    2. Перейдите в раздел Инструменты ► Последовательный порт ► и посмотрите, какие порты перечислены (например, COM4 COM5 COM14).
    3. Снова подключите USB-кабель.
    4. Вернитесь в меню Инструменты ► Последовательный порт ►и посмотрите, какой порт появился раньше.
  • Убедитесь, что цифровые контакты 0 и 1 не имеют подключенных деталей, включая экраны.

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

Если проблема связана с компьютером:

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

Если проблема в Arduino:

  • Дважды проверьте все проблемы, связанные с платой, в списке "легкие исправления" выше.
  • Убедитесь, что микроконтроллер установлен правильно.
  • Возможно, вам придется сжечь загрузчик.
  • Замените микроконтроллер, если у вас есть другой под рукой.
  • Возможно, вы замуровали свой Arduino. Извините :(
,

Есть и другие возможные причины. Вы могли повредить ATmega, вы могли повредить загрузчик ATmega, у вас могли быть проблемы с питанием или множество других возможностей. Сообщение "not in sync: resp=0x00" на самом деле является общим сообщением "ATmega не отвечает". Все, что может привести к тому, что ATmega не ответит, может привести к этому., @Connor Wolf

Так могу ли я вообще ничего не иметь в 0 или 1?, @Tim

@Tim Вы можете подключить материал к этим контактам, но вы должны отключить их, если хотите общаться с Arduino через USB-кабель., @The Guy with The Hat

Я получил эту ошибку на своем самом первом Duemillanove много лет назад. Это был мертвый чип UART (или подключение от USB к чипу UART). Очень неприятно. Я купил программатор AVR и сжег загрузчик. Купил еще один процессор с предустановленным загрузчиком. Только когда поставщик прислал замену, я смог присоединиться к миру поклонников Arduino (и теперь у меня есть два запасных процессора)., @linhartr22

"Отсоедините и снова подключите USB-кабель" работает для меня, @Grace Shao

Часть о контактах 0 и 1. Своего рода отстой, когда весь смысл вашего проекта - это порт 232 на контактах 0 и 1. ТЬФУ, @YetAnotherRandomUser

"Нажмите кнопку сброса на плате" помогло., @user6039980

Большое вам спасибо. Эта ошибка исчезла, когда я снял экран Ethernet и попытался загрузить файл. Вы только что помогли мне уложиться в серьезный срок., @byxor

Не могли бы вы добавить также Tools->Processor->Atmega 328P к Atmega 328P (Старый загрузчик) в список возможных решений., @Vladyslav Savchenko

Примечание о загрузчике: На Arduino Uno и Mega 2560 на самом деле есть два загрузчика! Один на микроконтроллере, на который записывается скетч, и один на 16u2, который обрабатывает стек USB и действует как фактический программатор для sketch-micro. В моем случае проблема была в 16u2., @iFreilicht

Я купил 3 упаковки дешевых rexqualis nanos на amazon. Первый, который я пробовал, продолжал давать мне эту ошибку, поэтому я попробовал другой, и он работал нормально...странно, @Kyle Pennell

Для меня это был компонент, подключенный к цифровому порту 0, @Peter Smit

@TheGuywithTheHat: вы были абсолютно правы. Я купил свою плату на Aliexpress https://www.aliexpress.us/item/2251832472713563.html?spm=a2g0o.order_detail.0.0.8149f19c0AgE4n&gatewayAdapt=glo2usa&_randl_shipto=US и пытался использовать «Arduino Pro или Pro Mini» в качестве платы. которые продолжают выдавать мне эту ошибку, после того, как я прочитал больше о плате, я понял, что она основана на ESP8266, поэтому я установил драйвер, а затем выбрал «Node MCU 1.0», который работал очень хорошо. Большое спасибо., @Shahin Shirazi


12

Если ни один из вышеперечисленных шагов не сработает, попробуйте переустановить Avrdude и компилятор avr-gcc. Мне пришлось сделать это после того, как мой Мега начал страдать от этого.

Если вы установили Avrdude и avr-gcc отдельно, просто удалите их. если нет, то вам, возможно, придется переустановить Arduino IDE. Эти шаги будут зависеть от вашей операционной системы.

,

Крайне маловероятно, что проблема будет вызвана используемой цепочкой инструментов. Это слишком экстремально, ИМО., @asheeshr

О каком процессе установки вы говорите? Инструмент arduino editor просто распакован. Процесс установки отсутствует., @Connor Wolf


13

К сожалению, это также может означать, что вы сожгли свой микроконтроллер. Вы делали что-нибудь опасное прямо перед тем, как попытались загрузить новый скетч? Работает ли микроконтроллер с ранее загруженным скетчем?

,

7

У меня была точно такая же проблема. Я попытался установить IDE на другой ноутбук и загрузил программу с этого ноутбука. Проблема решена. Затем я вернулся к своему ноутбуку, удалил IDE и переустановил его ... он начал работать.

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

В моем проекте мне нужно было осуществить последовательную связь между arduino и MATLAB (GUI). Чтобы увидеть/проверить вывод(тип) последовательных данных MATLAB (GUI), я использовал HYPERTERMINAL, а также ЭМУЛЯТОР ВИРТУАЛЬНОГО ПОСЛЕДОВАТЕЛЬНОГО ПОРТА. Я заметил, что каждый раз, когда hyperterminal работает или VSPE работает, когда мой последовательный монитор включен, он портит функцию загрузки программы. Я не уверен, что это из-за VSPE или HYPERTERMINAL, но переустановка IDE сработала для меня.

,

Одна из последовательных линий управления, я думаю, это DTR, используется для сброса Arduino. Когда вы пытаетесь запрограммировать свой Arduino, ваша терминальная программа может вмешиваться., @linhartr22

Это сработало для меня только тогда, когда я также удалил папку библиотеки Arduino, которая содержит все настройки и дополнительные библиотеки., @Jethro


10

Я получил то же самое сообщение. Каждый раз это решалось путем выбора правильного порта, т. е. USB, в меню Tools, а затем Ports. Это простой шаг, но я всегда забываю. Я отключу Arduino, чтобы остановить текущую программу, снова подключу ее к компьютеру, чтобы загрузить новую программу, получу ошибку, панику, проклятие и только потом вспомню.

,

6

Для людей, использующих Linux Mint, я обнаружил, что, выбрав порт "TTY SO" вместо порта с надписью "Arduino", он будет работать (я не могу сказать вам точно, потому что сейчас у меня нет этого компьютера передо мной).

Затем, когда я использовал Arduino в следующий раз, я снова получил то же самое сообщение, поэтому я переключился обратно на порт "Arduino", и с тех пор он работал именно так.

Я не так технически осведомлен, как остальные из вас, ребята, поэтому понятия не имею, почему это работает и в чем проблема, но это сработало, и это все, что меня волнует. Может быть, это кому-то пригодится.

,

12

В моем случае я не подключал вывод RTS чипа FTDI к конденсатору, который шел к ПЕРВОМУ выводу Arduino Pro Mini. Как только я установил это соединение, у меня больше не было ошибки, и я смог загрузить код.

Ник Гэммон объясняет это на своем форуме. Я добавил изображение того, где/как должен быть размещен конденсатор.

,

+1 за приятную картинку подключения USB - программатора непосредственно к чипу atmega., @raddevus

У меня тоже были некоторые плохие соединения на плате, я отключил все и загрузил базовый скетч, и он сработал. Теперь поди разберись какой кабель не в том месте, @Seraf

Я использую ATMEGA8-16PC. Я записал загрузчик на микроконтроллер с помощью контактов SCK, MISO и MOSI на моем Arduino Uno. Нужно ли мне тогда менять соединения на TxD и RxD, чтобы загрузить скетчи в микроконтроллер? Например, заставить мигать светодиод на выводе 1 микроконтроллера., @most venerable sir


6

Я удалил IDE и драйверы и т. Д., Установил все это снова, затем запустил Arduino IDE как администратор и установил совместимость с Windows 7 (в настоящее время я использую 10).

Я также сменил программатор на AVR ISP (я не думаю, что это имеет значение, но я все равно изменил его).

Все снова работает... надеюсь, это поможет и кому-то еще.

,

3

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

,

2

Существует также вероятность того, что сам контроллер будет неправильно помещен в гнездо на Arduino. Это может быть опасно для контроллера (который может быть заблокирован), но в моем случае он только выдал ошибку несинхронизации, не позволив мне загрузить код.

Поэтому просто проверьте, находится ли выемка на микросхеме в правильном направлении (вы можете свериться с изображениями платы онлайн). Выемка на контроллере Uno должна быть направлена к краю платы.

,

3

У меня тоже была эта ошибка. Это был первый раз, когда я использовал новую плату Arduino Nano после того, как я припаял заголовки. Просто за исключением Моргающего Скетча, с платой ничего не было связано.

Я обнаружил недостаток припоя между контактами ЗАЗЕМЛЕНИЯ и СБРОСА. Я снял его, а затем смог загрузить ok.

Я полагаю, это могло бы произойти, если бы у вас было такое же короткое замыкание где-нибудь в цепи.

,

2

Только что произошла та же ошибка с совершенно новым Mini Pro. Поскольку программа blink по умолчанию, которая была предварительно загружена с большинством Arduino, запущена, я знаю, что устройство, вероятно, в порядке.

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

,

78

Еще одно исправление:

Измените Инструменты->Процессор->Atmega 328P на Atmega 328P (Старый загрузчик). Напомним, что опция Процессор доступна только при выборе некоторых конкретных плат в меню Инструменты>Плата.

Это сработало для моего Arduino Nano с CH340, используя Arduino IDE 1.8.5 под Linux Ubuntu 17.10. Кроме того, это, вероятно, произойдет, если вы используете IDE 1.8.9 или новее и получите старый или клонированный Nano.

,

Это было решение! Новый загрузчик использует вдвое большую скорость передачи данных (115200 вместо 57600)., @Suuuehgi

Ты настоящий MVP., @Chris_abc

Для действительно старого клона Arduino Nano (дешевого) это было то, что меня исправило., @Derek


1

После большого количества отключений, проверки портов, перезапуска IDE и т. Д. Тинг, который, казалось, имел значение для исправления этой ошибки с помощью Arduino Mega 2560, состоял в том, чтобы удалить драйвер Windows USB arduino, а затем переустановить его usig драйвер здесь и выбрать вручную из списка>com-порты>arduino http://drivers.softpedia.com/get/Other-DRIVERS-TOOLS/Others/Arduino-Mega-2560-USB-Driver-1110-for-Windows-7-64-bit.shtml Возможно, я проверил это на своем uno, а затем вернулся в mega, так что есть небольшой шанс, что разговор с uno сделал AVRDUDE счастливым, но маловероятным.

,

2

Я решил эту проблему, обновив платы (в разделе "менеджер платы").

,

У вас есть Arduino Nano?, @per1234


1

Когда у меня возникают проблемы с загрузкой на платы, я загружаю другую программу, как в примере blink. Это, кажется, что-то сбрасывает, и тогда я могу загрузить свою собственную программу (которая довольно большая).

Возможно, стоит попробовать это, чтобы посмотреть, работает ли это в вашем случае, хотя я понятия не имею, почему это работает.

,

какая плата и загрузчик?, @Juraj

Arduino Nano, ATmega328P (не 3rd party). Версия оборудования: 2, версия прошивки: 1.16, сигнатура устройства - 0x1e950f Я не проверял загрузчик, но они рекламируются как "традиционный загрузчик"., @Jethro

итак, ваш ответ специфичен для старого загрузчика Nano, @Juraj

Спасибо! Я посмотрю на загрузчики и попытаюсь их обновить. У вас есть какая-нибудь информация об этой ошибке?, @Jethro


1

Сегодня я столкнулся с той же проблемой для некоторого кода и решил ее следующим образом:

1 - Сначала я запустил базовый светодиодный мигающий код. Это давало ту же ошибку. Он подтверждает, что ошибка заключается в загрузке и не имеет никакого отношения к компиляции. Я также проверил, что мой код компилируется нормально.

2 - Я взял другую плату, но на этом КОМПЬЮТЕРЕ она работала нормально. Это означает, что компьютер и USB-провод в порядке.

3 - Я подключил неисправную плату к другому компьютеру, и, что удивительно, такой ошибки при загрузке не было. Это дало мне подсказку о проблемах в драйвере на первом ПК.

4 - Поэтому я удалил драйвер и заново установил его на первый компьютер, загрузив отсюда

( убедитесь, что при установке драйвера по этой ссылке вы держите плату подключенной к ПК)

Теперь все работало нормально :-)

,

4

У меня была похожая проблема с платой Uno

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

Перепробовал много методов

  • Нажмите кнопку reset перед отправкой пакетов
  • различные версии IDE
  • Сменный кабель
  • Изменить сам контроллер
  • Тест с обратной связью

но все вышеперечисленное не удалось.

Я использую Ubuntu 16.04.4 LTS 4.15.0-33-generic (при написании этого комментария). Модуль CDC ACM не был загружен, поэтому не было создано устройство /dev/ttyACM0 для выбора в Arduino IDE -> Инструменты -> Порт

Поэтому, Получите имя модуля и загрузите его

$ lsusb 
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 005: ID 2341:0043 Arduino SA Uno R3 (CDC ACM)
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub


$ sudo modprobe cdc-acm

Приведенная выше команда вставит необходимый модуль. Теперь я могу выбрать правильный порт и загрузить код

Из различных решений это сработало для меня, надеюсь, это тоже кому-то поможет.

,

1

У меня была эта ошибка в ноутбуке Linux Mint 17.3 с Arduino Nano avrdude: stk500_getsync(): not in sync: resp=0x00

Решаемая задача:

  • удалил все, что имело в своем названии "arduino" или "avr".
  • удалены каталоги .arduino и. arduino15 (обратите внимание на точку в названии)
  • удалена версия 1.8.7 с удалением пакета
  • apt-get install arduino (версия 1.1.0)
  • проверено с помощью простого скетча (все ОК)
  • установлена версия 1.8.7 с установкой пакета
  • составлено.
  • выбранный ATmega328P(старый загрузчик) для процессора, Arduino Nano для карты и /dev/ttyUSB0 для порта => ЭТО РАБОТАЕТ !

Похоже, что "Старый загрузчик" был трюком в этом случае. Теперь у меня есть версия 1.1.0 и 1.8.7.

,

сначала вы должны прочитать ответ от aguadopd, @Juraj


1

Я старался не соединять одно заземление одной платы с другим заземлением на другой плате. Это прекратило проблему для меня.

,

1

Если вы используете arduino-cli и клон Arduino Nano, вы можете изменить загрузчик на старый, как сказано в других ответах, используя следующую команду для загрузки в Arduino:

arduino-cli upload -v -p /dev/ttyUSB0 --fqbn arduino:avr:nano:cpu=atmega328old program_name

Пояснение:

командование объяснение
arduino-cli вызов arduino-cli
Используйте подробный вывод
-p /dev/ttyUSB0 Порт, используйте список arduino-cli board, чтобы найти нужный порт
--fqbn arduino:avr:nano:cpu=atmega328old Используйте библиотеку avr board, nano board и процессор Atmega328 со старым загрузчиком
имя_программы Замените это на имя программы, которую вы хотите загрузить
,