Содержание

Прошивка Ардуино ATmega328 через Arduino IDE и программатор

Загрузка скетча или прошивка контроллера Ардуино — основная операция, с которой рано или поздно сталкивается любой ардуинщик. Именно возможность быстро и без лишних проблем загрузить в память контроллера управляющую программу и стала одной из основных причин успеха платформы Arduino. В этой статье мы узнаем, как прошиваются Arduino Uno, Nano, Mega и другие платы на основе Atmega с использованием Arduino IDE, программатора или другой платы Ардуино.

Загрузка скетча в плату Ардуино

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

Что происходит, когда мы жмем кнопку «Загрузить»

Плата Ардуино – это микроконтроллер AVR (Atmega8/168/328 или Atmega1280/2560), который прошивается загрузчиком. В микроконтроллер записывается программа, называемая прошивкой, которая позволяет получать сигналы с датчиков, обрабатывать нажатия кнопок, общаться с различными устройствами через интерфейсы, управлять исполнительными процессами.

Обычно прошивка записывается в кристалл микроконтроллера при помощи специальных устройств, называемых программаторами. Для разных микроконтроллеров существуют различные программаторы — от специализированных до универсальных. Важным отличием Ардуино от других контроллеров является возможность залить прошивку через обычный USB кабель. Это достигается при помощи специальной программы — загрузчика (Bootloader). Для прошивки не требуются лишние провода, не нужно подключать дополнительные устройства или нажимать что-то на плате. Также при работе через загрузчик нельзя добраться до опасных настроек, которые выведут из строя Ардуино.

При подключении платы Ардуино к источнику питания, внутри него начинается активная деятельность микропрограмм. При запуске микроконтроллера управление получает загрузчик. Первые 2 секунды он проверяет, поступил ли новый код от пользователя.  Кроме того загрузчик подает импульсы на пин, к которому подключен светодиод, и он начинает мигать. Это означает, что загрузчик установлен и работает исправно. Когда подается скетч, загрузчик записывает его во флеш-память микроконтроллера. Затем эта программа подается на выполнение.  Если данные не поступили, загрузчик запускает предыдущую программу. Во время выполнения программы внутри Ардуино выполняется ряд операций по инициализации и настройке среды окружения, и только после этого начинается выполнение кода.

Вызов setup и loop при загрузке

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

Команда void setup() – в ней записываются данные, которые микроконтроллер выполняет в момент загрузки, а после может про них забыть. В этой функции указываются номера пинов, к которым подключается устройство, подключаются и инициализируются библиотеки, устанавливается скорость работы с последовательным портом.

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

Загрузка скетча в Arduino IDE

В Ардуино IDE компиляция скетча начинается при нажатии кнопки Verify, после этого скетч может быть загружен в память Ардуино через USB с помощью кнопки Upload. Перед загрузкой кода программы нужно установить все параметры в меню Tools. В этом меню выбираются порт, к которому подключена плата, и платформу. В окне Arduino IDE внизу будет отображен ход компиляции скетча. При успешной выгрузке скетча будет получено сообщение «Done uploading».  Запуск скетча начинается сразу после окончания загрузки. Для расширения возможностей можно подключать дополнительные внешние библиотеки, разработанные командой Ардуино или сторонними авторами.

Обзор возможных вариантов загрузки скетча

Кратко весь алгоритм можно записать следующим образом: Написание кода >> компиляция >> загрузка в микроконтроллер. При загрузке скетча используется Bootloader (Загрузчик). Он представляет собой небольшую программу, которая загружается в микроконтроллер на Ардуино. С помощью этой программы можно загружать скетч, не используя дополнительные аппаратные средства. При работе загрузчика на плате будет мигать светодиод.

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

  1. Ускоренная загрузка скетча в Arduino IDE. С помощью этого метода можно увеличить скорость загрузки в микроконтроллер в два раза. Для этого нужно лишь зайти в Настройки и снять галочку с пункта Проверка кода. Пропуская шаг проверки, будет уменьшено количество байтов, которые передаются во время загрузки. При этом все равно некоторые из видов проверок будут осуществлены, но они не занимают долгого времени. Отключать проверку кода не рекомендуется, если Ардуино помещается в какой-либо ответственный проект (например, в спутник). Также можно провести проверку, если подключение производится через очень длинный USB кабель (порядка 10 метров).

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

  1. Загрузка скетча в Ардуино через Bluetooth. Этот способ используется, когда нужно обойтись без физического соединения Ардуино и компьютера – например, в силовых цепях или радиочастотных цепях. Для реализации загрузки потребуется Bluetooth-модуль, который оснащен платой-адаптером для Ардуино. Этот модуль нужно подключить к компьютеру через переходник USB-UART-TTL. Работа с модулем осуществляется с помощью AT-команд.
  2. Загрузка при помощи Андроид-устройства. Для осуществления такого типа загрузки кода понадобятся провода USB-A – USB-B и USB-Host (OTG-кабель), Ардуино и устройство на базе Андроид с поддержкой режима host. На Андроид-устройство нужно установить программу ArduinoDroid или ArduinoCommander из Google Play. Все устройства нужно соединить при помощи кабелей, после этого можно включать Ардуино и загружать на него код. Нужно запустить установленную программу. При включении начнется обновление IDE, на что понадобится некоторое время.

Сначала работа будет рассмотрена на примере программы ArduinoCommander. После ее запуска нужно нажать USB-Device. Затем нужно наддать Autodetect, чтобы Андроид-устройство выполнило поиск Ардуино и отобразило его на экране. Как только Ардуино появится на экране, нужно на него нажать. Чтобы перейти в меню, нужно щелкнуть в нижнем правом углу. В этом меню можно загрузить скетч с SD-карты.

ArduinoDroid представляет собой среду разработки, компилятор и загрузчик одновременно. Начать компиляцию скетча нужно нажав на кнопку Lightning-Button. После завершения компиляции нужно нажать на кнопку загрузки. Загрузка занимает несколько секунд. По окончании загрузки ардуино запустит на выполнение новый код.

  1. Программирование при помощи Raspberry Pi. Можно загружать скетчи двумя способами – при помощи Arduino IDE и при помощи пакета arduino-mk. Пакет позволяет собирать и загружать скетчи Ардуино из командной строки.

Структура памяти Ардуино, где располагается скетч и данные

На микроконтроллере Ардуино имеется 3 вида памяти – флеш-память, которая используется для хранения скетчей, ОЗУ для хранения переменных и EEPROM для хранения постоянной информации. Из этих типов памяти флеш-память и EEPROM являются энергонезависимыми, то есть информация сохраняется при выключении питания. ОЗУ используется только для хранения данных, которые имеют отношение к исполняемой программе.

Микроконтроллер ATmega168, который используется на части плат Ардуино, имеет 16 Кб флеш-памяти, 1024 байта для ОЗУ и 512 байт EEPROM. Важно обратить внимание на малый объем ОЗУ. Большие программы могут полностью ее израсходовать, что приведет к сбою в программе. По этой причине нужно следить за тем, сколько строк занимает программа, и по возможности удалять лишнее. Уменьшить объем кода можно несколькими способами:

  • Можно отправить часть информации на компьютер.
  • Для таблиц и других крупных массивов использовать минимальный тип данных для хранения.
  • Данные, которые остаются неизменными, можно объявить константами при помощи слова const перед объявлением переменной.
  • Меньше использовать рекурсию. При ее вызове в памяти, называемой стеком, выделяется фрагмент, в котором хранятся различные данные. Если часто вызывать рекурсию, стеки будут занимать большой объем памяти и могут израсходовать ее.
  • Неизменяемые строки можно сохранять во флеш-памяти во время работы программы. Для этого используется функция PROGMEM.

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

Для измерения объема занимаемой памяти ОЗУ используется скетч из библиотеки MemoryFree. В ней имеется специальная функция free­Memory, которая возвращает объем доступной памяти. Также эта библиотека широко используется для диагностики проблем, которые связаны с нехваткой памяти.

Оптимизация флеш-памяти. Как только будет окончена процедура компиляции, в окне появится информация о занимаемой памяти кодом. Если скетч занимает большую часть памяти, нужно произвести оптимизацию использования флеш-памяти:

  • Использование констант. Аналогично как и для ОЗУ задавать неизменяющиеся значения константами.
  • Удалить ненужные Serial.println. Эта команда используется, когда нужно увидеть значения переменных в разных местах программы, нередко эта информация просто не нужна. При этом команды занимают место в памяти, поэтому, убедившись в корректной работе программы, некоторые строки можно удалить.
  • Отказ от загрузчика – можно программировать микроконтроллер через контакты ICSP на плате с использованием аппаратных программаторов.

Флеш память является безопасным и удобным способом хранения данных, но некоторые факторы ограничивают ее использование. Для флеш-памяти характерна запись данных блоками по 64 байта. Также флеш-память гарантирует сохранность информации для 100000циклов записи, после чего информация искажается. Во флеш-памяти имеется загрузчик, который нельзя удалять или искажать. Это может привести к разрушению самой платы.

EEPROM память используется для хранения всех данных, которые потребуются после отключения питания. Для записи информации в EEPROM нужно использовать специальную библиотеку EEPROM.h, которая входит в число стандартных библиотек в Arduino IDE. Чтение и запись информации в EEPROM происходит медленно, порядка 3 мс. Также гарантируется надежность хранения данных для 100000 циклов записи, потому лучше не выполнять запись в цикле.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Заключение

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

Еще одним вариантом перепрошивки контроллера является использование другой платы адуино или специальных программаторов, использующих микросхемы CP2102 Ch440, FTDI и другие. Этот метод требует дополнительных усилий и затрат, но позволяет гибко изменять параметры прошивки. Какой из двух вариантов выбрать — решать вам. Для новичков, безусловно, первым шагом станет использование Arduino IDE, благо, ее создатели сделали все, чтобы упростить этот процесс.

 

arduinomaster.ru

Как прошить arduino

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

 

 

 

1. Качаем и устанавливаем Arduino IDE* . 

    При установке Arduio IDE должны автоматически установиться драйвера, то есть при появлении окошка «согласиться ли на установку драйверов» нажать да.
* Это программа для написания скетчей и прошивки Arduino

      2. Для китайской Arduino NANO скачать и установить драйвер Ch441*, ссылка ниже, см.скриншот.

 
* На китайских НАНАХ стоят USB контроллеры Ch440/Ch441, для правильной работы нужен специальный драйвер. Это единственное отличие китайских Ардуин от оригинальных.

  • При установке Arduio IDE должны автоматически поставиться драйвера.
    Если этого не произошло, установить драйвера Arduino из папки с Arduino IDE (C:\\Program files…), см. второй скриншот.

  • Подключить Arduino к компьютеру, подождать, пока Windows её распознает и запомнит (первое подключение).
    P.S. Вылезет окошечко, сообщающее, что устройство опознано и подключено к COM порту с определённым номером (2, 3, 6, 9…)

Настраиваем Arduino IDE

Запустить Arduino IDE, выбрать плату (Инструменты\плата\»ваша плата»). См. первый скриншот.

Выбрать порт: инструменты\порт\«COM отличный от COM1, например COM3, COM5…» См. второй скриншот. Какой именно порт вы могли видеть при первом подключении Ардуино к компьютеру.
Примечание: если у вас только СОМ1 — значит либо не встали драйвера, либо сдохла плата.

  • Готовые прошивки просто открываются двойным кликом. Чтобы загрузить прошивку, жмите кнопку ЗАГРУЗИТЬ на верхней панели инструментов, она в виде стрелочки.
    ВНИМАНИЕ, СОВЕТ! В ПУТИ К ПАПКЕ СО СКАЧАННЫМИ СКЕТЧАМИ НЕ ДОЛЖНО БЫТЬ РУССКИХ БУКВ! СОЗДАЙТЕ В КОРНЕ ДИСКА ПАПКУ ARDUINO, И РАБОТАЙТЕ В НЕЙ!

  • ВНИМАНИЕ, СОВЕТ! КАК ТОЛЬКО ДОСТАНЕТЕ ARDUINO ИЗ ПАКЕТИКА, СРАЗУ ПРОШЕЙТЕ В НЕЁ СКЕТЧ С МИГАНИЕМ СВЕТОДИОДА (blink.ino)
    Таким образом вы узнаете, что Ардуина изначально рабочая (на тот случай, когда после сборки/пайки она перестанет работать и прошиваться), то есть вы сами её сломали, а не она была изначально бракованная =)

     

    Как установить библиотеку на Arduino

    Допустим, скачали библиотеку. Её нужно разархивировать и положить в папку:

    C:\Program Files (x86)\Arduino\libraries\ (Windows x64)

    C:\Program Files\Arduino\libraries\ (Windows x86)

     

     

Как пример — библиотека для дисплея на чипе TM1637, смотрите скриншот

 

В папке libraries должна появиться папка TM1637, в которой есть папка examples, и два файла с расширениями .h и .cpp . Эти два файла должны быть в каждой библиотеке.

 

Второй способ. Папка с библиотекой кладётся в папку со скетчем. Тогда скетч, использующий библиотеку, сможет ей пользоваться. Но для остальных скетчей эта библиотека будет недоступна!

 

Основные ошибки при прошивке Arduino (FAQ)

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

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

  • В некоторых случаях ошибка возникает при наличии кириллицы (русских букв) в пути к папке со скетчем. Решение: завести для скетчей отдельную папочку в корне диска с английским названием.

  • В чёрном окошке в самом низу Arduino IDE можно прочитать полный текстошибки.

  • В скачанных с интернета готовых скетчах часто возникает ошибка с описанием «название файла» no such file or directory. Это означает, что в скетче используется библиотека «название файла», и нужно положить её в Program Files/Arduino/libraries. Ко всем моим проектам всегда идёт папочка с использованными библиотеками, которые нужно установить. Также библиотеки можно поискать в гугле по «название файла».

  • При использовании каких-то особых методов и функций ошибкой может стать неправильно выбранная плата в «Инструменты/плата«.

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

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

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

  • USB кабель, которым подключается Arduino, должен быть Data кабелем. Существуют кабели, предназначенные только для зарядки, у них внутри 2 провода. Data кабель имеет 4 провода, два из которых нужны для передачи данных.

  • Причиной ошибки загрузки являются неустановленные/криво установленные драйвера Ch440, если у вас китайская NANO.

  • Также будет ошибка, если не выбран COM порт, к которому подключена Arduino. Если кроме COM1 других портов нет — читай два пункта над этим, либо попробуй другой USB порт, или вообще другой компьютер.

  • Большинство проблем при загрузке, вызванных «зависанием» ардуины или загрузчика, лечатся полным отключением ардуины от питания. Потом вставляется USB и прошиваем.

  • Если в описании ошибки встречается слово averdude или bootloader is not responding — с вероятностью 95% сдох загрузчик, например при случайном коротком замыкании провода на плату. Оставшиеся 5% — загрузчик «слетел», и его можно прошить заново программатором или другой Ардуиной. Подробнее об этом можно почитать в гугле по «как перепрошить загрузчик на Ардуино«.

 

 

radiostroi.ru

Прошивка Arduino Pro Mini через Nano / Habr

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

Почитав на сайте http://arduino.cc и посабирав информацию на разлинчых форумах, узнал о возможности прошивать Pro Mini при помощи других плат Arduino.

Итак, рассмотрим в чем заключается метод Arduino as ISP и что необходимо для этого на примере Arduino Nano.

Для возможности использования платы в родном Arduino IDE имеется пример скетча для перевода платы в программатор, этот пример уже самодостаточен для прошивки Pro Mini, найти его можно выбрав в меню Файл.

Далее в меню «Инструменты» выставляем нашу плату «программатор» и тип ее микроконтроллера.

Затем прошиваем Nano скетчем ArduinoISP, обратив внимание на скорость порта в функции setup, данная скорость будет использоваться непосредственно при прошивке Pro Mini в стандартном скетче ее значение равно 19200.

После того, как Nano будет подготовленна можем собирать breadboard, для прошивки Pro Mini по схеме указанной здесь http://arduino.cc/en/Tutorial/ArduinoISP.

То есть следующим образом:

Nano -> Pro Mini

  • +5v -> Vcc
  • GND -> GND
  • D10 -> RST
  • D11 -> D11
  • D12 -> D12
  • D13 -> D13

У меня получилось примерно так:

После того как все собрано и проверено можно подключить Nano к компьютеру, поморгав 7 раз обе платы готовы к работе.

Далее для прошивки нам необходимо убедиться, что при выставлении прошиваемой платы и программатора у нас используются одинаковые скорости порта, взяв за стандарт скорость из скетча. Для типа платы нужно найти файл boards.txt его путь относительно установленной программы IDE такой: Arduino/hardware/arduino/boards.txt. В нем нам нужно найти раздел параметров для платы Pro Mini выглядит она примерно так:

pro5v328.name=Arduino Pro or Pro Mini (5V, 16 MHz) w/ ATmega328

У меня прошиваемая мини на 5 вольт с микроконтроллером ATmega328, если же у вас иная версия плата то вам нужно найти соответствующий вашей платы раздел.

Здесь необходимо убедиться что скорость выставлена верная:

pro5v328.upload.speed=19200

Затем зайдем в файл programmers.txt, его путь Arduino/hardware/arduino/programmers.txt и убедимся в верности параметров:

arduinoisp.name=Arduino as ISP
arduinoisp.communication=serial
arduinoisp.protocol=stk500v1
arduinoisp.speed=19200

После того как убедились, что все параметры верны можно запускать IDE, если она была запущена то перезапустить. Это необходимо для того чтобы вступили силу новые параметры.

После запуска IDE нам нужно выставить в меню «Инструменты» нашу прошиваемую плату и тип программатора «Arduino as ISP»:

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

Верный путь прошить Pro Mini лежит в меню «Файл» и называется он «Загрузить с помощью программатора», у меня стоит версия IDE 1.5.6-r2 там этот пункт называется «Вгрузить через программатор», по всей видимости трудности перевода в этом релизе, в версии 1.0.5-r2 все в порядке.

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

Однако не стоит беспокоится, если все собрано верно и спаяно надежно то, достаточно нажать «Reset» на Pro Mini, подождать пару секунд и плата успешно прошъется.

Благодарю за внимание на этом все, пока.

habr.com

104-Прошивка любого Hex-файла в Arduino при помощи штатного загрузчика (Bootloader). — GetChip.net

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

Нас, прежде всего, интересуют три платы Arduino:
Arduino Uno – как самый распространенный вариант
Arduino Nano – компактный вариант, удобный для применения в небольших конструкциях
Arduino Pro Mini – дешевый компактный вариант без встроенного USB-UART преобразователя (для работы с ним понадобится внешний USB-UART преобразователь), но удобный в случае применения сети устройств.

Во всех вышеописанных платах используется микроконтроллер ATmega328 (в более старых версиях ATmega168).

ATmega48_88_168_328.pdf - Даташит на ATmega48A-48PA-88A-88PA-168A-168PA-328-328P

Одной из главных причин выбора платы Arduino для проекта робота была возможность записывать прошивку устройства в МК не применяя программатора и каких либо дополнительных устройств. Все что нужно для прошивки микроконтроллера Arduino – это стандартный USB шнур (который входит в комплект Arduino).

Это значит, если Вы имеете Ардуину – Вы имеете любое устройство ZiChip!

Запись программы в МК через USB происходит через специальный загрузчик (Bootloader), который записан в МК при изготовлении платы. Вообще, загрузчик предназначен для работы со своим специальным программным обеспечением Arduino IDE, но в случае, когда необходимо прошить в Ардуину что-то постороннее (свой Hex-файл), есть программки позволяющее это реализовать.

Начнем, конечно, с моей программы загрузчика
GC-Uploader

gcUploader.zip - автоматический загрузчик HEX-файлов для Arduino и AVR микроконтроллеров

Программа интересна тем, что выбранный HEX-файл будет заливаться в Ардуину автоматически после каждого его изменения. Это удобно, так как при разработке проекта каждая компиляция (обновление хекса) будет инициировать прошивку Ардуины — Вам ничего не придется делать самому! Кроме того в программе есть и ручной режим прошивки.

 

Следующая — маленькая и удобная
XLoader (Arduino HEX uploader)

XLoader.zip - Программа для записи Hex-файла в Arduino

Программка имеет аскетичный интерфейс и работать с ней предельно просто:
— подключаем Arduino в USB-порт (отдельного питания не нужно)
— выбираем Hex файл
— выбираем тип Вашего Arduino
— выбираем COM порт, который создался при подключении Arduino к USB (скорость порта автоматически подставится при выборе типа Arduino)
— жмем Upload

Это все! Ничего сложного. Прошивка через несколько секунд будет записана в МК и автоматически запустится. Один минус – программа никак не сообщает о том, что прошивка уже записана, но это можно увидеть по прекращению мерцания светодиодов RXD и TXD на Ардуине.

XLoader использует для записи прошивки AVR Dude и в качестве протокола программирования используется STK500. Но, похоже, в настройках AVR Dude, произведена коррекция, так как использование стандартного AVR Dude с такими же настройками не дает результатов.

Автоматизация XLoader.

При разработке ПО для микроконтроллера производится очень много прошивок и всегда нужно стремиться автоматизировать этот процесс после сборки проекта — это экономит время и нервы. В данном случае автоматизация усложнена, так как программа не показывает командную строку для AVR Dude (разве что подбирать опытным путем), но некоторое упрощение процесса возможно. Делается это следующим способом – после первой прошивки не закрываем окно программы (COM порт после прошивки программа отпускает) и после следующей сборки проекта просто жмем кнопку «Upload». Конечно, сборка должна осуществляться в один и тот же Hex-файл.

 

Еще одна программка
ARP Uploader (Arduino Hex Uploader and Programmer)

ArduinoUploader.zip - Программа для записи Hex-файла в Arduino

Как и предыдущая, программка имеет простой интерфейс.
Процесс прошивки тот же:
— подключаем Arduino в USB-порт (отдельного питания не нужно)
— выбираем Hex файл
— выбираем тип Вашего Arduino
— выбираем COM порт
— жмем Upload

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

При попытке прошить Arduino Nano программа отказывалась видеть МК. Причиной стала неправильная установка скорости COM порта. По умолчанию скорость стоит 19200, а нужно 57600. Скорость порта в программе не задается явно, она прописывается в строчке «AVR Dude Params» — поменяйте в ней значение 19200 на 57600.

Автоматизация ARP Uploader.
ARP Uploader как и XLoader работает через AVR Dude, но, в отличие от XLoader, показывает командную строку. Это дает возможность использовать AVR Dude напрямую в Make или Bat файле.

 

Дополнительные материалы.
Драйвера Arduino.

Считаю не лишним напомнить, что для связи Arduino с компьютером в последнем должны присутствовать драйвера. Оставляю здесь архив с драйверами для Arduino (включая и старые драйвера в Old_Arduino_Drivers.zip и драйвера для FTDI-чипа в папке «FTDI USB Drivers»

Arduino_drivers.zip - Драйвера для Arduino

Стали появляться недорогие китайские Ардуины с драйвером Ch440G
Driver Ch440G.zip - Драйвер для преобразователя USB-UART

 

Загрузчики Arduino

Если Вы решите собрать свою плату Arduino (а сложного там ничего нет, фактически, это голый ATmega328 или ATmega168), Вам понадобится загрузчик Bootloader который должен содержать МК для работы со средой (или программками для заливки Hex-файлов). Конечно, Вам для записи Hex-файлов в чистый МК понадобится программатор и придется выставить фьюзы.

ATmegaBOOT_168_atmega328.hex - Bootloader для ATmega328
Для правильной работы нужно установить фьюзы следующим образом Low: FF   High: DA   Ext: 05

ATmegaBOOT_168_diecimila.hex - Bootloader для ATmega168
Фьюзы Low: FF   High: DD   Ext: 00

 

Схемы Arduino

Cхемы вышеописанных Ардуин.
Arduino_Uno_Rev3-schematic.pdf - Схема Arduino Uno
ArduinoNano30Schematic.pdf - Схема Arduino Nano
Arduino-Pro-Mini-schematic.pdf - Схема Arduino Pro Mini

 

Фьюзы установленные по умолчанию в Arduino (только с ATmega328)
Arduino Uno
Low Fuse 0xFF
High Fuse 0xDE
Extended Fuse 0x05

Arduino Duemilanove or Nano w/ ATmega328
Low Fuse 0xFF
High Fuse 0xDA
Extended Fuse 0x05

Arduino BT w/ ATmega328
Low Fuse 0xFF
High Fuse 0xD8
Extended Fuse 0x05

LilyPad Arduino w/ ATmega328
Low Fuse 0xFF
High Fuse 0xDA
Extended Fuse 0x05

Arduino Pro or Pro Mini (5V, 16 MHz) w/ ATmega328
Low Fuse 0xFF
High Fuse 0xDA
Extended Fuse 0x05

(Visited 113 079 times, 114 visits today)

www.getchip.net

Перепрошивка загрузчика при помощи Arduino Uno (на примере Arduino Pro Micro) – FLProg

Хочу поделиться с начинающими одним из способов прошивки (перепрошивки) загрузчика (bootloader)

В моем примере будет использоваться Arduino Pro Micro. Прошивка бутлоадера понадобилась из-за некорректной работы контроллера. После перезагрузки контроллера скетч выполнялся в 10 раз медленнее.

Итак, приступим. Нам понадобиться:

1. Пациент (Arduino Pro Micro).
2. Программатор ISP (Arduino Uno).
3. Немного цветных проводков.
4. Arduino IDE.
5. Более-менее ровные руки.

Шаг 1.

Прошивка будет осуществляться по средствам интерфейса SPI, поэтому нам надо соединить нашего “пациента” с нашим будущим “программатором” (контроллер Arduino Uno) следующим образом:

 Arduino Uno   Arduino Pro Micro
11     16 (MOSI)
12   14 (MISO)
1315 (SCK)
10 RST
GNDGND
5V 5V

        

Вот заодно распиновка Pro Micro:

Подключаем Arduino Uno к ПК и запускаем Arduino IDE.
Во вкладке Файл выбираем Образцы – ArduinoISP. Во вкладке Инструменты выбираем Порт к которому подключена Uno и в Плата указываем Arduino Uno. Открывшийся скетч заливаем в Uno. Вгрузили и получили “программатор”. Пол дела сделано.

Шаг 3.

Во вкладке Инструменты – Программатор выбираем Arduino as ISP. А в Инструменты – Плата указываем Arduino Leonardo.
Ну и на последок жмем Инструменты – Записать Загрузчик.

У меня загрузчик загружается несколько минут, поэтому можем смело сходить попить чайку)

Дождавшись надписи Запись загрузчика завершена можем проверить нашу Pro Micro на работоспособность.

Добавил: bulldozzer


Publication author

27 Comments: 5Publics: 79Registration: 21-12-2017

flprog.ru

Прошивка Atmega328 с помощью Arduino (as ISP) » NGIN.pro

Прошивка Atmega328 с помощью Arduino (as ISP) » NGIN.pro - Arduino, Raspberry Pi, умный дом, интернет вещей, крутые проекты, статьи, новости и полезная информация Прошивка Atmega328 с помощью Arduino (as ISP) Прошивка Atmega328 с помощью Arduino (as ISP)
 
В настоящее время Arduino является удобным инструментом для любителей электроники. Открытая платформа и "готовые к использованию" схемы, различные Arduino шилды для реализации любых конструкций. Но иногда это трудно и не эстетично использовать такую большую плату в качестве основной схемы нашего проекта или продукта. 

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

Шаг 1: Элементы

1. Arduino Uno.2. Макетная плата.3. USB A к USB B кабель.4. Микроконтроллер ATmega328.5. Светодиоды.6. Конденсаторы 22 пФ.7. Кварцевый генератор 16Mhz.8. 9В батарея.9. Перемычки.

Шаг 2: Подключение микроконтроллера Atmega328





 
Микроконтроллеры Atmega328, что мы покупаем на рынке, могут или не могут быть с загрузчиком (bootloaded). Если он уже bootloaded, то мы можем напрямую использовать его с Arduino, в противном случае мы должны загрузить его в первую очередь.1. Закрепите Atmega328 на макетной плате.2. Подключите кварцевый генератор к 9-му и 10-му контактам Atmega328.3. Подключите два 22 пФ конденсаторы, к каждой из двух ножек кристалла и заземлите их.4. Подключите контакты 7 и 20 к контакту 5V Arduino.5. Подключите контакты 8 и 22 к GND Arduino.6. Подключите контакт 10 Arduino к контакту 1 (reset) Atmega328.7. Подключите контакт 11 Arduino к контакту 17 Atmega328.8. Подключите контакт 12 Arduino к контакту 18 Atmega328.9. Подключите контакт 13 Arduino к контакту 19 Atmega328.
 
Теперь подключите Arduino к компьютеру

Programmer>arduino as ISP">В меню выберите Инструменты> Программатор> Arduino как ISPBurn bootloader -> Затем выберите Programmer>arduino as ISP">Инструменты> Записать ЗагрузчикЧерез несколько секунд, Atmega328 будет с загрузчиком и мы сможем легко программировать его с помощью Arduino платы.

Шаг 3: Программирование 

 

 

Удалите все соединения, что мы сделали для бутлоадера.Теперь соберем схему для програмирования Atmega328.1. Подключите Vcc и Gnd от Arduino к контактам макетной платы2. Подключите RESET Arduino к контакту 1 ATmega328.3. Подключите Rx Arduino к контакту 2 ATmega328.3. Подключите Tx Arduino к контакту 3 ATmega328.Теперь внесем некоторые изменения в IDE, как показано ниже,Board > "Arduino Duemilanove or Diecimila"">1. Из меню, выберите Инструменты> Плата> "Arduino Duemilanove или Diecimila"Processor > ATmega328">2. Теперь выберите, Инструменты> Процессор> ATmega328



 Теперь все настройки программирования готовы.Напишите программу, как обычно, и нажмите кнопку "загрузить"Код был загружен в микроконтроллер.Уберите все Arduino соединения, обеспечьте отдельный источник питания постоянного тока 5В к плате, и теперь у вас есть независимый микроконтроллер Atmega328 в действии.

Шаг 4: Будьте внимательны!!!

В Arduino IDE, контакт 5 означает 5 контакт Arduino, а не пятый контакт микроконтроллера Atmega328.Это на самом деле 11-й контакт Atmega328.

Таким образом, чтобы получить доступ к 11-му контакту Atmega328, мы должны написать в коде "5", а не 11.Все 18 I/O контакты Atmega328 доступны.Вот вам таблица, которая описывает все особенности кодирования контактов ввода / вывода.

 

ngin.pro

прошивка загрузчика Arduino через Arduino IDE, знакомство c AVRDUDE

ATmega8: прошивка загрузчика Arduino через Arduino IDE, знакомство c AVRDUDE

разделы: AVR , Arduino , Программаторы , дата: 3 марта 2014г.

Идея использовать младшее семейство AVR ATtiny для мелких проектов вместо Arduino — логична и красива, но приходиться учитывать реальное положение вещей. И если посмотреть цены на ebay.com, то получится, что ATmega8 будет лучше и дешевле многих ATtinyXX. Если вы не завод, и не имеете возможность закупаться оптом непосредственно у производителя, то для многих проектов будет проще использовать ATmega8 нежели изгаляться с программной эмуляцией TWI/I2C, UART и пр..

В качестве теории. На ATmega8 работал Arduino NG(next generation). Т.о. скетчи Arduino должны быть полностью совместимы с ATmega8. Вооружившись этим знанием попробуем что-нибудь прошить.

Распиновку и соответсвие выводам Arduino можно посмотреть здесь: http://arduino.cc/en/Hacking/PinMapping

Так же как в предыдущем посте соберите схему подцепив на 19-й пин микросхемы (digital pin 13 Arduino) резистор со сетодиодом. Должно получиться как-то так:

    В Arduino IDE меню-> сервис выберете опции:
  • Плата -> Arduino NG or older w/ ATmega8
  • Программатор -> Arduino as ISP

Далее откройте из примеров скетч "Blink". Здесь нужно будет исправить sleep(1000) на sleep(100). Профайл платы NG подразумевает работу с 16 Мгц резонатором, а у нас микроконтроллер работает от втроенного резонатора на 1 МГц, т.е. в 16 раз медленее.

Залейте скетч в микроконтроллер. Диод должен сразу начать мигать. У меня в перый раз прошивка прошла без единого варнинга, а потом начало выкидывать предупреждение:

что означает, что прошивка прошла успешна, но проверка закончилась ошибкой. Хотя у меня микроконтролер успешно прошивался и работал с таким варнингом, ситуация не хорошая. Вообще, если говорить об ошибках, то самое страшное, что можно получить на данном этапе это наверное:

1) контроллер не отвечает:

avrdude: AVR device not responding
avrdude: initialization failed, rc=-1

2) неверный тип микроконтроллера:

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

В Arduino IDE: меню -> настройки отметье галочкой чекбокс: "показывать подробный вывод при загрузке" и загрузите скетч в микроконтроллер еще раз. Если Arduino IDE запущен был из командной строки, то в консоли должен появиться длинный лог, где нас будет интересовать первая строка:

/opt/arduino/hardware/tools/avrdude -C/opt/arduino/hardware/tools/avrdude.conf -v -v -v -v -patmega8 -carduino -P/dev/ttyUSB0 -b19200 -D -Uflash:w:/tmp/build4429286683533029884.tmp/Blink.cpp.hex:i
    где:
  • -С --конфигурационный файл
  • -p --модель микроконтроллера
  • -с --модель программатора
  • -P --порт
  • -b --скорость порта
  • -U --операции с памятью

Часто при ошибках выводится сообщение c предложеним запустить avrdude с опцией -F.

use -F to override this check

НИКОГДА не делайте этого! Если есть ошибка, постарайтесь разобраться в проблеме. Иначе можно заблокировать чип.

Наиболее интересная опция для нас "-U", операции с памятью. Формат опции: тип_памяти:операция:файл:формат_файла

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

-U flash:r:my.hex:i
    где:
  • r - чтение прошивки
  • i - формат файла прошивки Intel

введите в консоли команду:

/opt/arduino/hardware/tools/avrdude -C/opt/arduino/hardware/tools/avrdude.conf -v  -patmega8 -carduino -P/dev/ttyUSB0 -b19200  -U flash:r:my.hex:i

на выходе будем иметь лог:

/opt/arduino/hardware/tools/avrdude -C/opt/arduino/hardware/tools/avrdude.conf -v  -patmega8 -carduino -P/dev/ttyUSB0 -b19200  -U flash:r:my.hex:i

avrdude: Version 5.11, compiled on Sep  9 2011 at 16:00:41
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2009 Joerg Wunsch

         System wide configuration file is "/opt/arduino/hardware/tools/avrdude.conf"
         User configuration file is "/home/flanker/.avrduderc"
         User configuration file does not exist or is not a regular file, skipping

         Using Port                    : /dev/ttyUSB0
         Using Programmer              : arduino
         Overriding Baud Rate          : 19200
         AVR Part                      : ATMEGA8
         Chip Erase delay              : 10000 us
         PAGEL                         : PD7
         BS2                           : PC2
         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         4    20   128    0 no        512    4      0  9000  9000 0xff 0xff
           flash         33    10    64    0 yes      8192   64    128  4500  4500 0xff 0x00
           lfuse          0     0     0    0 no          1    0      0  2000  2000 0x00 0x00
           hfuse          0     0     0    0 no          1    0      0  2000  2000 0x00 0x00
           lock           0     0     0    0 no          1    0      0  2000  2000 0x00 0x00
           calibration    0     0     0    0 no          4    0      0     0     0 0x00 0x00
           signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00

         Programmer Type : Arduino
         Description     : Arduino
         Hardware Version: 2
         Firmware Version: 1.18
         Topcard         : Unknown
         Vtarget         : 0.0 V
         Varef           : 0.0 V
         Oscillator      : Off
         SCK period      : 0.1 us

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.02s

avrdude: Device signature = 0x1e9307
avrdude: safemode: lfuse reads as DF
avrdude: safemode: hfuse reads as CA
avrdude: reading flash memory:

Reading | ################################################## | 100% 7.43s

avrdude: writing output file "my.hex"

avrdude: safemode: lfuse reads as DF
avrdude: safemode: hfuse reads as CA
avrdude: safemode: Fuses OK

avrdude done.  Thank you.

Итак, получив, в итоге, сообщение об успешном завершении: "avrdude done. Thank you", мы получаем файл с копией прошивки микроконтроллера. Пара слов о фьюзах. Это биты конфигурации микроконтроллера. Если запись фьюзов пройдет с ошибкой, микроконтроллер скорее всего заблокируется. Если сконфигурировать их неправильно, микроконтроллер скорее всего тоже заблокируется. Пока не будем их трогать, но есть одна возможность. Часта микроконтроллера по умолчанию 1МГц. Можно переключить его на работу внешним резонатором прошив загрузчик arduino. Меню -> Сервис -> Записать загрузчик.

Загрузчик состоит из flash-прошивки и фьюз-битов конфигурации, которые предусматривают работу от внешнего резонатора. Т.е. прошивая загрузчик, мы конфигурируем микроконтроллер на работу с внешним резонатором. Ну, а что касается самого загрузчика, то он потом затрется новой прошивкой, фьюзы останутся.

Перед прошивкой загрузчика, установите резонатор с частотой 1-16 МГц на 9 и 10 pin микросхемы. Там еще "по уму" должны быть керамические конденсаторы, но работать будет и без них. Для проверки сойдет. Схема:

После прошивки частоту можно будет менять заменой кварца. Так же у меня пропал варнинг при проверке после прошивки: "verification error". В целом, микроконтроллер с кварцом работает стабильнее.

www.count-zero.ru

alexxlab

Отправить ответ

avatar
  Подписаться  
Уведомление о