Как я решил проблему avrdude: stk500_recv(): programmer is not responding при попытке загрузить скетч в Arduino

Аватара пользователя

Автор темы
aeplug
Санта
Санта
Сообщения: 2802
Зарегистрирован: 18 мар 2016, 23:20
Откуда: С Ютуба
Благодарил (а): 18 раз
Поблагодарили: 274 раза
Контактная информация:

Как я решил проблему avrdude: stk500_recv(): programmer is not responding при попытке загрузить скетч в Arduino

Сообщение #1 aeplug » 04 янв 2020, 12:51

Совершенно неожиданно у меня возникла проблема с добавлением нового скетча в Arduino. Arduino IDE стал зависать на моменте загрузки скетч в микроконтроллер на долгое время и потом выдавать множественные ошибки вида:

Код: Выделить всё

avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x45
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x45
avrdude: stk500_recv(): programmer is not responding
.....
avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0x45
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x45

У меня была китайская Arduino Uno rev3, с которой я работал уже полгода без проблем. Покупал тут в составе набора для изучения (Starter Kit), и ей даже китайский драйвер CH340 не понадобился, заработала с фирменным из состава IDE. И внезапная ошибка "avrdude: stk500_recv(): programmer is not responding" меня - неопытного новичка, немного напугала. Четких инструкций для решения я не смог найти: либо старая версия IDE с несуществующими командами, либо не мой случай. Но вот, что случилось у меня. У китайцев для прошивки контролеров без USB (типа Arduino Mini) я прикупил программатора USBasp, который надо подключать к разъему ICSP на плате и немного "поиграл" с ним для проверки, заливая программу в большую Arduino Uno.
USBasp.jpg
USBasp.jpg (47.83 КБ) 19638 просмотров
USBasp.jpg
USBasp.jpg (47.83 КБ) 19638 просмотров

Разъемов, кстати, две штуки на плате, еще один для прошивки самого контролера USB интерфейса. Но нам это не нужно.
Изображение
И я так понял: при использовании программатора напрямую в ATmega заливается только сам скомпилированный код HEX, что позволяет сэкономить немного памяти для больших программ. А для работы через USB нужен еще и загрузчик Bootloader, который стирается программатором. И поэтому его нужно восстановить. Отключаем USB, подключаем назад USBasp и выбираем пункт Burn Bootloader, очень быстро внизу появится сообщение, что загрузчик успешно загружен и все! Можно снова подключаться по USB и работать как раньше.
Burn Bootloader.jpg
Burn Bootloader.jpg (25.96 КБ) 19643 просмотра
Burn Bootloader.jpg
Burn Bootloader.jpg (25.96 КБ) 19643 просмотра

Обратите внимание, что у меня выбран тип программатора USBasp (programmer), тип платы Arduino/Genuino Uno, а виртуального порта подключения нет, потому что USB отключен.
Export compiled Binary.jpg
Export compiled Binary.jpg (13.55 КБ) 19643 просмотра
Export compiled Binary.jpg
Export compiled Binary.jpg (13.55 КБ) 19643 просмотра

А вот если в меню выбрать пункт Export compiled Binary, то в папке проекта мы получи два файла:
  • test.ino.with_bootloader.standard.hex
  • test.ino.standard.hex
Которые будут отличаться небольшим куском кода, добавленным в конце.
разница в коде.jpg
разница в коде.jpg (222.79 КБ) 19643 просмотра
разница в коде.jpg
разница в коде.jpg (222.79 КБ) 19643 просмотра

Эти файлы нужно прошивать опять же программатором, использую специальные программы. Например, тот же AVRDude, название которого мы видим в ошибке.
Изображение
Но это уже другая история, свою проблему я решил, чего и вам желаю.

Вот нашел такое упоминание этого процесса в разделе про доступную память устройства.
https://arduinomaster.ru/platy-arduino/ ... duino-uno/
Когда вы прошиваете контроллер своим скетчем, он записывается именно сюда. 2кБ из данного пула памяти отводится на bootloader- программу, которая занимается инициализацией системы, загрузки через USB и запуска скетча.


Драйвер USBasp-win-driver-x86-x64-v3.0.7.zip для своего китайского USBasp программатора я скачал отсюда USBasp AVR Programmer, Program Atmel AVR microcontrollers:
https://protostack.com.au/shop/accessor ... -downloads
Ставил его на Windows 7 SP1 x64, устройство в системе появилось с названием libusbK Usb Devices. Драйверы есть еще у Zadig, на его сайт ссылается сам Thomas Fischl.


Видео уроки для After Effects http://www.youtube.com/AEPlug
Платные консультации по работе в программах


Аватара пользователя

Автор темы
aeplug
Санта
Санта
Сообщения: 2802
Зарегистрирован: 18 мар 2016, 23:20
Откуда: С Ютуба
Благодарил (а): 18 раз
Поблагодарили: 274 раза
Контактная информация:

Сообщение #2 aeplug » 07 июн 2021, 09:29

Arduino Pro Mini.jpg
Arduino Pro Mini.jpg (35.55 КБ) 13334 просмотра
Arduino Pro Mini.jpg
Arduino Pro Mini.jpg (35.55 КБ) 13334 просмотра

И вот, спустя полтора года, я снова наступаю на те же грабли! У меня была Arduino ATMEGA328P Pro Mini, и для ее прошивки раньше я использовал тот же USBasp, но отлаживать скетч было неудобно, так как нет доступа к COM порту и его вводу-выводу, надо было какой-то дополнительный экран сооружать, да и данные ввести вообще невозможно по-быстрому. Тоже нужна клавиатура какая-то или кнопки, а мне они были в готовом устройстве совсем не нужны. И весь этот лишний обвес напрягал - провода, библиотеки компонентов, здоровый код... Надоело, хотелось тех же удобств, как и с UNO-й.
CP2102.jpg
CP2102.jpg (32.92 КБ) 13334 просмотра
CP2102.jpg
CP2102.jpg (32.92 КБ) 13334 просмотра

И для решения этой проблемы я решил прикупить китайский аналог Silicon Labs Virtual COM Port модуль CP2102 MICRO USB UART TTL. К его плюсам можно отнести наличие готового вывода сброса платы DTR, чтобы не мучиться с нажатием весьма неудобно расположенной кнопки сброса RESET на Arduino Pro Mini каждый раз при прошивке. И вот получил на почте посылочку, распаковал, достаю, подключаю все и... опять ничего! Те же ошибки "programmer is not responding", столько времени прошло, и я все успел забыть уже, а в гугле никто не пишет про этот загрузчик Bootloader! Я весь вечер убил на попытки завести прошивку, провода RX-TX как только не крутил туда-сюда и сброс зажимал как проклятый, и ничего.
В итоге после всех мучений всплыло какое-то мутное воспоминание в моем усталом и разочарованном мозгу, достал и подключил старый USBasp (хотя именно чтобы им больше не пользоваться, я все это и затеял :) ), сделал как выше писал и зашил загрузчик вообще без проблем, и только тогда смог прошиваться через USB порт CP2102. Наконец-то все стало хорошо, работать через последовательный порт передачи данных и заниматься отладкой Pro Mini стало также удобно как и с обычной UNO.
Но вот сама плата CP2102 мне попалась какая-то не очень. Почему-то она не хочет работать в большинстве USB портов моего компьютера. И судя по жалобам, которые мне удалось найти, такая проблема возникает не только у меня с этим устройством. Я пробовал разные кабели, удлинители, порты 3-ей и 2-ой версии, на задней и передней стенке системного блока, как советовали. В итоге заработало только в одном на переднем разъеме USB3, причем в соседнем точно таком же уже не работает. Очень странный и капризный девайс!
Если кому интересно, дрова под Windows 10 на него версии 10.1.10 я ставил с сайта Silicon Labs: CP210x USB to UART Bridge VCP Drivers.
Сбой запроса дескриптора USB-устройства.jpg
Сбой запроса дескриптора USB-устройства.jpg (98.18 КБ) 13334 просмотра
Сбой запроса дескриптора USB-устройства.jpg
Сбой запроса дескриптора USB-устройства.jpg (98.18 КБ) 13334 просмотра

Но что с ними, что без них устройство CP2102 просто не доходит до стадии установки драйвера ни в ручном, ни в автоматическом режиме и пишет вот что:
Система Windows остановила это устройство, так как оно сообщило о возникновении неполадок. (Код 43)
Сбой запроса дескриптора USB-устройства.

А ИД оборудования USB\DEVICE_DESCRIPTOR_FAILURE. При вставке в разъем три-четыре раза мигает красный индикатор на плате CP2102, и Windows выдает эту ошибку. Но если все получится, и вы таки сможете обнаружить подходящий рабочий разъем, то устройство повиснет в системе как новый COM порт, куда надо будет направлять загрузку скетча в настройках Arduino IDE.
CP2102 COM порт.jpg
CP2102 COM порт.jpg (4.24 КБ) 13329 просмотров
CP2102 COM порт.jpg
CP2102 COM порт.jpg (4.24 КБ) 13329 просмотров

Изображение

На этом пока все, желаю удачи! :mrgreen:
Видео уроки для After Effects http://www.youtube.com/AEPlug
Платные консультации по работе в программах


Вернуться в «Arduino»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей