Arduino mega 2560 не прошивается через usb

Обновлено: 07.07.2024

Сегодня около часа потерял на том, что внезапно Мега перестала шиться.. причем очень своеобразно.

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

Сделал небольшие изменения (занимался отладкой и кое-какие данные хотел получить в Serial) и вдруг - не заливается скетч! Процесс начинается, светодиоды положенные моргают, но потом вдруг процесс останавливается, IDE ругается на таймаут при взаимодействии с программатором и т.п. Начал грешить на то, что битая мега (скетч довольно здоровый и все еще растет) - что просто не заливается из-за дефекта памяти.

Заливаю примитивный блинк - все работает. Заливаю одну из предыдущих версий скетча - работает.

Заливаю последнюю версию скетча, на которой работать перестало - опять не работает.

Кто "угадает" в чем проблема?

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

Но тема всетаки ближе к программированию, чем к железу.

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

Это беда бутлоудера, и как я понял именно у Меги, видать где-то . используется как какой-то идентификатор чего-то.

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

Так отловил только после того, как сказал IDE выводить подробную информацию при заливке скетча.. так вот когда (глядя на светодиоды RX и TX) увидел, что добрались до места "затыка" в выводе стали выводиться символы (по одному) из которых сложилось bootloader (если есть мега - гляньте, выглядит эпично).

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

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

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

поправил немного код в loop(): вместо двух переменных типа String оставил одну. используется для подготовки значений к выводу на экран. странно как-то.. почему так оно все. Заработало.

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

kisoft аватар

Насколько помню, в бутлоадере . используется сознательно. Проблема решается перекомпиляцией бутлоадера. Да, это не для всех Ардуино

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

Вот именно с этого момента мега и перестала шиться. Пробовал держать ресет перед запуском загрузчика - не помогло

Сегодня решил на шару еще раз попробовать - подключил и все прошилось. Видимо мой код без обвязки (были подключены ethernet shield и модуль nrf24) не входил в цикл где забивался Serial и прошился на ура

не уверен, что у ТС таже проблема, но вполне может быть, так как и у него шиться перестало с какой-то версии кода

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

а как эта переклмпиляция делается? "Записать загрузчик" в стандартной среде ардуины - это оно? страшновато как-то делать. вдруг в кирпич превратится..

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

kisoft аватар

Загрузчик пишется только через ISP, потому, если не работает, можно записать снова. Другое дело, что фьюзы, если нужно менять, нужно менять осторожно.
На счет компиляции, в двух словах не объяснить. Я писал про Ардуино16 (атмега16) и прикладывал файлы, поищите здесь на форуме, если непонятно там и спросите, объясню

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

Vadym аватар

На моей Mega 2560 R3 тоже вылез глюк, на плату можно залить программу до 106 кб, если чуть больше, вроде загрузка проходит, только потом экран становится белым и ничего не работает. Пробовал разные варианты, ничего не выходит. Кто то уже решал данную проблему?

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

Вроде была ссылка на очень полезную тему

Там Hocku в виде инструкции оформил. (пост от Пнд, 25/04/2011 - 22:32 )

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

Всем доброго дня!

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

Столкнулась с такой проблемой (стыдно признаться, но): полгода не пользовала Arduino (Mega 2560). До этого всё было прекрасно, запрограммировала небольшого робота, плата не подводила. За полгода успела сменить ноутбук. Раньше была windows7, 32bit , а сейчас win8 и 64. Подключила, драйвер, конечно же, не встал. Скачала, поставила насильно. Скачала IDE 1.0.4 . Не могу запустить даже сервопривод. Причем подключенный полгода назад UZ -дальномер по старому залитому скетчу исправно продолжает считывать расстояние, то есть плата вроде как в порядке.
Выдает:

avrdude: stk500v2_ReceiveMessage(): timeout

avrdude: stk500v2_ReceiveMessage(): timeout

avrdude: stk500v2_ReceiveMessage(): timeout

avrdude: stk500v2_ReceiveMessage(): timeout

avrdude: stk500v2_ReceiveMessage(): timeout

avrdude: stk500v2_ReceiveMessage(): timeout

avrdude: stk500v2_getsync(): timeout communicating with programmer

Вопрос: что это и как починить?

Предвосхищая возможные вопросы: шнур USB меняла, плату перезагружала, в IDE плата выбрана верная, напряжение на пинах - есть.

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

Puhlyaviy аватар

драйвер видимо не встал. надыть 1.5.2 версию ставить и драйвер отудава должон встать на 8 винду как родной.

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

Спасибо! Вечером попробую. Параллельно полистала форум .cc - нашла обсуждение подобной проблемы, действительно, помогла переустановка драйвера.

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

Puhlyaviy аватар

Спасибо! Вечером попробую. Параллельно полистала форум .cc - нашла обсуждение подобной проблемы, действительно, помогла переустановка драйвера.

если верить форумам, то даже шаманские танцы с бубном помогают :) а не то что там какие то перестановки драйверов

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

Установка драйвера из IDE 1.5.2 не помогла =( Ребят, может есть еще идеи?

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

Puhlyaviy аватар

ну самый простой вариант првоерить встал ли драйвер правильно это перемкнуть на ардуинке TX0 - RX0 и послать чего нибуть через терминал если вернется значит драйвер стоит правильно и нада рыть дальше. если нет. то нада удалять драйвер и искать правильный

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

внезано перестал заливаться код на мегу (определяется нормально)

включаю в юсб, L два раза моргает (как и если ресет нажать) и все

при попытке загрузить скетч диоды rx tx не моргают, получаю

Global variables use 9 bytes (0%) of dynamic memory, leaving 8 183 bytes for local variables. Maximum is 8 192 bytes. avrdude: stk500v2_getsync(): timeout communicating with programmer avrdude: ser_open(): can't open device "\\.\COM4": Отказано в доступе.
  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
avrdude: ser_open(): can't open device "\\.\COM4": Отказано в доступе.

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

какого рода помощь ты желаешь - ментальную или материальную?

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
avrdude: ser_open(): can't open device "\\.\COM4": Отказано в доступе.

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

какого рода помощь ты желаешь - ментальную или материальную?

хотелось бы, чтобы плата заработала)

сейчас у друга стрелял такую же 2560-на ней все ок.

если аппаратная, есть варианты ремонта? или замена платы? схема там или что нибудь?

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

Puhlyaviy аватар

какого рода помощь ты желаешь - ментальную или материальную?


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

если аппаратная, есть варианты ремонта? или замена платы? схема там или что нибудь?

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

Здравствуйте, вот у меня произошла такая проблема . Когда я загружаю скетч в arduino mega 2560 выходит вот такая ошибка :
avrdude: stk500v2_getsync(): timeout communicating with programmer
подскажите что делать ?

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

Здравствуйте, вот у меня произошла такая проблема . Когда я загружаю скетч в arduino mega 2560 выходит вот такая ошибка :
avrdude: stk500v2_getsync(): timeout communicating with programmer
подскажите что делать ?

Ардуинка Ваша живая? Работала до этого? С драйвером все в порядке?

И в первую очередь проверьте, в IDE плату правьльно выбрали?

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

13. Не забываем отпаять резистор от платы.
а какой резистор надо отпаять я так и не понял ?

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

13. Не забываем отпаять резистор от платы.
а какой резистор надо отпаять я так и не понял ?

Который припаяли в пункте 3.

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

но не могу найти где лежит необходимый spi.h

функция "поиск файла" не работает в твоей системе?

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

Находятся несколько штук, только ни в одном нет упомянутых строк. И в опомянутой директории этого файла нет. У меня установлена последняя Arduino IDE 1.7.8 Здесь SPI.h совсем не такой, как в примере по ссылке. Имеет ли смысл устанавливать старую IDE?

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

А если на ethernet shield только индикатор on горит, a при присоединении сетевого кабеля от роутера на гнезде ничего не загорается - шильд совсем мертвый?

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

VictorNsk аватар

Возникла проблема. Нет связи с Arduino (Китай) в версии 1.6.8. В версии Arduino 1.6.6 проблем нет. СОМ порт СН340. Кто сталкивался с проблемой. Переустановка драйвера не помогает.

Проблема самоустранилась. Версия 1.6.8 исчезла, стала 1.6.7 с инсталятором.

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

Проблему решил - была похожая проблема( avrdude: stk500_getsync() attempt 1 of 10 ).

перепробовал держать резет, перемыкать TX-RX - ничего не помогало.

Нашёл решение на forum.arduino.cc:

Необходимо раскромсать кабель ЮСБ. Сделать отключаемым провод D-(у меня был белый). Подключаем в ПК(все 4 провода ЮСБ подключены). Устройство определилось нормально. Начинаем загружать скетч(взял самый короткий для скорости - почти пустой " void setup() < >void loop() < >" ) и отключаем его(провод D-). Вроде как пробовал 2 раза для уверенности! на 3-й раз вылезла ошибка - ошибка доступа к КОМ-порту. Вытащил провод, воткнул обратно и вуаля - видится нормально и прошивается тоже.

Кстати - прошивал на обычной скорости 9600 ком-порта. Версия софта 1.6.7 выбор настроек:arduino nano/atmega328/программатор arduino на ISP.


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

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

    Видео

    Не загружаются скетчи на Ардуино мега 2560

    Не загружаются скетчи на Ардуино мега 2560

    dt_andrew » 13 ноя 2013, 08:21

    После покупки плата была полностью рабочая
    потом отложил ее и она лежала в коробке
    снова понадобилась
    подключил УСБ поставил дрова - все замечательно
    компелю в оболочке самый простой скетч блинк пытаюсь загрузить
    с переодичностью раз в 2-3 сек подмаргивает светик RX затем вылетает по тайауту
    resync_00 или как то так ошибка зовется
    решил проверить сам проц
    подключил внешний программатор
    сигнатура читается фузы считываются
    вроде проц в порядке
    почитал на форумах что проверить линии RX TX от меги16У2 и мегой2560
    прозвонил по схеме все ок - замыканий на землю и питания и между собой нет
    резисторы проходные по 1к целы
    как побороть эту беду подскажите

    ilya_dan » 13 ноя 2013, 12:34

    Попробуйте отключить от USB лишние и/или неиспользуемые устройства, а от самой Mega - любые схемы и шилд-платы. Если плата подключена через USB-хаб, попробуйте подключить ее напрямую к компьютеру. После подключения к компьютеру и проверьте, что сообщает Windows о VID и PID устройства (в диспетчере задач).

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

    dt_andrew » 13 ноя 2013, 13:28

    на УСБ лишних устройств нет
    клава мышь принтер подключены в разные УСБ порты компьютера

    в диспечере устройств показывает
    USB\VID_16D0&PID_0645&REV_0001
    USB\VID_16D0&PID_0645

    в самом с именем Freeduino Mega 2560 (COM8)

    лог попытки загрузки скетча
    Binary sketch size: 1 662 bytes (of a 258 048 byte maximum) - 0% used
    C:\arduino-1.5.2/hardware/tools/avr/bin/avrdude -CC:\arduino-1.5.2/hardware/tools/avr/etc/avrdude.conf -q -q -patmega2560 -cwiring -PCOM8 -b115200 -D -Uflash:w:C:\Users\DOJNIK

    1\AppData\Local\Temp\build853255791371976766.tmp/Blink.cpp.hex:i
    avrdude: stk500v2_ReceiveMessage(): timeout
    avrdude: stk500v2_ReceiveMessage(): timeout
    avrdude: stk500v2_ReceiveMessage(): timeout
    avrdude: stk500v2_ReceiveMessage(): timeout
    avrdude: stk500v2_ReceiveMessage(): timeout
    avrdude: stk500v2_ReceiveMessage(): timeout
    avrdude: stk500v2_getsync(): timeout communicating with programmer

    параметры порта менял
    пробывал под разными версиями IDE начиная с 023

    ilya_dan » 13 ноя 2013, 13:47

    Как себя ведет светодиод L (желтый, который связан с D13) при нажатии кнопки RESET? Вспыхивает однократно, моргает постоянно, вообще не загорается?

    dt_andrew » 13 ноя 2013, 14:17

    светик L13 не загорается вообще
    такое впечатление что загрузчик слетел
    только не могу понять толь у самой меги2560 толи у меги16у2

    ilya_dan » 13 ноя 2013, 14:36

    Если светодиод L не загорается вообще, проблема где-то в ATmega2560-AU. Если у Вас есть программатор, который поддерживается ArduinoIDE, можете попробовать перепрошить загрузчик. Для этого надо установить тип программатора в меню "Сервис" -> "Программатор" (здесь и далее русское меню ArduinoIDE 1.0.5), тип платы в меню "Сервис" -> "Плата", это будет "Arduino Mega 2560 or Mega ADK", затем подключить программатор к разъему на плате и выполнить команду "Сервис" - "Записать загрузчик".

    После этого бутлоадер будет перезаписан, правильно установлены фьюзы и лок-биты.

    dt_andrew » 13 ноя 2013, 16:21

    попробывал прошить с помощью STK500v2 by Petka
    в оболочке выбрал AVRISP
    вылетает с ошибкой
    загрузил AvrStudio там программатор работает нормально
    проверил фузы стояли как надо, тоесть не слетели
    загрузил загрузчик stk500boot_v2_mega2560.hex
    прошился нормально
    светодиод 13 стат подмаргивать раз раз пауза раз
    так и должно быть

    прогресс есть, скетчи стали загружаться нормально
    смущает только постоянное моргание светика в ожидании
    раньше он несколько раз моргнул и все затих

    Несколько способов прошивки Arduino и решение проблем, связанных с этим

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

    Все платы ардуино, начиная с серии Nano, имеют USB интерфейс. Серия Mini и Pro Mini его не имеет, и прошивается исключительно TTL конвертером. Но дело в том, что и любая другая ардуинка шьется этим программатором. Если у Вас его нет — настоятельно рекомендую купить, тем более цена у него 50-60 рублей (на момент написания статьи), это универсальный программатор, который может еще не раз пригодится. Так я, например, при помощи него перепрошил свою аппаратуру радиоуправления FlySky i6 и рацию Kenwood T2000, не покупая специальных фирменных программаторов, которые стоят куда дороже. Но я отошел от темы. В общем, на всех платах ардуино есть выводы RX и TX (это интерфейс общения, "передача/прием"), при помощи которых можно прошить ардуино в обход чипа USB интерфейса. Эти конвертеры, однако, тоже есть разных версий. Когда я покупал свой, самый распространенный и самый дешевый был конвертер, без вывода reset. Особенность программирования ардуино таким программатором заключается в том, что ровно по окончанию компиляции и началу загрузки нужно жать кнопку reset на плате. Тут, на самом деле, нужна некая сноровка. Если первый раз пропустили — продолжайте жать кнопку с периодичностью примерно в 2 секунды. Среда дает 10 запросов, если удастся попасть в один из них — вуаля, мы прошили ардуинку. Более современные программаторы имеют пятый вывод, который подключается к тому самому ресету, и дергает его автоматически. Но главное, нюанс я описал. Ещё момент. Как правило, RX нужно подключать к TX и наоборот. Но в редких случаях (ну китайцы) нужно подключать RX в RX, а TX в TX. Просто неправильно подписывают. И так, если и это не помогает, переходим к способу 3.








    Но на всякий прикрепляю дрова для CP2102

    Особенности.

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

    Начиная с версии Nano платы Arduino имеют разъем внутрисхемного программирования ISP . Это шести контактный разъем, на который, как правило, никто не обращает внимание. При помощи него можно прошить микроконтроллер непосредственно, напрямую, в обход всего, что только можно обойти, как физической части, так и программной. Именно таким образом мне пришлось прошивать свою последнюю плату arduino. Собственно, при помощи этого метода можно создавать и свои клоны ардуино, прошивая в атмегу ардуиновский бутлоадер. Об этом я писал в своей статье про авионику спортивной ракеты. Но снова же, не об этом. Для прошивки потребуется вот такой вот программатор:


    Это обычный USBasp, самый распространённый программатор AVR микроконтроллеров. Стоит на али те же копейки.

    Особенности

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


    Прошивка осуществляется не стандартным способом. Для начала идем в Инструменты>Программатор>USBasp


    Далее Скетч/Загрузить через программатор.


    Как и говорил, тут я описываю проблемы, с которыми столкнулся я. Этот программатор так же требует драйверов. Найти их не сложно. Однако связываясь с китайцами с целью экономии, нужно быть готовым к неожиданным поворотам. Лично я, при работе с этим программатором, столкнулся со следующей проблемой, которую когда-то описывал на радиокоте:

    Над решением беды бился долго, и нашел лишь на забугорных форумах. И так:

    1)По следующей ссылке скачиваем архив LibUSB-64bit.zip
    2)Подключаем программатор к USB порту.
    3)Распаковываем архив и переходим по пути куда распаковали\LibUSB-64bit\libusb-win32-bin-1.2.1.0\bin\x86
    4) Запускаем inf-wizard.exe
    5)Жмем Next
    6)Выбираем USBasp и жмем Next
    7)Следующие поля заполняем таким образом:

    vendor ID (hex format) = 0x16C0
    product ID (hex format) = 0x05DC
    mi (hex format) = оставить пустым
    manufacturer name = VOTI
    device name = USBasp

    8 )Сохраняем сгенерированный файл по пути:
    LibUSB-64bit\libusb-win32-bin-1.2.1.0\bin\amd64 - если у вас 64-х разрядная система или
    LibUSB-64bit\libusb-win32-bin-1.2.1.0\bin\x86 - если 32-х разрядная

    9)Жмем install now
    10) Система уведомит, что драйвер не из проверенных источников. Жмем "Все равно установить"
    11)Начнется установка драйвера. В процессе установки услышим звук отключения и подключения USB устройства. По окончанию установки жмем ОК.

    Ещё несколько советов

    Очень распространенные модули NRF24L01 имеют большой косяк. Для нормальной и стабильной работы этих модулей необходимо по питанию повесить конденсатор хотя бы на 10 мкФ 5 В. Меньше не желательно, больше — бесполезно. Но если нет на 10, конечно, ставьте на 22 или 47. Так же советуют параллельно нему повесить еще один керамический на 10-100 нФ. При чем как можно ближе к самому модулю, в идеале — на выводы. В противном случае модуль вроде и видится, но нормально не передает.

    Если на выводах RX и TX висит какое-то исполняющее устройство — ардуинка не прошьется. Сначала прошивайте, потом подключайте на эти выводы необходимое устройство.

    На этом все, Надеюсь информация будет кому-то полезна.
    Всем удачи в творчестве!

    Разбираемся как прошить Arduino Uno R3 без какого-либо программатора для прошивки загрузчика в ATMEGA328P.

    Установка программного обеспечения Atmel FLIP

    На плате Arduino есть два микроконтроллера - ATMEGA328P (328P) и ATMEGA16U2 (16U2). Вы можете обновить прошивку 16U2, сделав его программатором AVRISP MKII, а затем использовать Atmel Studio для прошивки 328P.

    Я пробовал разные варианты, но возникали разные проблемы. Многие рекомендации плохо работали в моем случае особенно в части перепрошивки загрузчика через ПО Arduino.

    Переда началом прошивки Ардуино потребуется программное обеспечение Atmel (Microchip) FLIP для обновления прошивки внутри 16U2.

    Скачиваем Flip с сайта Microchip - отсюда. Устанавливаем. Не должно возникнуть никаких проблем, просто следуйте инструкциям мастера установки.

    Возьмите плату Arduino, отсоедините питание и USB. Замкните на ICSP1 пины 5-6 (16U2 RESET будет в низком состоянии).

    Распиновка ICSP1

    Распиновка ICSP1

    Выглядеть это будет так:


    Далее подключите Arduino к USB. Разъедините пины на ICSP1 (5-6). В этот момент 16U2 переходит в режим DFU. Новое устройство USB должно быть распознано.

    Если драйвер не устанавливается автоматически, установите его из: C:\Program Files\AtmelFlip3.4.7usb»

    Перейдите в Диспетчер устройств: Win + Pause -> Оборудование -> Диспетчер устройств. Проверьте, правильно ли установлен драйвер. Он будет расположен под USB-устройствами Atmel -> ATmega16U2.

    Прошивка AVRISP MKII в Arduino ATmega16U2

    Мы готовы перепрошить прошивку в 16U2.

    Скачайте hex файл AVRISP MKII отсюда. Отключите Arduino от USB-кабеля и питания. Замкните контакты 5-6 ICSP1. Подключите Arduino к USB. Разомкните выводы ICSP1 5-6.

    Запустите программное обеспечение FLIP: Пуск -> Все программы -> Flip. Зайдите в: Настройки -> Связь -> USB. Нажмите «Открыть».

    Перейдите в: Файл -> Загрузить файл HEX. Далее выберите LUFA-BOTH-AVRISP-MKII.hex и нажмите «Выполнить».


    ATMEGA16U2 теперь AVRISP MKII и работает в режиме Atmel Studio. Arduino AVRISP MKII может работать в двух режимах: Atmel Studio или Avrdude. Ниже я буду говорить только о режиме Atmel Studio, так как у меня было много проблем с режимом Avrdude.

    Установка Atmel Studio

    Скачайте и установите Atmel Studio (включая драйверы) отсюда. После установки подключите Arduino к USB-кабелю. Оба светодиода (RX и TX) должны мигать два раза (это означает, что 16U2 находится в режиме Atmel Studio). Новое устройство будет распознано.

    Установите драйверы. Если они не распознаются автоматически, вы найдете их в USB-драйверах: С:\Program Files\Atmel.

    Перейдите в Диспетчер устройств, нажмите: Win + Pause -> Оборудование -> Диспетчер устройств. Проверьте, правильно ли установлен драйвер. Должно быть в Jungo Connectivity -> AVRISP MKII.


    Вот теперь мы готовы прошить Arduino ATMEGA328P. Переходим к следующему шагу.

    Перепрошивка загрузчика Arduino в ATMEGA328P через ATMEGA16U2

    Довольно сложная часть нашего мероприятия по прошивке Ардуино. Вам нужно будет припаять некоторые провода. В основном нам нужно подключиться таким образом:

    ICSP1 MISO2.Pin.1 -> ICSP MISO.Pin.1
    ICSP1 SCK2.Pin.3 -> ICSP SCK.Pin.3
    ICSP1 MOSI2.Pin.4 -> ICSP MOSI.Pin.4
    JP2 PB4.Pin.1 -> ICSP RESET.Pin.5

    Смотрите картинку ниже для понимания:


    Подключите плату Arduino к USB-кабелю. Светодиоды RX и TX должны помигать два раза. Драйверы должны быть правильно распознаны (Jungo Connectivity -> AVRISP mkII). Запустите Atmel Studio. Зайдите в: Пуск -> Все программы -> Atmel -> Atmel Studio.

    Перейдите в: Инструменты -> Программирование устройства. Выберите:

    Инструмент -> AVRISP mkII
    Устройство -> ATmega328P
    Интерфейс -> ISP


    Перейдите в «Подпись устройства» (Device signature) и нажмите кнопку «Читать» (Read). Вы должны увидеть правильную «подпись устройства»: 0x1E950F. Нажмите «Memories» и найдите hex файл загрузчика Arduino. Он находится в:


    Вы успешно прошили 328P с загрузчиком Arduino. На следующем шаге мы вернем оригинальную прошивку 16U2.

    Перепрошиваем Arduino ATMEGA16U2 в оригинальное ПО

    Почти сделано. Нам нужно вернуть оригинальное программное обеспечение в ATMEGA16U2.

    Отключите Arduino от питания и USB. Замкните на ICSP1 контакты 5-6. Подключите USB-кабель. Разомкните пины ICSP1 5-6.

    Запустите программное обеспечение FLIP. Перейдите в: Пуск -> Все программы -> Flip -> Flip. Далее: Настройки -> Связь -> USB.

    Нажмите «Открыть». Перейдите в: Файл -> Загрузить файл HEX.

    Отсоедините USB-кабель и подключите его снова. Новое устройство USB должно быть распознано. Если драйвер не установлен автоматически, вы найдете его в: С:\Program Files\Arduino\drivers.

    Перейдите в Диспетчер устройств: Win + Pause -> Оборудование -> Диспетчер устройств. Проверьте, правильно ли загружен драйвер. Вы должны увидеть его в: Ports -> Arduino Uno.


    Теперь мы можем проверить любой скетч из примеров, типа Blink. Запустите программное обеспечение Arduino (Пуск -> Arduino).

    Нажмите: Open (стрелка вверх) -> -> 01.Basics -> Blink.

    Выберите COM-порт а: Инструменты -> Последовательный порт -> COM (выберите порт, на котором была распознана плата).

    Нажмите значок «Загрузить» (стрелка вправо). Светодиод должен начать мигать.

    Всё готово. Мы узнали как прошить Ардуино и успешно перепрограммировали ATMEGA328P без использования какого-либо внешнего программатора.

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