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

Первая прошивка


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

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

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

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

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

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

  • См. предыдущий список неисправностей.
  • Некорректно установлен драйвер 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. Читайте комментарии разработчика скетча
  • Ошибка недостаточно свободного места возникает по вполне понятным причинам. Возможно поможет урок по оптимизации кода.

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


  • 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% сдох загрузчик. Второй неприятный исход – загрузчик “слетел”, и его можно прошить заново.

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


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

  • # Pragma message… – это просто сообщения, оставленные разработчиком проекта или библиотеки. Чаще всего номер версии и прочая информация.
  • Недостаточно памяти, программа может работать нестабильно – Чуть выше этого предупреждения обычно идёт информация о задействованной памяти. Память устройства можно добивать до 99%, ничего страшного не случится. Это флэш память и во время работы она не изменяется. А вот динамическую память желательно забивать не более 85-90%, иначе реально могут быть непонятные глюки в работе, так как память постоянно “бурлит” во время работы. НО. Это зависит от скетча и в первую очередь от количества локальных переменных. Можно написать такой код, который будет стабильно работать при 99% занятой SRAM памяти. Так что ещё раз: это всего лишь предупреждение, а не ошибка.

FAQ


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

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

Видео


Полезные страницы


  • Набор GyverKIT – большой стартовый набор Arduino моей разработки, продаётся в России
  • Каталог ссылок на дешёвые Ардуины, датчики, модули и прочие железки с AliExpress у проверенных продавцов
  • Подборка библиотек для Arduino, самых интересных и полезных, официальных и не очень
  • Полная документация по языку Ардуино, все встроенные функции и макросы, все доступные типы данных
  • Сборник полезных алгоритмов для написания скетчей: структура кода, таймеры, фильтры, парсинг данных
  • Видео уроки по программированию Arduino с канала “Заметки Ардуинщика” – одни из самых подробных в рунете
  • Поддержать автора за работу над уроками
  • Обратная связь – сообщить об ошибке в уроке или предложить дополнение по тексту ([email protected])
  • Войдите на сайт для отправки комментариев

Moonlord

Offline

Зарегистрирован: 27.03.2012

Как-то довольно неожиданно перестали грузиться скетчи на Ардуино Мега 2560.Аплоуд не доходит до конца…просто зависает как будто.Мигает иногда RX и все…

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

Про помочь в этом вопросе,что мне делать?

  • Войдите на сайт для отправки комментариев

Первая прошивка


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

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

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

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

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

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

  • См. предыдущий список неисправностей.
  • Некорректно установлен драйвер 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. Читайте комментарии разработчика скетча
  • Ошибка недостаточно свободного места возникает по вполне понятным причинам. Возможно поможет урок по оптимизации кода.

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


  • 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% сдох загрузчик. Второй неприятный исход – загрузчик “слетел”, и его можно прошить заново.

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


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

  • # Pragma message… – это просто сообщения, оставленные разработчиком проекта или библиотеки. Чаще всего номер версии и прочая информация.
  • Недостаточно памяти, программа может работать нестабильно – Чуть выше этого предупреждения обычно идёт информация о задействованной памяти. Память устройства можно добивать до 99%, ничего страшного не случится. Это флэш память и во время работы она не изменяется. А вот динамическую память желательно забивать не более 85-90%, иначе реально могут быть непонятные глюки в работе, так как память постоянно “бурлит” во время работы. НО. Это зависит от скетча и в первую очередь от количества локальных переменных. Можно написать такой код, который будет стабильно работать при 99% занятой SRAM памяти. Так что ещё раз: это всего лишь предупреждение, а не ошибка.

FAQ


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

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

Видео


Полезные страницы


  • Набор GyverKIT – большой стартовый набор Arduino моей разработки, продаётся в России
  • Каталог ссылок на дешёвые Ардуины, датчики, модули и прочие железки с AliExpress у проверенных продавцов
  • Подборка библиотек для Arduino, самых интересных и полезных, официальных и не очень
  • Полная документация по языку Ардуино, все встроенные функции и макросы, все доступные типы данных
  • Сборник полезных алгоритмов для написания скетчей: структура кода, таймеры, фильтры, парсинг данных
  • Видео уроки по программированию Arduino с канала “Заметки Ардуинщика” – одни из самых подробных в рунете
  • Поддержать автора за работу над уроками
  • Обратная связь – сообщить об ошибке в уроке или предложить дополнение по тексту ([email protected])

Страница 1 из 2

  1. Доброго времени суток!
    У меня возникла проблема при загрузке скетчей на Arduino Mega2560, всё работало нормально при очередной загрузке IDE выдал что возникла ошибка верификации.

    avrdude: verifying …
    avrdude: verification error, first mismatch at byte 0x0000
    0x0a != 0x06
    avrdude: verification error; content mismatch

    После нескольких неудачных попыток загрузить скетчи из примеров (Blink, … ) стало появляться сообщение

    выбранный последовательный порт
    не существует или плата не подключена к нему

    Хотя IDE видит и порт и плату, получает с неё данные (серийный номер и тд).

  2. Для меня главное разораться в каком контроллере проблема (ATMega16 or ATMega2560). судя по тому что скетч залитый (до возникновения проблемы) работает проблема в ATMega16. В подробностях загрузки наткнулся на строки «

    Using Port : COM9
    Using Programmer : wiring
    Overriding Baud Rate : 115200
    AVR Part : ATmega2560
    «
    попробовал выставить эту скорость для порта на ПК — эффекта нету

  3. Судя по тому, что

    Проблема точно не в ATmega16, а в ATmega2560.
    Ошибка вида

    Говорит о том, что есть проблемы с программированием памяти микроконтроллера ATmega2560. Память не перепрошивается по каким-то причинам — поэтому работает старая прошивка.

  4. То есть надо перепрошить Mega2560?
    Под рукой есть рабочая Nano как из неё сделать программатор в сети описано но где взять прошивку для Mega2560, в сети есть несколько ссылок но доверия они не вызывают.

  5. Б-ть. я же тебе написал, скорость порта попробуй снизить, для начала.

  6. Есть подозрение, что и с отдельным программатором Вы получите такую же ошибку, о которой сообщили в первом сообщении

    Нормальная ссылка для Arduino (заводские прошивки, бутлоадеры и т.п.) — https://github.com/arduino/Arduino

    Не поможет.

  7. Скорость менять пробовал — действительно не помогло.

  8. сделай расширенный вывод из avrdude и посмотри параметр override speed.

  9. Если внешний программатор не поможет, какие возможны действия?

  10. avrdude: Version 6.3, compiled on Jan 17 2017 at 12:00:53
    Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
    Copyright (c) 2007-2014 Joerg Wunsch

    System wide configuration file is «C:…Arduino15packagesarduinotoolsavrdude6.3.0-arduino9/etc/avrdude.conf»

    Using Port : COM9
    Using Programmer : wiring
    Overriding Baud Rate : 115200
    AVR Part : ATmega2560
    Chip Erase delay : 9000 us
    PAGEL : PD7
    BS2 : PA0
    RESET disposition : dedicated
    RETRY pulse : SCK
    serial program mode : yes
    parallel program mode : yes
    Timeout : 200
    StabDelay : 100
    CmdexeDelay : 25
    SyncLoops : 32
    ByteDelay : 0
    PollIndex : 3
    PollValue : 0x53
    Memory Detail :

    Block Poll Page Polled
    Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack
    ———— —- —— —— —- —— —— —- —— —— —— ———
    eeprom 65 10 8 0 no 4096 8 0 9000 9000 0x00 0x00
    flash 65 10 256 0 yes 262144 256 1024 4500 4500 0x00 0x00
    lfuse 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00
    hfuse 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00
    efuse 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00
    lock 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00
    calibration 0 0 0 0 no 1 0 0 0 0 0x00 0x00
    signature 0 0 0 0 no 3 0 0 0 0 0x00 0x00

    Programmer Type : Wiring
    Description : Wiring
    Programmer Model: AVRISP
    Hardware Version: 15
    Firmware Version Master : 2.10
    Vtarget : 0.0 V
    SCK period : 0.1 us

    avrdude: AVR device initialized and ready to accept instructions

    Reading | ################################################## | 100% 0.01s

    avrdude: Device signature = 0x1e9801 (probably m2560)
    avrdude: reading input file «C:UsersSandrikAppDataLocalTemparduino_build_919922/Blink.ino.hex»
    avrdude: writing flash (1462 bytes):

    Writing | ################################################## | 100% 0.24s

    avrdude: 1462 bytes of flash written
    avrdude: verifying flash memory against C:UsersSandrikAppDataLocalTemparduino_build_919922/Blink.ino.hex:
    avrdude: load data flash data from input file C:UsersSandrikAppDataLocalTemparduino_build_919922/Blink.ino.hex:
    avrdude: input file C:UsersSandrikAppDataLocalTemparduino_build_919922/Blink.ino.hex contains 1462 bytes
    avrdude: reading on-chip flash data:

    Reading | ################################################## | 100% 0.20s

    avrdude: verifying …
    avrdude: verification error, first mismatch at byte 0x0000
    0x0a != 0x06
    avrdude: verification error; content mismatch

    avrdude done. Thank you.

    выбранный последовательный порт
    не существует или плата не подключена к нему

  11. вот это ни какие мысли не наводит?

  12. Наводит, пробовал — эффекта нету

  13. Что Вы к скорости прицепились? Она правильная, т.к. с мк устанавливается связь, мк переводится в режим программирования, с мк считывается служебная информация (сигнатура), мк прошивается. А вот при проверке корректности прошивки выясняется, что прошивка в мк не та, что прошивали.
    Проблема может быть:

    1. не производится стирание памяти мк перед заливкой новой прошивки (память в ATmega’х, да и не только в них, устроена так, что перед заливкой новой прошивки нужно сначала стереть старую);
    2. закончился лимит на перепрграммирование памяти мк, либо мк бракованный — пару раз прошился, а потом сказал «всё, хватит меня шить»….

    В первом случае надо смотреть с какими параметрами вызывается avrdude. Во втором случае менять микроконтроллер — нужна паяльная станция (накройняк фен) и прямые руки.

  14. Спасибо, фен есть, свои слегка кривят, но есть знакомые с прямыми

  15. Подскажите как посмотреть необходимые параметры avrdude?

  16. Перед «хирургическим» вмешательством всё-таки стоит попробовать выяснить — может дело не в мк, а в неправильном его прошивании.
    Если есть программатор (или другая Arduino на базе AVR), то можно с помощью avrdude войти в терминальный режим и попробовать вручную стереть память мк (правда эта операция сотрёт загрузчик, но его можно либо предварительно слить, или взять из состава Arduino IDE и залить заново) и вручную перепрошить пару байт. Если после этих операций память мк будет содержать «правильные» данные, то проблема в среде Arduino IDE — не правильно формирует комманду на перепрошивку (хотя это маловероятно, но всякое может быть). Если ни чего не получится, то мк на замену.

    В документации к avrdude: http://www.nongnu.org/avrdude/user-manual/avrdude.html

  17. Другая Arduino (Nano на ATmega328) прошивается нормально, попробую с её помощью покопаться в мозгах у Mega, при неудачной прошивке к контроллеру был подключён nRF24L01+ (по SPI) проблемы с памятью не могут быть связаны с таким модулем.

  18. Файл есть, а что в нём найти надо?

    Вложения:

  19. mega.menu.cpu.atmega2560.upload.speed=115200
    поменяй на 19200

Страница 1 из 2

Что делать?

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

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

Существует две наиболее частые ситуации:

  1. Arduino IDE ругается, что не может найти указанный файл (No such file or directory). Это говорит о том, что нужно установить какую-то библиотеку. А со своими программами я всегда поставляю все необходимые библиотеки.
  2. Загрузка скетча подвисает, а потом выдает ошибку:
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0xe4
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0xe4
avrdude: stk500_recv(): programmer is not responding

1я ситуация разобрана здесь.

Вторая ситуация связана либо с тем, что плата выбрано неверно, либо выбранная плата имеет в себе старый загрузчик, который не желает работать на той скорости, на которой хочет IDE.

Дело в том, что Arduino IDE предполагает, что все современные Nano и UNO должны работать со скоростью
15200 бит в секунду. А китайские клоны до сих пор довольно часто работают со
скоростью в 2 раза меньше – 57600.

Решить эту проблему можно двумя способами:

  1. Обновить загрузчик на плате
  2. Добавить плату со старым загрузчиком в конфигурацию Arduino IDE

Лично мне кажется, что второй способ – более
универсальный и простой. Поэтому его и опишу.

Итак, зайдите на компьютере в папку, в которую
установлена Arduino IDE. Лично у меня это, как
и большинства, “C:Program Files (x86)Arduino”, если Вы на Windows.

Теперь откройте папку hardwarearduinoavr и
найдите файл boards.txt

В этом файле и находятся все платы, которые Вы выбираете через меню «Инструменты > Плата…»

Выбор платы из списка

Откройте этот файл в текстовом редакторе,
например, в блокноте.

Найдите в нем строчку uno.upload.speed

Настройки плат ардуино

Мы видим, что скорость загрузки равно 115200.
Но у нас плата, которая хочет 57600!

Можно, конечно, поменять на 115200 на 57600,
но тогда, к сожалению, мы не сможет загружать скетчи на плату с новым загрузчиком.

Выход, получается, один – добавить плату,
скажем, UNO2,
на случай скорости 57600.

Предлагаю просто вставить себе мои настройки и сохранить файл:

uno2.name=Uno 57600

uno2.vid.0=0x2341
uno2.pid.0=0x0043
uno2.vid.1=0x2341
uno2.pid.1=0x0001
uno2.vid.2=0x2A03
uno2.pid.2=0x0043
uno2.vid.3=0x2341
uno2.pid.3=0x0243

uno2.upload.tool=avrdude
uno2.upload.protocol=arduino
uno2.upload.maximum_size=32256
uno2.upload.maximum_data_size=2048
uno2.upload.speed=57600

uno2.bootloader.tool=avrdude
uno2.bootloader.low_fuses=0xFF
uno2.bootloader.high_fuses=0xDE
uno2.bootloader.extended_fuses=0xFD
uno2.bootloader.unlock_bits=0x3F
uno2.bootloader.lock_bits=0x0F
uno2.bootloader.file=optiboot/optiboot_atmega328.hex

uno2.build.mcu=atmega328p
uno2.build.f_cpu=16000000L
uno2.build.board=AVR_UNO
uno2.build.core=arduino
uno2.build.variant=standard

##############################################################

nano2.name=Nano 57600

nano2.upload.tool=avrdude
nano2.upload.protocol=arduino

nano2.bootloader.tool=avrdude
nano2.bootloader.unlock_bits=0x3F
nano2.bootloader.lock_bits=0x0F

nano2.build.f_cpu=16000000L
nano2.build.board=AVR_NANO
nano2.build.core=arduino
nano2.build.variant=eightanaloginputs

## Arduino Nano w/ ATmega328P
## --------------------------
nano2.menu.cpu.atmega328=ATmega328P

nano2.menu.cpu.atmega328.upload.maximum_size=30720
nano2.menu.cpu.atmega328.upload.maximum_data_size=2048
nano2.menu.cpu.atmega328.upload.speed=57600

nano2.menu.cpu.atmega328.bootloader.low_fuses=0xFF
nano2.menu.cpu.atmega328.bootloader.high_fuses=0xDA
nano2.menu.cpu.atmega328.bootloader.extended_fuses=0xFD
nano2.menu.cpu.atmega328.bootloader.file=optiboot/optiboot_atmega328.hex

Теперь у вас две платы UNO и две Nano:

Выбор платы ардуино в Arduino IDE

Удачи!

СОДЕРЖАНИЕ ►

  • Произошла ошибка при загрузке скетча в Ардуино
    • programmer is not responding
    • a function-definition is not allowed arduino ошибка
    • expected initializer before ‘}’ token arduino ошибка
    • ‘что-то’ was not declared in this scope arduino ошибка
    • No such file or directory arduino ошибка
  • Compilation error: Missing FQBN (Fully Qualified Board Name)

Ошибки компиляции Arduino IDE возникают при проверке или загрузке скетча в плату, если код программы содержит ошибки, компилятор не может найти библиотеки или переменные. На самом деле, сообщение об ошибке при загрузке скетча связано с невнимательностью самого программиста. Рассмотрим в этой статье все возможные ошибки компиляции для платы Ардуино UNO R3, NANO, MEGA и пути их решения.

Произошла ошибка при загрузке скетча Ардуино

Самые простые ошибки возникают у новичков, кто только начинает разбираться с языком программирования Ардуино и делает первые попытки загрузить скетч. Если вы не нашли решение своей проблемы в статье, то напишите свой вопрос в комментариях к этой записи и мы поможем решить вашу проблему с загрузкой (бесплатно!).

avrdude: stk500_recv(): programmer is not responding

Что делать в этом случае? Первым делом обратите внимание какую плату вы используете и к какому порту она подключена (смотри на скриншоте в правом нижнем углу). Необходимо сообщить Arduino IDE, какая плата используется и к какому порту она подключена. Если вы загружаете скетч в Ардуино Nano V3, но при этом в настройках указана плата Uno или Mega 2560, то вы увидите ошибку, как на скриншоте ниже.

Ошибка: programmer is not responding

Ошибка Ардуино: programmer is not responding

Такая же ошибка будет возникать, если вы не укажите порт к которому подключена плата (это может быть любой COM-порт, кроме COM1). В обоих случаях вы получите сообщение — плата не отвечает (programmer is not responding). Для исправления ошибки надо на панели инструментов Arduino IDE в меню «Сервис» выбрать нужную плату и там же, через «Сервис» → «Последовательный порт» выбрать порт «COM7».

a function-definition is not allowed here before ‘{‘ token

Это значит, что в скетче вы забыли где-то закрыть фигурную скобку. Синтаксические ошибки IDE тоже распространены и связаны они просто с невнимательностью. Такие проблемы легко решаются, так как Arduino IDE даст вам подсказку, стараясь отметить номер строки, где обнаружена ошибка. На скриншоте видно, что строка с ошибкой подсвечена, а в нижнем левом углу приложения указан номер строки.

Ошибка: a function-definition is not allowed

Ошибка: a function-definition is not allowed here before ‘{‘ token

expected initializer before ‘}’ token   expected ‘;’ before ‘}’ token

Сообщение expected initializer before ‘}’ token говорит о том, что вы, наоборот где-то забыли открыть фигурную скобку. Arduino IDE даст вам подсказку, но если скетч довольно большой, то вам придется набраться терпения, чтобы найти неточность в коде. Ошибка при компиляции программы: expected ‘;’ before ‘}’ token говорит о том, что вы забыли поставить точку с запятой в конце командной строки.

‘что-то’ was not declared in this scope

Что за ошибка? Arduino IDE обнаружила в скетче слова, не являющиеся служебными или не были объявлены, как переменные. Например, вы забыли продекларировать переменную или задали переменную ‘DATA’, а затем по невнимательности используете ‘DAT’, которая не была продекларирована. Ошибка was not declared in this scope возникает при появлении в скетче случайных или лишних символов.

Ошибка Ардуино: was not declared in this scope

Ошибка Ардуино: was not declared in this scope

Например, на скриншоте выделено, что программист забыл продекларировать переменную ‘x’, а также неправильно написал функцию ‘analogRead’. Такая ошибка может возникнуть, если вы забудете поставить комментарий, написали функцию с ошибкой и т.д. Все ошибки также будут подсвечены, а при нескольких ошибках в скетче, сначала будет предложено исправить первую ошибку, расположенную выше.

exit status 1 ошибка компиляции для платы Arduino

Данная ошибка возникает, если вы подключаете в скетче библиотеку, которую не установили в папку libraries. Например, не установлена библиотека ИК приемника Ардуино: fatal error: IRremote.h: No such file or directory. Как исправить ошибку? Скачайте нужную библиотеку и распакуйте архив в папку C:Program FilesArduinolibraries. Если библиотека установлена, то попробуйте скачать и заменить библиотеку на новую.

exit status 1 Ошибка компиляции для Arduino Nano

exit status 1 Ошибка компиляции для платы Arduino Nano

Довольно часто у новичков выходит exit status 1 ошибка компиляции для платы arduino uno /genuino uno. Причин данного сообщения при загрузке скетча в плату Arduino Mega или Uno может быть огромное множество. Но все их легко исправить, достаточно внимательно перепроверить код программы. Если в этом обзоре вы не нашли решение своей проблемы, то напишите свой вопрос в комментариях к этой статье.

missing fqbn (fully qualified board name)

Ошибка возникает, если не была выбрана плата. Обратите внимание, что тип платы необходимо выбрать, даже если вы не загружаете, а, например, делаете компиляцию скетча. В Arduino IDE 2 вы можете использовать меню выбора:
— список плат, которые подключены и были идентифицированы Arduino IDE.
— или выбрать плату и порт вручную, без подключения микроконтроллера.

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

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

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

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

##############################################
#    Added for Emartee in china
mega2560.name=Arduino Mega2560
mega2560.upload.protocol=stk500
mega2560.upload.maximum_size=258048
mega2560.upload.speed=57600
mega2560.bootloader.low_fuses=0xFF
mega2560.bootloader.high_fuses=0xD8
mega2560.bootloader.extended_fuses=0xFD
mega2560.bootloader.path=atmega
mega2560.bootloader.file=ATmegaBOOT_168_mega2560.hex
mega2560.bootloader.unlock_bits=0x3F
mega2560.bootloader.lock_bits=0x0F
mega2560.build.mcu=atmega2560
mega2560.build.f_cpu=16000000L
mega2560.build.core=arduino

  • Добавьте файл ATmegaBOOT_168_mega2560.hex из архива в hardwarearduinobootloadersatmega 

    ATmegaBOOT_168_mega2560.hex.zip (2,5 KiB, 3 589 hits)

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

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

  • Запустите, а потом закройте программу Arduino
  • Снова запустите программу Arduino
  • Выберите свою плату

stk500_getsync

  • Выберите программатор

stk500_getsync

  • Запишите загрузчик

stk500_getsync

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

stk500_getsync

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

stk500_getsync

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

Платформа Arduino – это один из самых простых путей погрузиться в мир микроконтроллеров и попробовать самому их программировать. Но однако и на этом пути вас могут подстерегать различные ошибки. Некоторые из них устранить очень просто, а на устранение других у вас могут уйти целые дни. В этой статье мы рассмотрим 10 самых распространенных ошибок при работе с платформой Arduino и способы их устранения.

10 самых распространенных ошибок при работе с Arduino

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

В этой ситуации плата Arduino, подключается к компьютеру, не распознается им. В этом случае плата Arduino не появляется в списке устройств, подключенных к компьютеру по COM портам, как показано на следующем рисунке.

Плата Arduino не распознается компьютером

Решение

Эта проблема обычно случается когда вы используете не оригинальную плату Arduino, а ее дешевые клоны, обычно китайского производства. В этих клонах Arduino вместо стандартного для оригинальных плат Arduino FTDI чипа (FT232RL) используется более дешевый чип CH340g (для преобразования USB в последовательный интерфейс). Драйверы для стандартного чипа FT232RL уже содержатся в установочном пакете Arduino IDE, поэтому при ее установке они также автоматически устанавливаются на ваш компьютер. А чтобы использовать клон платы Arduino с чипом CH340g вам необходимо предварительно скачать и установить драйвер для этого чипа – скачать его можно по следующей ссылке. Установка его крайне простая – я думаю, она не вызовет у вас никаких затруднений.

Установка драйвера для чипа CH340g

После его установки вы сможете увидеть в диспетчере устройств, к какому COM порту подключена ваша плата Arduino.

2. Плата не синхронизируется

В этом случае ваш компьютер видит подключенную к нему плату Arduino, но вы не сможете загрузить в нее код программы и вы при попытке загрузке в нее программы вместо привычного сообщения «done uploading» увидите сообщение об ошибке: “avrdude: stk500_getsync(): not in sync: resp=0x00”.

Решение

Ошибка синхронизации resp = 0x00 является общим ответом (ошибкой) на все проблемы, связанные с некорректной работой микроконтроллера Atmega (или вообще его неработоспособным состоянием), являющегося «сердцем» платы Arduino. Соответственно, причин этой ошибки может быть достаточно много. Мы рекомендуем вам выполнить следующую последовательность шагов чтобы попробовать устранить эту проблему:

  1. Убедитесь в том, что ничего не подключено к цифровым контактам 0 и 1 платы Arduino (включая шилды).
  2. Убедитесь в том, что в настройках Arduino IDE вы выбрали правильный тип платы и правильный COM порт.
  3. Пару раз нажмите кнопку сброса на плате Arduino и попробуйте после этого загрузить в нее код программы.
  4. Если не помогло, то отключите и заново подсоедините плату Arduino к компьютеру.
  5. Закройте и снова запустите Arduino IDE.

Если ничего из перечисленного не помогло, то попробуйте подключить к своему компьютеру другую плату Arduino или же подключите вашу плату Arduino к другому компьютеру. Если вы обнаружите, что проблема в компьютере, то переустановите Arduino IDE. Иногда бывает и так, что Arduino IDE из Windows работает с глюками, а из другой операционной системы на этом же компьютере работает без проблем. Также встречаются энтузиасты, которые устанавливают Arduino IDE в операционную систему от платы Raspberry Pi, то есть работают с Arduino IDE на компьютере, который состоит из платы Raspberry Pi и монитора – они говорят, что в этом случае Arduino IDE работает гораздо лучше чем из под Windows. Также, если не хотите менять компьютер или операционную систему на нем, вместо Arduino IDE можно попробовать использовать аналогичные инструменты — оболочку PlatformIO или Arduino Web Editor (официальный онлайн инструмент, его не нужно устанавливать).

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

3. Код программы не начинает исполняться при нажатии кнопки сброса (Reset)

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

Решение

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

Если плата «висит» и ничего не делает, вы сначала должны убедиться в том, что вы в это же самое время не передаете ей никаких данных с компьютера по последовательному порту. При включении питания загрузчик платы первые несколько секунд проверяет не передаются ли плате по последовательному порту какие либо данные (например, не производится ли попытка загрузки в плату нового скетча). Если никакого нового скетча не поступает, то спустя несколько секунд загрузчик начинает исполнять последний скетч, загруженный в плату. Если же ваша программа периодически передает данные по последовательному порту плате, то загрузчик попросту не перейдет к исполнению последнего загруженного в плату скетча.

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

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

4. Invalid Device Signature Error (ошибка подписи)

Ошибка подписи при работе с платой Arduino

Эта ошибка возникает при попытке загрузки кода программы в плату Arduino, тип которой отличается от той платы, которую вы выбрали в настройках Arduino IDE. Ошибка возникает из-за того, что подпись устройства (device signature) на используемой плате отличается от подписи того типа платы, которую вы выбрали в Arduino IDE.

Решение

Выбрать правильный тип платы Arduino в настройках Arduino IDE. Если это не помогает, то можно попробовать прошить плату последней версией загрузчика Arduino (Arduino bootloader).

5. Ошибка запуска (Launch4j Error)

Ошибка запуска Arduino IDE

Arduino IDE необходимо некоторое время для того чтобы запуститься и если после ее запуска вы на что-нибудь кликаете, то возникает ошибка Launch4J error как показано на представленном рисунке. Launch4j – это инструмент, который используется для упаковки (wrapping) приложений Java в программной среде Windows, который позволяет им исполняться как обычным программам Windows.

Arduino IDE написана на JAVA и эта ошибка возникает из-за несовместимости библиотеки Java Run Time Environment (JRE), поставляемой вместе с Arduino IDE.

Решение

Часто решить эту проблему удается простым выключением Bluetooth или WiFi на вашем компьютере. Если это не помогает, то более сложным вариантом решения данной проблемы является замена библиотеки JRE в Arduino IDE на ее последнюю версию.

6. Последовательный порт уже используется (Serial Port Already in Use)

Ошибка повторного использования последовательного порта в Arduino IDE

Одна из самых простых проблем для решения. Она обычно происходит когда вы пытаетесь загрузить код программы в плату Arduino в то время когда открыто окно монитора последовательной связи (serial monitor) (но эта проблема в последних версиях Arduino IDE уже устранена) или вы пытаетесь его открыть во время обмена информацией между Arduino IDE и платой Arduino, или вы пытаетесь в это время использовать этот же самый COM порт для связи с другим устройством. То есть данная проблема возникает тогда, когда вы пытаетесь использовать последовательный порт одновременно для двух вещей.

Решение

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

7. Скетч успешно загружен, но ничего не происходит

Эта проблема аналогична ранее рассмотренным проблемам. В данном случае у вас появилось сообщение, что программа успешно загружена в плату Arduino, но сама плата после этого ничего не делает.

Решение

  1. Убедитесь в том, что тип выбранной в настройках Arduino IDE платы совпадает с типом платы, в которую вы загрузили программу.
  2. Также подобная ошибка может быть вызвана тем, что размер загружаемого в плату скетча превышает объем ее памяти для хранения программ. Уменьшите объем скетча или используйте плату Arduino с большим объемом памяти.
  3. Еще одной причиной подобной ошибки может быть сильная зашумленность цепей питания. Убедитесь в том, что питающее напряжение, подаваемое на плату, достаточно стабильно.

8. Неизвестная ошибка связи (Unsatisfied Link Error)

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

Решение

Для решения этой проблемы найдите файл comm.jar или jcl.jar в папке /System/Library/Frameworks/JavaVM.framework/ или в папках на вашем компьютере, относящимся к переменным окружения CLASSPATH или PATH.

9. Размер скетча слишком большой (Sketch Too Large)

Ошибка слишком большо размера скетча при работе с Arduino

Эта ошибка происходит когда размер кода программы больше чем объем перепрограммируемой памяти (flash memory, памяти для хранения программ) используемой вами платы Arduino. К примеру, объем этой памяти в плате Arduino Uno составляет 32 Кбайта, из которых 2 Кбайта заняты загрузчиком. Если вы попытаетесь загрузить в данную плату скетч объемом более 32 Кбайт, то увидите подобную ошибку.

Решение

Для решения этой проблемы модно использовать следующие способы уменьшения объема кода программы:

  1. Там, где это возможно, используйте целые типы данных (integer) вместо вещественных (float).
  2. Там, где это возможно, используйте при объявлениях переменных спецификатор “const”.
  3. Подключайте в программу только те библиотеки, которые вы будете использовать. Там, где это возможно, используйте облегченные версии используемых библиотек.
  4. Используйте специальные алгоритмы и другие способы уменьшения объема кода программы.

Более радикальным решением этой проблемы является смена платы Arduino на плату с большим объемом памяти. Например, плату Arduino Uno можно заменить на плату Arduino Mega, или даже на плату Arduino Due.

10. Ошибка переполнения стека (java.lang.StackOverflowError)

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

Решение

В этом случае вам необходимо тщательно проинспектировать код своей программы, обращая особое внимание на те строки, в которые используются строковые переменные (типа string). Убедитесь в том, что все кавычки присутствуют в необходимых им местах. Также убедитесь в правильном использовании слешей (косых черт).

В данной статье мы рассмотрели 10 самых распространённых ошибок при работе с Arduino. Разумеется, реальное число ошибок, которые могут возникать при работе с платами Arduino, гораздо больше чем 10, однако мы попытались в этой статье рассмотреть самые распространённые из них. Если у вас возникает какая либо ошибка, которая не рассмотрена в данной статье, можете описать ее в комментариях и мы попробуем вместе с вами ее решить.

Загрузка…

9 730 просмотров

Содержание

  1. Скетч не загружается в Ардуино. Что делать?
  2. Добавить комментарий Отменить ответ
  3. Первая прошивка, ошибки, FAQ
  4. Первая прошивка
  5. Ошибки компиляции
  6. Частые ошибки в коде, приводящие к ошибке компиляции
  7. Ошибки загрузки
  8. Предупреждения
  9. Видео
  10. Произошла ошибка при загрузке скетча Ардуино
  11. Ошибки компиляции для Arduino Nano, Uno, Mega
  12. avrdude: stk500_recv(): programmer is not responding
  13. a function-definition is not allowed here before ‘<‘ token
  14. expected initializer before ‘>’ token / expected ‘;’ before ‘>’ token
  15. ‘что-то’ was not declared in this scope
  16. exit status 1 ошибка компиляции для платы Arduino
  17. missing fqbn (fully qualified board name)

Скетч не загружается в Ардуино. Что делать?

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

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

Существует две наиболее частые ситуации:

  1. Arduino IDE ругается, что не может найти указанный файл (No such file or directory). Это говорит о том, что нужно установить какую-то библиотеку. А со своими программами я всегда поставляю все необходимые библиотеки.
  2. Загрузка скетча подвисает, а потом выдает ошибку:

1я ситуация разобрана здесь.

Вторая ситуация связана либо с тем, что плата выбрано неверно, либо выбранная плата имеет в себе старый загрузчик, который не желает работать на той скорости, на которой хочет IDE.

Дело в том, что Arduino IDE предполагает, что все современные Nano и UNO должны работать со скоростью 15200 бит в секунду. А китайские клоны до сих пор довольно часто работают со скоростью в 2 раза меньше – 57600.

Решить эту проблему можно двумя способами:

  1. Обновить загрузчик на плате
  2. Добавить плату со старым загрузчиком в конфигурацию Arduino IDE

Лично мне кажется, что второй способ – более универсальный и простой. Поэтому его и опишу.

Итак, зайдите на компьютере в папку, в которую установлена Arduino IDE. Лично у меня это, как и большинства, “C:Program Files (x86)Arduino”, если Вы на Windows.

Теперь откройте папку hardwarearduinoavr и найдите файл boards.txt

В этом файле и находятся все платы, которые Вы выбираете через меню «Инструменты > Плата…»

Выбор платы из списка

Откройте этот файл в текстовом редакторе, например, в блокноте.

Найдите в нем строчку uno.upload.speed

Настройки плат ардуино

Мы видим, что скорость загрузки равно 115200. Но у нас плата, которая хочет 57600!

Можно, конечно, поменять на 115200 на 57600, но тогда, к сожалению, мы не сможет загружать скетчи на плату с новым загрузчиком.

Выход, получается, один – добавить плату, скажем, UNO2, на случай скорости 57600.

Предлагаю просто вставить себе мои настройки и сохранить файл:

Теперь у вас две платы UNO и две Nano:

Выбор платы ардуино в Arduino IDE

Добавить комментарий Отменить ответ

Для отправки комментария вам необходимо авторизоваться.

Источник

Первая прошивка, ошибки, FAQ

Первая прошивка

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

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

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

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

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

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

  • См. предыдущий список неисправностей.
  • Некорректно установлен драйвер 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. Читайте комментарии разработчика скетча
  • Ошибка недостаточно свободного места возникает по вполне понятным причинам. Возможно поможет урок по оптимизации кода.

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

  • 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% сдох загрузчик. Второй неприятный исход – загрузчик “слетел”, и его можно прошить заново.

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

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

  • # Pragma message… – это просто сообщения, оставленные разработчиком проекта или библиотеки. Чаще всего номер версии и прочая информация.
  • Недостаточно памяти, программа может работать нестабильно – Чуть выше этого предупреждения обычно идёт информация о задействованной памяти. Память устройства можно добивать до 99%, ничего страшного не случится. Это флэш память и во время работы она не изменяется. А вот динамическую память желательно забивать не более 85-90%, иначе реально могут быть непонятные глюки в работе, так как память постоянно “бурлит” во время работы. НО. Это зависит от скетча и в первую очередь от количества локальных переменных. Можно написать такой код, который будет стабильно работать при 99% занятой SRAM памяти. Так что ещё раз: это всего лишь предупреждение, а не ошибка.

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

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

Видео

Источник

Произошла ошибка при загрузке скетча Ардуино

Ошибки компиляции Arduino IDE возникают при проверке или загрузке скетча в плату, если код программы содержит ошибки, компилятор не может найти библиотеки или переменные. На самом деле, сообщение об ошибке при загрузке скетча связано с невнимательностью самого программиста. Рассмотрим в этой статье все возможные ошибки компиляции для платы Ардуино UNO R3, NANO, MEGA и пути их решения.

Ошибки компиляции для Arduino Nano, Uno, Mega

Самые простые ошибки возникают у новичков, кто только начинает разбираться с языком программирования Ардуино и делает первые попытки загрузить скетч. Если вы не нашли решение своей проблемы в статье, то напишите свой вопрос в комментариях к этой записи и мы поможем решить вашу проблему с загрузкой (бесплатно!).

avrdude: stk500_recv(): programmer is not responding

Что делать в этом случае? Первым делом обратите внимание какую плату вы используете и к какому порту она подключена (смотри на скриншоте в правом нижнем углу). Необходимо сообщить Arduino IDE, какая плата используется и к какому порту она подключена. Если вы загружаете скетч в Ардуино Nano V3, но при этом в настройках указана плата Uno или Mega 2560, то вы увидите ошибку, как на скриншоте ниже.

Ошибка Ардуино: programmer is not responding

Такая же ошибка будет возникать, если вы не укажите порт к которому подключена плата (это может быть любой COM-порт, кроме COM1). В обоих случаях вы получите сообщение — плата не отвечает ( programmer is not responding ). Для исправления ошибки надо на панели инструментов Arduino IDE в меню «Сервис» выбрать нужную плату и там же, через «Сервис» → «Последовательный порт» выбрать порт «COM7».

a function-definition is not allowed here before ‘<‘ token

Это значит, что в скетче вы забыли где-то закрыть фигурную скобку. Синтаксические ошибки IDE тоже распространены и связаны они просто с невнимательностью. Такие проблемы легко решаются, так как Arduino IDE даст вам подсказку, стараясь отметить номер строки, где обнаружена ошибка. На скриншоте видно, что строка с ошибкой подсвечена, а в нижнем левом углу приложения указан номер строки.

Ошибка: a function-definition is not allowed here before ‘<‘ token

expected initializer before ‘>’ token / expected ‘;’ before ‘>’ token

Сообщение expected initializer before ‘>’ token говорит о том, что вы, наоборот где-то забыли открыть фигурную скобку. Arduino IDE даст вам подсказку, но если скетч довольно большой, то вам придется набраться терпения, чтобы найти неточность в коде. Ошибка при компиляции программы: expected ‘;’ before ‘>’ token говорит о том, что вы забыли поставить точку с запятой в конце командной строки.

‘что-то’ was not declared in this scope

Что за ошибка? Arduino IDE обнаружила в скетче слова, не являющиеся служебными или не были объявлены, как переменные. Например, вы забыли продекларировать переменную или задали переменную ‘DATA’, а затем по невнимательности используете ‘DAT’, которая не была продекларирована. Ошибка was not declared in this scope возникает при появлении в скетче случайных или лишних символов.

Ошибка Ардуино: was not declared in this scope

Например, на скриншоте выделено, что программист забыл продекларировать переменную ‘x’, а также неправильно написал функцию ‘analogRead’. Такая ошибка может возникнуть, если вы забудете поставить комментарий, написали функцию с ошибкой и т.д. Все ошибки также будут подсвечены, а при нескольких ошибках в скетче, сначала будет предложено исправить первую ошибку, расположенную выше.

exit status 1 ошибка компиляции для платы Arduino

Данная ошибка возникает, если вы подключаете в скетче библиотеку, которую не установили в папку libraries. Например, не установлена библиотека ИК приемника Ардуино: fatal error: IRremote.h: No such file or directory . Как исправить ошибку? Скачайте нужную библиотеку и распакуйте архив в папку C:Program FilesArduinolibraries. Если библиотека установлена, то попробуйте скачать и заменить библиотеку на новую.

exit status 1 Ошибка компиляции для платы Arduino Nano

Довольно часто у новичков выходит exit status 1 ошибка компиляции для платы arduino/genuino uno. Причин данного сообщения при загрузке скетча в плату Arduino Mega или Uno может быть огромное множество. Но все их легко исправить, достаточно внимательно перепроверить код программы. Если в этом обзоре вы не нашли решение своей проблемы, то напишите свой вопрос в комментариях к этой статье.

missing fqbn (fully qualified board name)

Ошибка возникает, если не была выбрана плата. Обратите внимание, что тип платы необходимо выбрать, даже если вы не загружаете, а, например, делаете компиляцию скетча. В Arduino IDE 2 вы можете использовать меню выбора:
— список плат, которые подключены и были идентифицированы Arduino IDE.
— или выбрать плату и порт вручную, без подключения микроконтроллера.

Источник

СОДЕРЖАНИЕ ►

  • Произошла ошибка при загрузке скетча в Ардуино
    • programmer is not responding
    • a function-definition is not allowed arduino ошибка
    • expected initializer before ‘}’ token arduino ошибка
    • ‘что-то’ was not declared in this scope arduino ошибка
    • No such file or directory arduino ошибка
  • Compilation error: Missing FQBN (Fully Qualified Board Name)

Ошибки компиляции Arduino IDE возникают при проверке или загрузке скетча в плату, если код программы содержит ошибки, компилятор не может найти библиотеки или переменные. На самом деле, сообщение об ошибке при загрузке скетча связано с невнимательностью самого программиста. Рассмотрим в этой статье все возможные ошибки компиляции для платы Ардуино UNO R3, NANO, MEGA и пути их решения.

Произошла ошибка при загрузке скетча Ардуино

Самые простые ошибки возникают у новичков, кто только начинает разбираться с языком программирования Ардуино и делает первые попытки загрузить скетч. Если вы не нашли решение своей проблемы в статье, то напишите свой вопрос в комментариях к этой записи и мы поможем решить вашу проблему с загрузкой (бесплатно!).

avrdude: stk500_recv(): programmer is not responding

Что делать в этом случае? Первым делом обратите внимание какую плату вы используете и к какому порту она подключена (смотри на скриншоте в правом нижнем углу). Необходимо сообщить Arduino IDE, какая плата используется и к какому порту она подключена. Если вы загружаете скетч в Ардуино Nano V3, но при этом в настройках указана плата Uno или Mega 2560, то вы увидите ошибку, как на скриншоте ниже.

Ошибка: programmer is not responding

Ошибка Ардуино: programmer is not responding

Такая же ошибка будет возникать, если вы не укажите порт к которому подключена плата (это может быть любой COM-порт, кроме COM1). В обоих случаях вы получите сообщение — плата не отвечает (programmer is not responding). Для исправления ошибки надо на панели инструментов Arduino IDE в меню «Сервис» выбрать нужную плату и там же, через «Сервис» → «Последовательный порт» выбрать порт «COM7».

a function-definition is not allowed here before ‘{‘ token

Это значит, что в скетче вы забыли где-то закрыть фигурную скобку. Синтаксические ошибки IDE тоже распространены и связаны они просто с невнимательностью. Такие проблемы легко решаются, так как Arduino IDE даст вам подсказку, стараясь отметить номер строки, где обнаружена ошибка. На скриншоте видно, что строка с ошибкой подсвечена, а в нижнем левом углу приложения указан номер строки.

Ошибка: a function-definition is not allowed

Ошибка: a function-definition is not allowed here before ‘{‘ token

expected initializer before ‘}’ token   expected ‘;’ before ‘}’ token

Сообщение expected initializer before ‘}’ token говорит о том, что вы, наоборот где-то забыли открыть фигурную скобку. Arduino IDE даст вам подсказку, но если скетч довольно большой, то вам придется набраться терпения, чтобы найти неточность в коде. Ошибка при компиляции программы: expected ‘;’ before ‘}’ token говорит о том, что вы забыли поставить точку с запятой в конце командной строки.

‘что-то’ was not declared in this scope

Что за ошибка? Arduino IDE обнаружила в скетче слова, не являющиеся служебными или не были объявлены, как переменные. Например, вы забыли продекларировать переменную или задали переменную ‘DATA’, а затем по невнимательности используете ‘DAT’, которая не была продекларирована. Ошибка was not declared in this scope возникает при появлении в скетче случайных или лишних символов.

Ошибка Ардуино: was not declared in this scope

Ошибка Ардуино: was not declared in this scope

Например, на скриншоте выделено, что программист забыл продекларировать переменную ‘x’, а также неправильно написал функцию ‘analogRead’. Такая ошибка может возникнуть, если вы забудете поставить комментарий, написали функцию с ошибкой и т.д. Все ошибки также будут подсвечены, а при нескольких ошибках в скетче, сначала будет предложено исправить первую ошибку, расположенную выше.

exit status 1 ошибка компиляции для платы Arduino

Данная ошибка возникает, если вы подключаете в скетче библиотеку, которую не установили в папку libraries. Например, не установлена библиотека ИК приемника Ардуино: fatal error: IRremote.h: No such file or directory. Как исправить ошибку? Скачайте нужную библиотеку и распакуйте архив в папку C:Program FilesArduinolibraries. Если библиотека установлена, то попробуйте скачать и заменить библиотеку на новую.

exit status 1 Ошибка компиляции для Arduino Nano

exit status 1 Ошибка компиляции для платы Arduino Nano

Довольно часто у новичков выходит exit status 1 ошибка компиляции для платы arduino uno /genuino uno. Причин данного сообщения при загрузке скетча в плату Arduino Mega или Uno может быть огромное множество. Но все их легко исправить, достаточно внимательно перепроверить код программы. Если в этом обзоре вы не нашли решение своей проблемы, то напишите свой вопрос в комментариях к этой статье.

missing fqbn (fully qualified board name)

Ошибка возникает, если не была выбрана плата. Обратите внимание, что тип платы необходимо выбрать, даже если вы не загружаете, а, например, делаете компиляцию скетча. В Arduino IDE 2 вы можете использовать меню выбора:
— список плат, которые подключены и были идентифицированы Arduino IDE.
— или выбрать плату и порт вручную, без подключения микроконтроллера.

Страница 1 из 2

  1. Доброго времени суток!
    У меня возникла проблема при загрузке скетчей на Arduino Mega2560, всё работало нормально при очередной загрузке IDE выдал что возникла ошибка верификации.

    avrdude: verifying …
    avrdude: verification error, first mismatch at byte 0x0000
    0x0a != 0x06
    avrdude: verification error; content mismatch

    После нескольких неудачных попыток загрузить скетчи из примеров (Blink, … ) стало появляться сообщение

    выбранный последовательный порт
    не существует или плата не подключена к нему

    Хотя IDE видит и порт и плату, получает с неё данные (серийный номер и тд).

  2. Для меня главное разораться в каком контроллере проблема (ATMega16 or ATMega2560). судя по тому что скетч залитый (до возникновения проблемы) работает проблема в ATMega16. В подробностях загрузки наткнулся на строки «

    Using Port : COM9
    Using Programmer : wiring
    Overriding Baud Rate : 115200
    AVR Part : ATmega2560
    «
    попробовал выставить эту скорость для порта на ПК — эффекта нету

  3. Судя по тому, что

    Проблема точно не в ATmega16, а в ATmega2560.
    Ошибка вида

    Говорит о том, что есть проблемы с программированием памяти микроконтроллера ATmega2560. Память не перепрошивается по каким-то причинам — поэтому работает старая прошивка.

  4. То есть надо перепрошить Mega2560?
    Под рукой есть рабочая Nano как из неё сделать программатор в сети описано но где взять прошивку для Mega2560, в сети есть несколько ссылок но доверия они не вызывают.

  5. Б-ть. я же тебе написал, скорость порта попробуй снизить, для начала.

  6. Есть подозрение, что и с отдельным программатором Вы получите такую же ошибку, о которой сообщили в первом сообщении

    Нормальная ссылка для Arduino (заводские прошивки, бутлоадеры и т.п.) — https://github.com/arduino/Arduino

    Не поможет.

  7. Скорость менять пробовал — действительно не помогло.

  8. сделай расширенный вывод из avrdude и посмотри параметр override speed.

  9. Если внешний программатор не поможет, какие возможны действия?

  10. avrdude: Version 6.3, compiled on Jan 17 2017 at 12:00:53
    Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
    Copyright (c) 2007-2014 Joerg Wunsch

    System wide configuration file is «C:…Arduino15packagesarduinotoolsavrdude6.3.0-arduino9/etc/avrdude.conf»

    Using Port : COM9
    Using Programmer : wiring
    Overriding Baud Rate : 115200
    AVR Part : ATmega2560
    Chip Erase delay : 9000 us
    PAGEL : PD7
    BS2 : PA0
    RESET disposition : dedicated
    RETRY pulse : SCK
    serial program mode : yes
    parallel program mode : yes
    Timeout : 200
    StabDelay : 100
    CmdexeDelay : 25
    SyncLoops : 32
    ByteDelay : 0
    PollIndex : 3
    PollValue : 0x53
    Memory Detail :

    Block Poll Page Polled
    Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack
    ———— —- —— —— —- —— —— —- —— —— —— ———
    eeprom 65 10 8 0 no 4096 8 0 9000 9000 0x00 0x00
    flash 65 10 256 0 yes 262144 256 1024 4500 4500 0x00 0x00
    lfuse 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00
    hfuse 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00
    efuse 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00
    lock 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00
    calibration 0 0 0 0 no 1 0 0 0 0 0x00 0x00
    signature 0 0 0 0 no 3 0 0 0 0 0x00 0x00

    Programmer Type : Wiring
    Description : Wiring
    Programmer Model: AVRISP
    Hardware Version: 15
    Firmware Version Master : 2.10
    Vtarget : 0.0 V
    SCK period : 0.1 us

    avrdude: AVR device initialized and ready to accept instructions

    Reading | ################################################## | 100% 0.01s

    avrdude: Device signature = 0x1e9801 (probably m2560)
    avrdude: reading input file «C:UsersSandrikAppDataLocalTemparduino_build_919922/Blink.ino.hex»
    avrdude: writing flash (1462 bytes):

    Writing | ################################################## | 100% 0.24s

    avrdude: 1462 bytes of flash written
    avrdude: verifying flash memory against C:UsersSandrikAppDataLocalTemparduino_build_919922/Blink.ino.hex:
    avrdude: load data flash data from input file C:UsersSandrikAppDataLocalTemparduino_build_919922/Blink.ino.hex:
    avrdude: input file C:UsersSandrikAppDataLocalTemparduino_build_919922/Blink.ino.hex contains 1462 bytes
    avrdude: reading on-chip flash data:

    Reading | ################################################## | 100% 0.20s

    avrdude: verifying …
    avrdude: verification error, first mismatch at byte 0x0000
    0x0a != 0x06
    avrdude: verification error; content mismatch

    avrdude done. Thank you.

    выбранный последовательный порт
    не существует или плата не подключена к нему

  11. вот это ни какие мысли не наводит?

  12. Наводит, пробовал — эффекта нету

  13. Что Вы к скорости прицепились? Она правильная, т.к. с мк устанавливается связь, мк переводится в режим программирования, с мк считывается служебная информация (сигнатура), мк прошивается. А вот при проверке корректности прошивки выясняется, что прошивка в мк не та, что прошивали.
    Проблема может быть:

    1. не производится стирание памяти мк перед заливкой новой прошивки (память в ATmega’х, да и не только в них, устроена так, что перед заливкой новой прошивки нужно сначала стереть старую);
    2. закончился лимит на перепрграммирование памяти мк, либо мк бракованный — пару раз прошился, а потом сказал «всё, хватит меня шить»….

    В первом случае надо смотреть с какими параметрами вызывается avrdude. Во втором случае менять микроконтроллер — нужна паяльная станция (накройняк фен) и прямые руки.

  14. Спасибо, фен есть, свои слегка кривят, но есть знакомые с прямыми

  15. Подскажите как посмотреть необходимые параметры avrdude?

  16. Перед «хирургическим» вмешательством всё-таки стоит попробовать выяснить — может дело не в мк, а в неправильном его прошивании.
    Если есть программатор (или другая Arduino на базе AVR), то можно с помощью avrdude войти в терминальный режим и попробовать вручную стереть память мк (правда эта операция сотрёт загрузчик, но его можно либо предварительно слить, или взять из состава Arduino IDE и залить заново) и вручную перепрошить пару байт. Если после этих операций память мк будет содержать «правильные» данные, то проблема в среде Arduino IDE — не правильно формирует комманду на перепрошивку (хотя это маловероятно, но всякое может быть). Если ни чего не получится, то мк на замену.

    В документации к avrdude: http://www.nongnu.org/avrdude/user-manual/avrdude.html

  17. Другая Arduino (Nano на ATmega328) прошивается нормально, попробую с её помощью покопаться в мозгах у Mega, при неудачной прошивке к контроллеру был подключён nRF24L01+ (по SPI) проблемы с памятью не могут быть связаны с таким модулем.

  18. Файл есть, а что в нём найти надо?

    Вложения:

  19. mega.menu.cpu.atmega2560.upload.speed=115200
    поменяй на 19200

Страница 1 из 2

  • Ошибка при загрузке скайпа
  • Ошибка при загрузке системы 0xc000000f
  • Ошибка при загрузке системы 0x0000007b
  • Ошибка при загрузке приложения 0x000007b
  • Ошибка при загрузке приложение ютуб