Программа arduino сообщение running avrdude при загрузке скетча

Обновлено: 03.05.2024

У меня есть Arduino Nano (Sainsmart), в который я пытаюсь загрузить эскиз. Под Arduino IDE выбранное устройство было Arduino Nano w/ ATmega328 .

Однако загрузка эскиза дает мне ошибку

Что могло пойти не так?

Да, но, согласно комментариям на странице Amazon, некоторые люди, купившие это, получили еще один бренд-клон, поэтому мне кажется, что здоровая доза скептицизма в отношении любых претензий в документации оправдана, особенно если их можно легко проверено экспериментом.

Ударяя сброс на только консервной работе нужного времени (это может занять несколько попыток), с нано - клонами , это почти всегда изменение скорости последовательного загрузчиком официальными разработчиками Arduino.cc , что вызывает проблему. Этот ответ , скорее всего, даст надежный результат: Инструменты → Процессор → ATmega328P (Старый загрузчик)

Знайте, что это старо, но я наткнулся на него во время поиска Nano (V3), не загружающего, так что мысль могла бы помочь кому-то еще. Проблема в загрузчике - Arduino IDE, НО я нашел простое решение (прямо у меня под носом).

Я понял, что мои нано загружались очень хорошо, тогда я наконец обновил Arduino AVR Boards с 1.6.20 до 1.6.21. Я не думал, что возникли какие-либо проблемы, потому что он все еще показывал мои Nano, ATmega328 и т. Д. В менеджере платы после смены.

Но у нового менеджера плат есть новый выбор процессора ATmega328 для Nano. Я сменил процессор: в IDE Arduino выберите TOOLS >> выпадающее PROCESSOR меню из ATmega328P в "ATmega328P (Old Bootloader)" .

С тех пор я без проблем загрузил много программ в несколько разных Nano V3 (набор микросхем Prolofic).

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

Решение все еще работает, я тестировал его на Arduino IDE 1.8.7 Stable, 1.8.8 Hourly Build (Nightly) 2018/11/05 23:59 GMT и 1.9 Beta Build-87 с платами Arduino AVR 1.6.23

Спасибо, переход на ATmega328P (Old Bootloader) помог мне решить stk500_recv(): programmer is not responding stk500_getsync() attempt 1 of 10: not in sync: resp=0x79 проблему. На самом деле, у меня такое ощущение, что раньше я использовал более старую версию графического интерфейса, которая имела эту опцию по умолчанию.

Имея аналогичную проблему с моим Sainsmart Nano .

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

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

У меня есть хакинтош с OS X Yosemite 10.10.2, Arduino software 1.0.6 и Funduino UNO. Загрузка примера для Serial.write () прошла успешно с первого раза. После этого большинство загрузок не удалось. Даже при успешной загрузке последовательный монитор не всегда показывает вывод.

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

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



Arduino — хорошая платформа для самоделкиных вроде меня.
Удобная, все в ней уже есть.

В чем проблема?

Программная часть мне далеко не всем нравится. Особенно ужасна Arduino IDE. Каждый файл открывается в новом окне, оставляя пустое запущенное окно IDE. И прочие мелкие глупости, которые привыкших к удобству Visual Studio, Borland/Embarcadero RAD IDE расстраивают и вызывают неудовольствие.
К счастью, мы можем использовать любую IDE какая понравится. Для готовых проектов, которые только скомпилировать и прошить или собственных пробных поделок вполне годится тот огрызок Wiring, который компилируется Arduino IDE.
Для удобства работы я использую Visual Micro Arduino — удобство Visual Studio, быстрая компиляция, прошивка стандартными средствами.

Arduino без Arduino IDE

Ступенькой выше стоит прямая работа с микроконтроллером, тут уж в вольны делать что захотите. Часто это удобнее чем разбираться в начинке библиотек Arduino. Но приходится использовать либо AVR Studio либо стороннюю IDE и компилятор от Atmel (благо, он совершенно бесплатный и входит в AVR Tools).
Все бы хорошо, но про Arduino они ничего не знают и прошить ее не могут. И вот тут начинаются неудобства.

Кому неинтересны детали, переходите сразу к делу, скачиваем и настраиваем.

AVR Studio неплохая среда, правда версия 4 довольно примитивная, а 5я тяжеловесна. Ни та ни другая кроме как через фирменный программатор прошивать не умеют. Засада.
Я взял проект бутлоадера, который совместим с AVR Studio, притворяясь AVRISP программатором. Интерфейс же с ним в AVR Studio оказался далеко не самым удачным.

Что делать?
Автоматизация запуска avrdude с нужными параметрами


Мне эта ситуация надоела и я написал небольшую программку, которая получает в командной строке 2 параметра:
— имя конфигурационного файла
— имя файла прошивки

Утилита сама запускает avrdude с параметрами, указанными в конфигурационном файле (просто файл с готовыми настройками для прошивания), дожидается прошивки и закрывается. Это позволяет прошивать проект в любой имеющийся микроконтроллер в процессе отладки в 2 клика прямо из Code::Blocks.
Если запустить с одним параметром, прочитает соответствующий файл конфигурации, если с двумя, попытается автоматически залить прошивку из второго параметра.

Если заинтересовало, качаем
Для изменения настроек прописываем:

Для прошивки:

По сути в настройках прописаны: первый параметр — файл avrdude.ini, который мы сохраняем при настройке в папку проекта, второй параметр — имя файла прошивки.

  • Подключаем программатор или плату Arduino с которой будем работать, чтобы в системе появился нужный COM порт.
  • Запускаем Tools->R AVRduder: Setup, выбираем настройки и сохраняем файл с настройками в каталоге своего проекта под именем avrduder.ini (или то, которое указали в настройках). Закрываем утилитку

Теперь скомпилировав проект, выбираем в меню Tools->R AVRDudeR: Flash и готово.

Обе версии avrdude уже лежат в архиве, ничего настраивать и прописывать в AVRDudeR не нужно.

Немного о настройках:

Саму программу можно использовать для заливки прошивки напрямую, не встраивая.
просто дважды щелкаем в поле Firmware, выбираем файл прошивки (или просто вставляем путь к файлу руками) и жмем Flash Firmware. Файл конфигурации работает и в этом случае.

Если сменился контроллер или подключили в другой порт, через другой программатор, просто выбираем Tools->R AVRDuder: Setup и открывается файл с настройками этого проекта (или настройками по умолчанию, если в папке с проектом avrduder.ini отсутствует). Меняем порт или программатор, контроллер или что там у нас поменялось и сохраняем обратно avrduder.ini в папку проекта. Все.


Да, avrdude.ini можно просто таскать из проекта в проект, если работате с одинаковыми платами/программаторами. Просто скопируйте его в папку нового проекта и можно ничего не настраивать вообще.
Ах да, чуть на забыл, в Code:Blocks я выбрал GNU AVR GCC Compiler и указал только папку к AVR Tools. А проект настроил вот так:

Тогда компилятор создает файл .elf.hex, который мы и прошиваем. Если у вас по-другому, измените второй параметр, передаваемый в AVRDudeR, чтобы он передавал имя файла прошивки.


Надеюсь, кому-то это сбережет нервы, повысит производительность и позволит сосредоточиться на собственно работе над идеей, а не возиться с кучей приблуд при каждой компиляции и заливке проекта.
Если утилита окажется полезной, пользуйтесь на здоровье.
UPD Утилита все-таки пригодилась.
Новая версия доступна на google code


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

Canonical Link

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

Совершенно неожиданно у меня возникла проблема с добавлением нового скетча в 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 (programmer), тип платы Arduino/Genuino Uno, а виртуального порта подключения нет, потому что USB отключен.

  • test.ino.with_bootloader.standard.hex
  • test.ino.standard.hex

Изображение

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

Но это уже другая история, свою проблему я решил, чего и вам желаю.

Когда вы прошиваете контроллер своим скетчем, он записывается именно сюда. 2кБ из данного пула памяти отводится на bootloader- программу, которая занимается инициализацией системы, загрузки через USB и запуска скетча.


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


И для решения этой проблемы я решил прикупить китайский аналог 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.


Но что с ними, что без них устройство CP2102 просто не доходит до стадии установки драйвера ни в ручном, ни в автоматическом режиме и пишет вот что:

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


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

Изображение



На этом пока все, желаю удачи!


Моя китайская Arduino Mega 2560 начала барахлить. При загрузке скетча выдает ошибку avrdude: stk500_getsync(): not in sync: resp=0x00.

Долго искать в интернете решение проблемы, но советы пользователей мне не помогали. В результате случайно попал на зарубежный форум, где и нашел инструкцию по перепрошивке Bootloader в Arduino Mega 2560. Это решило проблему с ошибкой avrdude: stk500_getsync(): not in sync: resp=0x00.

Опишу всё пошагово, чтобы у вас не возникло вопросов.

  • Сделайте копию папки с программой arduino — мы будем колупать эту копию, а не вашу рабочую версию
  • В hardwarearduinooards.txt в самый конец файла добавьте:
  • Добавьте файл ATmegaBOOT_168_mega2560.hex из архива в hardwarearduinoootloadersatmega

Скопируйте содержимое архива в hardwarearduinocoresarduino с заменой файлов

arduino.zip (29,2 KiB, 3 111 hits)




  • Во время прошивки загрузчика опять выскочит ошибка avrdude: stk500_getsync(): not in sync: resp=0x00.


  • Отключите от Arduino Mega 2560 USB кабель
  • Подключите его заново
  • Попробуйте загрузить скетч ЧЕРЕЗ ВАЩУ ОСНОВНУЮ ПРОГРАММУ Arduino, а не через эту копию, которую мы колупали


У меня все получилось. Надеюсь, у вас тоже. Всем удачи.

Correcting falsehoods in tech documentation, lessons learned

avrdude 5.10, arduino mega 2560, command line uploading

Note: The following probably applies to the arduino UNO as well, as it also uses an onboard atmega 8u2, rather than the old raw serial converter.

Part 1 of probably many. I’ve inherited some arduino code, targetting the quite new mega2560 boards. You know, the ones that include an onboard atmega8u2, rather than the original old serial adapters. In many ways, this is a welcome step into the future. Anyway, this place doesn’t even have a regular AVR ISP programmer, and with the onboard real usb, the code running on the 8u2 is actually effectively an AVR ISP programmer itself, talking the stk500 protocol.

I am trying to move some of this code slowly out of the arduino >

c: oolsarduino-022hardware/tools/avr/bin/avrdude -CC: oolsarduino-022hardware/tools/avr/etc/avrdude.conf -v -v -v -v -cstk500v2 -p atmega2560 -P COM5 -b 115200
. version stuff .
Using Programmer: stk500v2
Overriding Baud Rate: 115200
avrdude: ser_open(): setting dtr
avrdude: Send: . [1b] [20] . [00] . [03] . [0e] . [11] . [01] . [01] ‘ [27]

Ok, so now I had enough to try and run it myself, using avrdude 5.10, as comes with recent versions of WinAVR

C:Userskarlp>avrdude.exe -p atmega2560 -P COM5 -c stk500v2 -v -U lfuse:r:-:h -b 115200
—snip—
avrdude.exe: stk500_2_ReceiveMessage(): timeout
avrdude.exe: stk500_2_ReceiveMessage(): timeout

But, as you can see, this just timed out. Looking at the LEDs, I could see that the board wasn’t getting magically reset. With a bit of reading and searching, I found out that avrdude added a way of resetting the board, if you use the programmer type of “arduino”

Using Programmer : arduino
Overriding Baud Rate : 115200
avrdude.exe: Send: 0 [30] [20]
avrdude.exe: Send: 0 [30] [20]
avrdude.exe: Send: 0 [30] [20]

Interesting, following the lights on the board, I could see that this was now resetting properly, but clearly, those were not the right commands. It seems that the “arduino” programmer type, is set up to talk to the bootloader on the atmega328 of the prior versions of arduino, the Duemilanove and so on, that still had a direct USB-serial bridge, from the FTDI chip. So, if the “arduino” programmer does the reset, but the wrong protocol, looks like I’ll have to reset it myself.

I finally tried holding reset on the board, issuing the command with the programmer of “stk500v2” and immediately releasing reset. Presto!

C:Userskarlp>avrdude.exe -p atmega2560 -P COM5 -c stk500v2 -v -b 115200
. more snipped .
Programmer Type : STK500V2
Description : Atmel STK500 Version 2.x firmware
Programmer Model: AVRISP
Hardware Version: 15
Firmware Version Master : 2.10
Vtarget : 0.0 V
SCK period : 118.3 us

avrdude.exe: AVR device initialized and ready to accept instructions

avrdude.exe: Device signature = 0x1e9801
. more snipped .

Hooray! we’re working from the command line again. Now, if only the arduino gang’s pile of extra patches for avrdude would keep making their way back into mainline. It seems they don’t play well with others 🙁


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

1. Плата подключается к компьютеру по USB, на ней должны замигать светодиоды. Если этого не произошло:

  • Неисправен USB кабель
  • Неисправен USB порт компьютера
  • Неисправен USB порт Arduino
  • Попробуйте другой компьютер, чтобы исключить часть проблем из списка
  • Попробуйте другую плату (желательно новую), чтобы исключить часть проблем из списка
  • На плате Arduino сгорел входной диод по линии USB из-за короткого замыкания, устроенного пользователем при сборке схемы
  • Плата Arduino сгорела полностью из-за неправильного подключения пользователем внешнего питания или короткого замыкания

2. Компьютер издаст характерный сигнал подключения нового оборудования, а при первом подключении появится окошко “Установка нового оборудования”. Если этого не произошло:

  • См. предыдущий список неисправностей
  • Кабель должен быть data-кабелем, а не “зарядным”
  • Кабель желательно втыкать напрямую в компьютер, а не через USB-хаб
  • Не установлены драйверы Arduino (во время установки IDE или из папки с программой), вернитесь к установке.

3. В списке портов (Arduino IDE/Инструменты/Порт) появится новый порт, обычно COM3. Если этого не произошло:

  • См. предыдущий список неисправностей
  • Некорректно установлен драйвер CH341 из предыдущего урока
  • Если список портов вообще неактивен – драйвер Arduino установлен некорректно, вернитесь к установке
  • Возникла системная ошибка, обратитесь к знакомому компьютерщику




4. Выбираем свою плату. Если это Arduino Nano, выбираем в Инструменты\Плата\Arduino Nano. Если другая – выбираем другую. Нажимаем стрелочку в левом верхнем углу (загрузить прошивку). Да, загружаем пустую прошивку.

  • [Только для Arduino Nano] В микроконтроллер китайских нанок зашит “старый” загрузчик, поэтому выбираем Инструменты\Процессор\ATmega328p (Old Bootloader). Некоторые китайцы зашивают в свои платы новый загрузчик, поэтому если прошивка не загрузилась (загрузка идёт минуту и вылетает ошибка avrdude: stk500_getsync()) – попробуйте сменить пункт Процессор на ATmega328p

Если появилась надпись “Загрузка завершена” – значит всё в порядке и можно прошивать другие скетчи. В любом случае на вашем пути встретятся другие два варианта событий, происходящих после нажатия на кнопку “Загрузка” – это ошибка компиляции и ошибка загрузки. Вот их давайте рассмотрим более подробно.

Ошибки компиляции

Возникает на этапе сборки и компиляции прошивки. Ошибки компиляции вызваны проблемами в коде прошивки, то есть проблема сугубо софтварная. Слева от кнопки “загрузить” есть кнопка с галочкой – проверка. Во время проверки производится компиляция прошивки и выявляются ошибки, если таковые имеются. Ардуино в этом случае может быть вообще не подключена к компьютеру.

  • В некоторых случаях ошибка возникает при наличии кириллицы (русских букв) в пути к папке со скетчем. Решение: завести для скетчей отдельную папочку в корне диска с английским названием.
  • В чёрном окошке в самом низу Arduino IDE можно прочитать полный текстошибки и понять, куда копать
  • В скачанных с интернета готовых скетчах часто возникает ошибка с описанием название_файла.h no such file or directory. Это означает, что в скетче используется библиотека , и нужно положить её в Program Files/Arduino/libraries/. Ко всем моим проектам всегда идёт папочка с использованными библиотеками, которые нужно установить. Также библиотеки всегда можно поискать в гугле по название файла.
  • При использовании каких-то особых библиотек, методов или функций, ошибкой может стать неправильно выбранная плата в “Инструменты/плата“. Пример: прошивки с библиотекой Mouse.h или Keyboard.h компилируются только для Leonardo и Micro.
  • Если прошивку пишете вы, то любые синтаксические ошибки в коде будут подсвечены, а снизу в чёрном окошке можно прочитать более детальное описание, в чём собственно косяк. Обычно указывается строка, в которой сделана ошибка, также эта строка подсвечивается красным.
  • Иногда причиной ошибки бывает слишком старая, или слишком новая версия Arduino IDE. Читайте комментарии разработчика скетча
  • Ошибка недостаточно свободного места возникает по вполне понятным причинам. Если в проекте используется плата Nano на процессоре 328p, а вы сэкономили три рубля и купили на 168 процессоре – скупой платит дважды. Оптимизация: статическая память – память, занимаемая кодом (циклы, функции). Динамическая память занята переменными.

Частые ошибки в коде, приводящие к ошибке компиляции

  • expected ‘,’ or ‘;’ – пропущена запятая или точка запятой на предыдущей строке
  • stray ‘\320’ in program – русские символы в коде
  • expected unqualified-id before numeric constant – имя переменной не может начинаться с цифры
  • … was not declared in this scope – переменная или функция используется, но не объявлена. Компилятор не может её найти
  • redefinition of … – повторное объявление функции или переменной
  • storage size of … isn’t known – массив задан без указания размера

Ошибки загрузки

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

  • USB кабель, которым подключается Arduino, должен быть Data-кабелем, а не кабелем только для зарядки. Нужным нам кабелем подключаются к компьютеру плееры и смартфоны.
  • Причиной ошибки загрузки являются не установленные/криво установленные драйвера CH340, если у вас китайская NANO.
  • Также будет ошибка avrdude: ser_open(): can’t open device, если не выбран COM порт, к которому подключена Arduino. Если кроме COM1 других портов нет – читай два пункта выше, либо попробуй другой USB порт, или вообще другой компьютер.
  • Большинство проблем при загрузке, вызванных “зависанием” ардуины или загрузчика, лечатся полным отключением ардуины от питания. Потом вставляем USB и по новой прошиваем.
  • Причиной ошибки загрузки может быть неправильно выбранная плата в “Инструменты/Плата”, а также неправильно выбранный процессор в “Инструменты/Процессор”. Также в свежих версиях IDE нужно выбирать ATmega328P (Old Bootloader) для китайских плат NANO.
  • Если у вас открыт монитор COM порта в другом окне Arduino IDE или плата общается через СОМ порт с другой программой (Ambibox, HWmonitor, SerialPortPlotter и т.д.), то вы получите ошибку загрузки, потому что порт занят. Отключитесь от порта или закройте другие окна и программы.
  • Если у вас задействованы пины RX или TX – отключите от них всё! По этим пинам Arduino общается с компьютером, в том числе для загрузки прошивки.
  • Если в описании ошибки встречается bootloader is not responding и not in sync, а все предыдущие пункты этого списка проверены – с вероятностью 95% сдох загрузчик. Второй неприятный исход – загрузчик “слетел”, и его можно прошить заново.

Предупреждения

Помимо ошибок, по причине которых проект вообще не загрузится в плату и не будет работать, есть ещё предупреждения, которые выводятся оранжевым текстом в чёрной области лога ошибок. Предупреждения могут появиться даже тогда, когда выше лога ошибок появилась надпись “Загрузка завершена“. Это означает, что в прошивке нет несовместимых с жизнью ошибок, она скомпилировалась и загрузилась в плату. Что же тогда означают предупреждения? Чаще всего можно увидеть такие:

Завершая раздел Введение в Arduino поговорим о вопросах, которые очень часто возникают у новичков:

  • Ардуину можно прошить только один раз? Нет, несколько десятков тысяч раз, всё упирается в ресурс flash памяти. А он довольно большой.
  • Как стереть/нужно ли стирать старую прошивку при загрузке новой? Память автоматически очищается при прошивке, старая прошивка автоматически удаляется.
  • Можно ли записать две прошивки, чтобы они работали вместе? Нет, при прошивке удаляются абсолютно все старые данные. Из двух прошивок нужно сделать одну, причём так, чтобы не было конфликтов.
  • Можно ли “вытащить” прошивку с уже прошитой Ардуины? Теоретически можно, но только в виде нечитаемого машинного кода, в который преобразуется прошивка на С++ при компиляции, т.е. вам это НИКАК не поможет, если вы не имеете диплом по низкоуровневому программированию.
    • Зачем это нужно? Например есть у нас прошитый девайс, и мы хотим его “клонировать”. В этом случае да, есть вариант сделать дамп прошивки и загрузить его в другую плату на таком же микроконтроллере.
    • Если есть желание почитать код – увы, прошивка считывается в виде бинарного машинного кода, превратить который обратно в читаемый Си-подобный код обычному человеку не под силу
    • Вытащить прошивку, выражаясь более научно – сделать дамп прошивки, можно при помощи ISP программатора, об этом можно почитать здесь
    • Снять дамп прошивки можно только в том случае, если разработчик не ограничил такую возможность, например записав лок-биты, запрещающие считывание Flash памяти, или вообще отключив SPI шину. Если же разработчик – вы, и есть желание максимально защитить своё устройство от копирования – гуглите про лок-биты и отключение SPI

    Видео

    Читайте также: