Arduino: что делать при ошибке "not in sync: resp=0x30"?
Бывает, что пишешь программы для Ардуино, загружаешь их в память, и всё прекрасно работает. А потом вдруг - раз - и они больше не загружаются. А среда разработки при попытке загрузить скетч выдаёт ошибку: "arduino avrdude: stk500_recv(): programmer is not responding avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x30". Что такое? Неужели сгорела плата? Не торопитесь отчаиваться: возможно, ещё не всё потеряно. Давайте разбираться.
Инструкция по поиску причины ошибки Arduino "not in sync: resp=0x30"
Ардуино не программируется, хотя раньше всё работало. Попытка загрузить скетч в память заканчивается вот таким сообщением IDE: "not in sync: resp=0x30".
Для такого поведения возможны несколько причин:
- по какой-то причине произошёл сбой драйвера;
- неправильно выбран COM-порт;
- где-то есть электрическая связь, которой быть не должно (короткое замыкание);
- произошёл сбой загрузчика (bootloader) платы Arduino.
Давайте пройдёмся по всем пунктам этого списка, пока не устраним проблему.
1Причина 1 Сбой драйвера
Откроем диспетчер устройств Windows через меню Пуск Панель управления Оборудование и звук Диспетчер устройств. Есть более короткий вариант: нажимаем клавишу Windows на клавиатуре и, не отпуская её, нажимаем клавишу Pause. Откроется окно свойств системы, в котором с левой стороны есть ссылка на диспетчер устройств.
Находим и раскрываем в диспетчере раздел Порты (COM и LPT). Если драйвер установлен и работает корректно, никаких оверлейных значков типа вопросительного или восклицательного знака на пиктограмме устройства Ардуино быть не должно. Если такие значки имеются, значит, есть проблемы в работе драйвера. Если Arduino или устройства USB-Serial вообще нет в этом разделе диспетчера, значит драйвер даже не установлен. В любом из этих случаев драйвер необходимо установить (или переустановить).
В диспетчере устройств выбираем нашу плату Arduino (или неизвестное устройство, которое появляется при подключении платы Arduino к компьютеру), нажмём на него правой кнопкой мыши и в контекстном меню выберем пункт Обновить драйверы… (Update drivers…).
Выбираем Выполнить поиск на этом компьютере и указываем путь к директории с драйвером для платы. Далее следуем указаниям мастера настройки нового оборудования.
Для оригинальных плат семейства Ардуино драйверы имеются в директории среды разработки, в поддиректории drivers. Для Ардуино-совместимых плат ищите драйвер в интернете.
2Причина 2 Неверно выбран COM-порт
Проверим, что правильно указали COM-порт в IDE Arduino. Проверить, какой порт присвоен системой нашей плате Ардуино можно в диспетчере устройств Windows. Платы Arduino находятся в разделе Порты (COM и LPT) и определяются обычно как устройства Arduino или USB-Serial.
В среде разработки Arduino идём в меню Инструменты Порт и убеждаемся, что указан верный порт. Если нет, указываем нужный.
3Причина 3 Замыкание или несанкционированное соединение
Если плата Arduino лежит на токопроводящей поверхности, есть риск, что где-то имеется короткое замыкание. Это может являться причиной ошибки в работе платы и, в частности, мешать нормальному процессу программирования. Проверьте, что плата находится на изолированной поверхности.
Также к этому типу причин я бы отнёс подключение несанкционированных проводов к выводам 0 и 1 платы Ардуино, которые являются портами RX и TX и используются в процессе загрузки скетча в память платы.
4Причина 4 Сбой загрузчика
Если ничего из перечисленного не помогло, попробуем ещё один вариант: перезапишем загрузчик платы (bootloader).
Загрузчик – это специальная управляющая программа для Arduino, которая исполняется при включении устройства и которая задаёт режим работы платы: либо переходит к исполнению программы из памяти Arduino, либо к процедуре программирования компьютером. Загрузчики для всех поддерживаемых плат Arduino хранятся в папке c IDE в поддиректории \hardware\arduino\avr\ и представляют собой бинарные hex-файлы.
Для реализации этого варианта нам потребуется программатор. Более подробно работу с программатором мы уже рассматривали, поэтому привожу здесь лишь схему подключения:
После подключения программатора в среде программирования Ардуино в меню Инструменты Программатор указываем тип нашего программатора. Например, USBasp. Теперь в том же меню Инструменты выбираем пункт Записать Загрузчик. Этот процесс не занимает много времени.
Если операция прошла успешно, IDE сообщит об этом. А плата Ардуино радостно замигает светодиодом на 13-ом выводе, т.к. в неё, кроме загрузчика, записан скетч по умолчанию – скетч мигания светодиодом Blink.
Если же после всех проделанных манипуляций плата не оживает, возможно, вы и правда сожгли микросхему. Мои соболезнования.
Поблагодарить автора:
Поделиться
Related items
- Работа с программатором CH341A на примере микросхемы 25L8005
- Как использовать командную строку в для загрузки прошивки в Quartus ii
- Что делать, если проект Silverlight не компилируется из-за ошибок конфигурации
- Как запрограммировать Arduino Pro Mini с помощью программатора
- Как установить драйвер для программатора USBasp в Windows 8 и Windows 10
5 comments
-
kit Воскреснье, 28 Июль 2019 17:11 Ссылка на комментарий
не помогает ничего, это явно что-то с системой т.к. плата норм шьётся андроидским приложением (arduinodroid), а на win10 какой-то косяк..
-
aave1 Пятница, 02 Август 2019 21:25 Ссылка на комментарий
kit, если не удаётся прошить ардуинку, можно ещё попробовать использовать другую версию Arduino IDE, более старую, например.
-
Юрий Четверг, 16 Январь 2020 19:28 Ссылка на комментарий
есть заказ, нужно изготовить компактные электронные компасы со звуковой и цифровой индикацией
-
Вадим Пятница, 08 Январь 2021 19:34 Ссылка на комментарий
У меня возникает эта ошибка, когда я пытаюсь выполнить загрузку скетча, при воткнутой плате arduino sensor shield v5.0.
Как этого избежать? Заранее благодарен.