Ошибка тайм-аута при загрузке кода в arduino mega 2560

Перепрошивка загрузчика 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

Нажмите кнопку «Применить».

Установите частоту ISP на 16,1 кГц. Нажмите кнопку «Установить».

Программатор не будет работать, если вы установите очень низкую тактовую частоту ISP. Вы получите сообщение об ошибке: «ispProgramMem: получено состояние ошибки: получено 0x81, ожидаемое 0x00 (истекло время выборки контакта RDY / nBSY)». На английском будет звучать так: «ispProgramMem: Error status received: Got 0x81, expected 0x00 (RDY/nBSY pin sampling timed out)«. Однако максимальная скорость ISP также ограничена и не может превышать 1/4 частоты устройства.

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

C:\Program Files\ Arduino\hardware\arduinobootloaders\optiboot\optiboot_atmega328.hex

Нажмите кнопку «Program». Если вы используете совершенно новый незапрограммированный ATMEGA328P, вы также должны запрограммировать FUSES. Перейдите в Fuses и используйте следующие значения: low_fuses = 0xff; high_fuses = 0xDE; extended_fuses = 0x05.

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

Что делать посетителю сайта при возникновении ошибки 504

Итак, вы столкнулись с появлением на экране сообщения «error 504». Не спешите уходить с сайта, ведь возникновение сбоя может говорить о неправильной работе вашего браузера или даже наличии более серьезных проблем на уровне пользовательского софта. Попробуйте произвести довольно простые действия, чтобы убедиться, что с вашим программным обеспечением и настройками все в порядке. 

  1. Перезагрузите проблемную страницу или текущий браузер. Если проблема устранилась и не повторяется вновь, особенно при посещении других сайтов, о ней можно просто забыть. При регулярном возникновении однотипных ошибок во время посещения разных ресурсов стоит покопаться в настройках собственного ПО поглубже.
  2. Зайдите на тот же самый сайт, где возникла ошибка сервера 504, используя альтернативный браузер. В случае, когда страница во время тестирования открылась корректно, обновите браузер, в котором случился сбой, до последней версии.
  3. Проверьте, как открываются страницы этого же сайта с другого компьютера или смартфона. Это позволит вам понять, не связано ли появление ошибки 504 с ПО конкретного устройства.
  4. При регулярном появлении HTTP ошибок, в т.ч. с кодом 504, очистите кэш браузера, удалите файлы cookies. Со временем в любом браузере накапливается много «мусора». Произведя очистку, вы поможете программе работать более корректно и даже быстрее.
  5. Произведите сброс настроек роутера или модема, отключив оборудование на некоторое время от сети. Данная операция вряд ли приведет к устранению ошибки 504, но может улучшить качество интернет-соединения. Провайдеры регулярно вносят изменения в настройки собственного софта, обновляют его. Иногда это приводит к конфликту в корректном взаимодействии пользовательского оборудования и серверов оператора. Перезагрузка устройства по питанию в большинстве случаев решает такие проблемы.
  6. Очистите кэш DNS. Данная операция кажется сложной для обычного пользователя, но на деле выполнить ее достаточно легко. Способ очистки зависит от вашей операционной системы, найдите соответствующий мануал в интернете.
  7. Для опытных пользователей подойдет рекомендация временно переключить DNS-сервер на Google Public DNS, что как минимум поможет определить, возник ли ошибочный код состояния HTTP по причине DNS проблемы. 

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

Проблема с подключением Arduino MEGA 2560 (драйвер)

У меня есть Arduino Mega 2560, и он работал нормально примерно до обеда, когда я начал получать эту ошибку:

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

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

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

  • Mega2560: тайм-аут связи с программистом ….
  • Ошибка тайм-аута загрузки на Mega 2560 — не уверен, что изменилось

Я попытался полностью удалить Mega, а затем переустановить. Я также загрузил старую версию Arduino (0022), и ни один из вариантов, похоже, не работал.

Я не знаю, что делать или как при необходимости изменить файлы AVR.

  • возможный дубликат. Какой-то чувак по имени avr не позволит мне загрузить мою программу, иначе «avrdude: stk500_getsync (): not in sync: resp = 0x00»
  • Ооо, я не заметил этот пост. Я пробовал все, кроме записи загрузчика … есть ли простой способ сделать это без необходимости покупать программное обеспечение?
  • Обычно вы просто заходите в среду IDE, просматриваете меню инструментов и выбираете «Записать загрузчик». Убедитесь, что вы выбрали правильную доску.
  • @TheDoctor, я видел такой вариант, но понятия не имею, что делать потом. Полагаю, мне придется снова загрузить его с помощью новой программы «загрузчик»? На одном сайте (learn.sparkfun.com/tutorials/installing-an-arduino-bootloader) говорится, что мне нужно купить оборудование и загрузить определенное программное обеспечение … все, чтобы заменить программное обеспечение в загрузчике ?! Не уверен, что понимаю почему.
  • Вы можете использовать Uno для перепрограммирования Mega. Искать

Загрузчик на Arduino — это просто часть программного обеспечения, написанного для того, чтобы вы могли обновлять свои скетчи, используя соединение USB. Без загрузчика вы не можете загружать скетчи, используя только arduino ide.

Более подробную информацию о загрузчике можно найти здесь: http://arduino.cc/en/Guide/Environment?from=Tutorial.Bootloader. Посмотрите под заголовком, озаглавленным «Выгрузка», в котором объясняется роль загрузчика в загрузке эскизов.

Когда вы используете кнопку «Записать загрузчик» в arduino ide, он попытается записать новую копию загрузчика на подключенную плату Arduino. Для этого плата должна быть подключена определенным образом, то есть с использованием заголовка icsp / isp, а не кабеля USB.

Теперь, чтобы напрямую запрограммировать микросхему avr, вам нужно использовать внешний (аппаратный) программатор. К счастью, вам не нужно покупать один, если у вас есть второй Arduino, потому что второй Arduino можно использовать в качестве программатора. Инструкции для этого можно найти здесь: http://arduino.cc/en/Tutorial/ArduinoISP

Еще больше информации о загрузчике: http://arduino.cc/en/Hacking/Bootloader?from=Main.Bootloader

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

Что решило мою проблему, так это перейти в Инструменты> Доски> Менеджер доски … выберите «обновляемый» для «Типа» в верхнем левом углу, а затем выберите обновляемые пакеты ниже и нажмите «Обновить».

Это решило мою проблему. Я выбрал обновление для платы и оно

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

Tweet
Share
Link
Plus
Send
Send
Pin

Сборка схемы прошивки загрузчика

Чтобы загрузить код загрузчика из Arduino Uno в пустой ATmega328P-PU, потребуется небольшая схема прошивки загрузчика. Комплектующие, необходимые для схемы загрузчика, перечислены ниже (вам может также понадобиться несколько перемычек).

Список комплектующих
Обозначение Описание
R1 Резистор 10 кОм, 0,25 Вт
C1, C2 Конденсатор, керамический, 22 пФ, 50 В
C3 Конденсатор, керамический, 0,1 мкФ, 50 В
X1 Кварцевый резонатор, 16 МГц, HC49, 20 пФ
U1 Микросхема, ATmega328P-PU, флэш 32 килобайта, DIP-28, 1,8–5,5 В
нет Макетная плата, беспаечная, 400 контактов
нет Arduino Uno R3

Ниже приведена очень простая принципиальная схема прошивки загрузчика AT328P-PU

Часть генератора состоит из X1, C1 и C2; обратите внимание, что кварцевый резонатор X1 должен быть на 16 МГц, а не на 20 МГц. Несмотря на то, что AT328P-PU может использовать кварц 20 МГц, для процесса прошивки загрузчика требуется работа на 16 МГц

R1 – это подтягивающий резистор для вывода Reset; а C3 – это обычный конденсатор фильтра питания.

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

Соберите схему прошивки загрузчика, но пока не подключайте её к Arduino Uno.

Схема прошивки загрузчика в AT328P-PUArduino Uno, подключенная к макетной плате прошивки загрузчика в AT328P-PU

Варианты прошивки Ардуино

Прошивка с помощью Arduino IDE

Прошить плату при помощи среды разработки Arduino IDE можно в несколько шагов. В первую очередь нужно скачать и установить саму программу Arduino IDE. Также дополнительно нужно скачать и установить драйвер CH341. Плату Ардуино нужно подключить к компьютеру и подождать несколько минут, пока Windows ее опознает и запомнит.

После этого нужно загрузить программу Arduino IDE и выбрать нужную плату: Инструменты – Плата. Также нужно выбрать порт, к которому она подключена: Инструменты – Порт. Готовая прошивка открывается двойным кликом, чтобы ее загрузить на плату, нужно нажать кнопку «Загрузить» вверху панели инструментов.

В некоторых ситуациях может возникнуть ошибка из-за наличия кириллицы (русских букв) в пути к папке с кодами. Для этого файл со скетчами лучше создать и сохранить в корне диска с английским наименованием.

Прошивка с помощью программатора

Одни из самых простых способов прошивки платы – при помощи программатора. Заливка будет производиться в несколько этапов.

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

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

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

Последний шаг – нажать на «записать загрузчик» в меню Сервис.

После этого начнется загрузка. Завершение произойдет примерно через 10 секунд.

Прошивка Arduino через Arduino

Для того чтобы прошить одну плату с помощью другой, нужно взять 2 Ардуино, провода и USB. В первую очередь нужно настроить плату, которая будет выступать в качестве программатора. Ее нужно подключить к компьютеру, открыть  среду разработки Arduino IDE и найти в примерах специальный скетч ArduinoISP. Нужно выбрать этот пример и прошить плату.

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

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

Наборы и конструкторы Ларт

ЛАРТ Сармат Армага

Набор на основе контроллера Ардуино, при помощи которого можно собрать робота, движущегося по линии. Главный компонент комплекта – миниатюрная плата Ардуино Нано, которая позволяет подключать не только входящие в состав набора компоненты, а и другие элементы совместимые с Ардуино, как механического, так и электронного типа. Это дает возможность совершенствовать полученного робота.

ЛАРТ Печенег Батана

Комплект включает плату Ардуино Нано и имеет достаточное количество элементов для разработки и строительства роботов, которых при помощи состава набора можно собрать две разновидности: робот, движущийся по черной линии и робот с датчиком ультразвука. Для программирования применяется текстовая среда Arduino IDE. Для разных модификаций роботов имеется возможность использования совместимых с Ардуино компонентов, а при помощи дополнительной пластины можно установить большее количество датчиков.

Выбрать и купить наборы ЛАРТ можно на официальном сайте: lartmaster.ru/

Конструктор Смарт Робо

Готовый конструктор для создания электронного робота на основе Ардуино, в комплект входит необходимое количество элементов, и руководство к сборке. Базовый элемент набора – плата от Keyestudio (100% аналог Ардуино). Полученный робот может быть запрограммирован на движение по линии, возможность объезда препятствий и управление от дистанционного пульта. Все элементы соединяются при помощи быстроразъемных соединителей и не требуют пайки. Доработать и усовершенствовать полученную конструкцию можно добавив на плату дополнительные элементы, совместимые с контроллером Ардуино.

Конструктор Смарт

Серия наборов, которые отличаются по комплектации. Основной компонент – плата Smart Uno – аналог контроллера Ардуино Уно, не уступающий ему по качественным характеристикам. В зависимости от комплектации (Смарт 10, Смарт 20 и Смарт 30) набор содержит элементы, как для начального уровня проектирования, так и для разработки более сложных проектов. При необходимости возможно подключение других электронных компонентов, совместимых с микроконтроллером.

Смарт Genuino

Серия наборов – Смарт 10 Genuino, Смарт 20 Genuino, Смарт 30 Genuino, которые отличны по количеству деталей в комплекте. Главный базовый компонент – плата Genuino Uno, кроме которой в составе имеются электронные детали, беспаечная макетная плата, провода и руководство по проектированию. Набор будет интересен как новичкам, так и профессиональным пользователям.

Выбрать и купить конструктор SmartElements можно на официальном сайте: https://smartelements.ru/

Робоплатформа Robbo (ScratchDuino)

Конструктор предназначен для обучения детей и взрослых основам робототехники и электроники. Управление роботизированным механизмом может осуществляться из различных сред программирования (Scratch, Lazarus, Кумир) или же пульта управления. Базовый компонент – картридж Ардуино. В зависимости от типа комплектации варьируется количество составных элементов.

Выбрать и купить конструктор Robbo можно на официальном сайте: https://robboclub.ru/

Главная идея нашего USB Mass Storage Bootloader

bin0x08002800binbinHEXbin-файлddWin32DiskImagerST-LINK Utilitybin

Команда для заливки на Mass Storage bin-файла под Ubuntu:

Итак, наш USB Mass Storage, который теперь играет роль Bootloader-а, прошивку уже обновляет. Теперь осталось доделать USB Mass Storage пример таким образом, чтобы он мог передавать управление залитой программе. Я это сделал с помощью кнопки. Когда мы подключаем микроконтроллер к компьютеру USB кабелем, и при этом нога PB1 замкнута на землю, контроллер стартует как USB Mass Storage устройство и можно заливать прошивку. Если во время старта PB1 на землю не замкнута, а висит в воздухе, или подключена к +, микроконтроллер передает управление залитой прошивке.
Вот как выглядит код нашего Bootloader-а (доработанного примера USB Mass Storage):

https://github.com/avislab/STM32F103/tree/master/Example_Bootloader

Bootloader в режиме USB Mass Storage

Bootloader в режиме USB Mass Storagehttp://blog.myelectronics.com.ua/stm32-usb-mass-storage-bootloader/

Поясню. У нас всего 64 Кб, пусть 10Кб займет Bootloader, остается 54Кб. Половину отдадим под Mass Storage, это будет 27Кб. Из этого объема FAT12 откусит 20Кб, останутся 7Кб под файл прошивки. То есть на Mass Storage не влезет файл больше 7Кб. Если оптимизировать распределение памяти и отдать под Mass Storage 38Кб, тогда под программы останется 16 Кб. Это для нас тоже не приемлемо. Поэтому такое решение для нашего микроконтроллера, с небольшим объемом Flash-а, не подходит. Но поблагодарим автора! Именно фрагменты этого проекта я использовал для создания примера Bootloader-а описанного в этой статье.
Дальнейшие поиски привели меня к Bootloader-у описанного в статье http://easyelectronics.ru/proshivka-arm-cortex-m3-na-primere-stm32-i-lpc1300.html Шикарный замысел, но реализация полностью не приемлема. Контроллер действительно видно как MASS STORAGE диск, на него вроде бы можно залить новую прошивку, но корректно это происходит только когда файл копировать программой FAR. И только FAR! Удивительно, но простое копирование файла происходит по-разному если это делать разными файл-менеджерами. Операционная система Ubuntu вообще не смогла смонтировать устройство. Поправить что-то в этом Bootloader-е нельзя, поэтому эта реализация тоже была отвергнута. Пришлось писать свой Bootloader.
Почему именно USB Mass Storage? Скажем, я делаю не коммерческий проект и хочу чтобы для обновления прошивки конечным пользователям не нужно было искать специфический софт и драйверы. Для работы с Mass Storage устройствами операционные системы используют стандартные драйверы, поэтому с драйверами проблем вообще нет. Обновление прошивки может происходить на разных операционных системах поэтому желательно чтобы программы для обновления прошивки вообще не надо было, или использовались стандартные решения. В этом случае простое копирование файла — наиболее красивое решение.
Забегая вперед скажу, что не все так просто. Мне пока не удалось реализовать этот замысел в идеальном виде. Поэтому, желательно чтобы процедура заливки прошивки была более или менее стандартной и, как я сказал, можно было обойтись стандартными командами или стандартным программным обеспечением.
Продолжаем разбираться …

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Все про сервера
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: