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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
Canonical Link
Аватара пользователя

Автор темы
aeplug
Санта
Санта
Сообщения: 2329
Зарегистрирован: 18 мар 2016 23:20
Откуда: С Ютуба
Благодарил (а): 14 раз
Поблагодарили: 241 раз

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

Сообщение 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 КБ) 422 просмотра
USBasp.jpg
USBasp.jpg (47.83 КБ) 422 просмотра

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

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

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

Эти файлы нужно прошивать опять же программатором, использую специальные программы. Например, тот же 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
Платные консультации по работе в программах


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

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

Сейчас этот форум просматривают: CommonCrawl [Bot]