Универсальный внешний накопитель для всех iOS-устройств, совместим с PC/Mac, Android
Header Banner
8 800 100 5771 | +7 495 540 4266
c 9:00 до 24:00 пн-пт | c 10:00 до 18:00 сб
0 Comments

Содержание

Прошивка загрузчика на микроконтроллере ATMEGA328P

Цена и размер — это только пара причин, по которым использование платы Arduino для конкретных проектов может оказаться за гранью разумного. Зачастую они слишком большие или слишком дороги для целого ряда применений, особенно если требуется сделать несколько экземпляров. Хорошим способом получить простоту применения, присущую платформе Arduino, и при этом избавиться от всех этих недостатков является использование отдельного микроконтроллера ATmega328P и программирование его посредством среды разработки Arduino IDE и её упрощённой версии языка Си. Однако без начального загрузчика (bootloader) платформы Arduino сам по себе микроконтроллер ATmega328P не получится программировать с помощью среды Arduino IDE.

Цель этого руководства — понять, как работает начальный загрузчик платформы Arduino и как его записать в память микроконтроллера ATmega328P.

Программирование микроконтроллеров может оказаться непростой задачей, поскольку для этого необходимы специальные программаторы и файлы программ в шестнадцатеричном формате с расширением.hex, не говоря уже о глубоких знаниях языка программирования Си, на котором пишутся программы. Это довольно сложно для новичков, поэтому в рамках проекта Arduino был создан специальный файл формата.hex, после установки которого в микросхему семейства AVR можно программировать платы через последовательный порт. При этом всё что вам понадобится — это подсоединить последовательный интерфейс микроконтроллера к компьютеру, что можно осуществить с помощью преобразователя из USB в UART. Этот специальный файл носит название – Загрузчик (Bootloader) Arduino.

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

  1. Отслеживает, не пытается ли компьютер загрузить программу в микросхему через последовательный порт. Если компьютер начинает загрузку, то он принимает код и сохраняет его в специально отведённой области памяти микроконтроллера таким образом, чтобы при этом не затереть самого себя.
  2. Если компьютер не инициирует загрузку кода, то загрузчик командует микросхеме начать выполнение кода, который уже находится в памяти. Как только загрузчик записал в память программу и запустил её, плата Arduino будет непрерывно выполнять программу, пока подаётся питание.

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

Существует немало способов записи загрузчика платформы Arduino в микроконтроллер, но мы остановимся на самом простом, который предполагает использование платы Arduino в качестве внутрисхемного программатора ISP (In-System Programmer).

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

ISP (In-System Programming), и для неё необходимы специальный разъём на плате, через который получают доступ к микроконтроллеру при записи программы. Большинство плат Arduino оснащены таким разъёмом с выводами 2×3, который используется для одной из разновидностей ISP — внутрисхемного последовательного программирования ICSP (in-circuit serial programming).

Разъём содержит 3 вывода интерфейса SPI – MOSI (D11), MISO (D12), SCK (D13) и выводы питания и земли (VCC, GND), а также вывод сброса (Reset). Через эти выводы и производится загрузка программ в микроконтроллер на плате Arduino. Подключив эти выводы к микроконтроллеру ATmega328P, мы сможем записать в его память начальный загрузчик (BootLoader) Arduino.

1. Подготовьте плату Arduino в качестве внутрисхемного программатора ISP

В среде разработке Arduino IDE есть готовый пример Arduino as ISP, который, если его загрузить в плату Arduino, превращает её во внутрисхемный программатор. Откройте этот пример и загрузите (Upload) его в плату Arduino Uno или Duemilanove.

2. Подключение компонентов

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

Для наглядности ниже приведена таблица соединения.

Arduino Atmega328P
D13 Pin 19
D11 PIN 17
D10 Pin 1 Reset (no Capacitor needed)
VCC 5V
GND GND

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

3. Запись Загрузчика

Всё подсоединив, мы можем приступать к записи загрузчика.

Настройте среду Arduino IDE, выбрав в меню Инструменты > Плата (Tools > Board) пункт Arduino Uno. Затем выберите в меню Инструменты > Программатор (Tools > Programmer) пункт Arduino as ISP. Наконец, запишите загрузчик, выбрав пункт меню Инструменты > Записать Загрузчик (Tools > Burn Bootloader). Среда найдёт в папке, соответствующей выбранной вами плате, текстовый файл board.txt для загрузчика.

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

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

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

На это всё, спасибо, что прочитали это руководство. Не стесняйтесь оставлять любые возникающие вопросы в секции комментариев.

Как прошить чип Atmega328 или Atmega168 без программатора

Уважаемые покупатели!


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

Как прошить чип Atmega328 или Atmega168 без программатора? Для этого мы можем воспользоваться платой Arduino UNO.

И так давайте по порядку.

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

Для этого в Arduino IDE открываем меню Файл -> Образцы -> ArduinoISP, и зальем его в Arduino UNO.

После этого нужно выбрать во вкладке Инструменты, тип платы поддерживаемой процессоры Atmega328 или Atmega168, ведь мы именно его и хотим прошить.

Ну и далее мы выбираем тип процессора который будем программировать. Я к примеру остановил выбор на Atmega328.

В этой же вкладке тип программатора выбираем AVR ISP. То есть наша плата прошитая скетчем ArduinoISP по сути делает нашу UNO программатором ISP.

Смотря на сервис мануал нашего подопытного процессора, нам надо подпаять его к нашему программатору. К примеру типоразмер TQFP32 на Atmega328 и Atmega168 одинаковы.


И глядя на верхнюю схему, подключаем наш процессор к нашему новоиспеченному программатору по нижеследующей схеме. 

Ну и дальше жмем на Записать загрузчик. Arduino IDE сделает все остальное за вас. То есть установит нужные фьюзы и запишет загрузчик.

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

Далее нам нужно залить скетч в наш прошитый загрузчиком процессор. К примеру зальем простой скетч “blink”, поморгаем лампочкой.

В Arduino IDE выбираем Файл -> Образцы -> Basics -> Blink. И вот самое главное: Заливать нужно не так как мы обычно заливаем скетчи, не кнопкой Вгрузить.

Заливаем через Эскиз -> Загрузить через программатор. Вот тогда ваш скетч успешно запишется в наш чип!

Удачных Вам Arduino подделок!

В выбранной категории товаров нет.

Прошивка Ардуино 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, благо, ее создатели сделали все, чтобы упростить этот процесс.

 

Прошивка 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 доступны.Вот вам таблица, которая описывает все особенности кодирования контактов ввода / вывода.

 

Arduino ISP программатор для ATmega328, Минимальная Arduino, DIY

Arduino это просто, быстро, а самое главное удобно для реализации идей. Но когда всё отлажено и схема, и код настает момент, когда избыточность плат просто не нужна. Идею то можно реализовать значительно дешевле и компактнее. Без горы проводов. Для того чтобы избавиться от ненужных примочек в готовом устройстве предлагаем прошить ваш код непосредственно в микроконтроллер. Ниже описан пример, где в качестве программатора используется Arduino Nano, а прошивать будем микроконтроллер ATmega328.

В зависимости от того какая версия Arduino IDE у вас установлена скачайте один из архивов breadboard-1-6-x.zip, Breadboard1-5-x.zip or Breadboard1-0-x.zip. В папке со скетчами создайте папку «hardware». Размещение папки со скетчами можно узнать, выбрав «Файл – Настройки».

Распакуйте скаченный файл в папку «hardware». Должно получиться примерно так: «C:\Users\имя пользователя\Documents\Arduino\hardware\breadboard».

Перезапустите Arduino IDE.

Если сделали все правильно, в списке плат появиться строка «ATmega328 on a breadboard (8 MHz internal clock)».

Чтобы запрограммировать микроконтроллер, нужен программатор. Программатор можно сделать из Ардуино Нано. Для этого в нее нужно загрузить скетч ArduinoISP из имеющихся примеров.

Подключите Arduino Nano к ПК. В Arduino IDE выберите плату Arduino Nano, процессор ATmega328, нужный COM-порт.

Выберите «Скетч – Загрузка». Начнется загрузка программы.

Дождитесь окончания загрузки. Программатор готов.

Подключите программируемый микроконтроллер к Ардуино, как показано на рисунке.

Теперь в Arduino IDE выберите программируемый микроконтроллер.

COM-порт остается без изменений.

Например, так:

Выберите используемый программатор, в нашем случае «Arduino as ISP».

Сначала нужно записать загрузчик.

Теперь в микроконтроллер можно загружать «рабочую» программу. Откройте скетч, который хотите загрузить, и выберите «Скетч – Загрузить через программатор». Начнется загрузка. Дождитесь окончания загрузки программы.

Собираем USB-программатор для AVR из ATmega328P и FT232

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

Покупать готовый программатор, например, USBASP, как-то не спортивно. Да и используемые в нем 10-и пиновые IDC-разъемы я нахожу не особо удобными. В Arduino используется 6 пинов, значит нужен переходник. На макетке в два ряда пины вставить не получится, значит нужен еще один переходник. Да и ждать готовый USBASP из Китая долго. Можно было бы спаять свой. Но покупать используемую в нем ATmega8 специально для программатора не хотелось. Использовать же прошивку USBASP на ATmega328P у меня, увы, не получилось. Не исключаю, что просто руки кривые.

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

В нижней части вы видите сам программатор, в верхней — микроконтроллер, который он программирует. Приведенный программатор представляет собой обыкновенную Arduino Uno, собранную из SMD компонентов. В нее заливается уже знакомый нам скетч ArduinoISP, превращающий Arduino в программатор. Новым для нас здесь является только чип FT232. Ранее мы уже использовали готовые USB-UART преобразователи на его базе, но в собственной цепи FT232 мы еще не использовали.

Что к чему у этой микросхемы подключается подробнейшим образом описано в даташите [PDF]. Притом, понадобились не все пины, только 1 (TX), 4 (VCCIO, к плюсу), 5 (RX), 7 (GND), 15 (USB D+), 16 (USB D-), 18 (GND), 20 (VCC), 21 (GND), 25 (AGND, к земле), 26 (TEST, к земле). Вжух, и с микроконтроллером можно общаться по USB через виртуальный последовательный порт!

Рассыпуха, используемая мной в программаторе:

Окончательный вариант программатора, вид сверху:

Вид снизу:

То, что текст на обратной стороне слегка сполз — это косяк Резонита. Думаю, проект просто криво импортнулся из EAGLE в используемый ими какой-то другой софт, и этого никто не заметил.

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

Первый способ — сделать это до впаивания, через переходник из TQFP32 в DIP. Такой переходник вы можете заметить на фотографии прототипа. Он легко изготовляется при помощи ЛУТ или пленочного фоторезиста и довольно часто пригождается. Так что, если у вас данного переходника еще нет, самое время им обзавестись. Затем прошивка с (опционально) бутлоадером Arduino заливаются, как обычно.

Второй способ — использовать в качестве такого переходника саму плату программатора. Припаиваем на нее все компоненты, а также один дополнительный провод к reset-пину микроконтроллера. Теперь можно прошить микроконтроллер так же, как и в первом случае, поскольку доступ ко всем необходимым пинам есть через гребенку и провод к reset-пину.

Как вы, вероятно, уже знаете, существует утилита avrdude, предназначенная специально для общения с программатором. К сожалению, использовать ее напрямую не очень удобно. Поэтому в дополнение к программатору я также написал небольшую обвязку для avrdude на Python. На момент написания эти строк скрипт умел следующее:

$ avrisp
Usage: /home/eax/bin/avrisp <dump|upload|info|set-fuses> [fuses-name]
Possible [fuses-name] values: arduino, atmega328p-1mhz, atmega328p-8mhz

Другими словами, он умеет заливать и дампить прошивку, отображать информацию о микроконтроллере, в частности, текущие fuse bits, а также выставлять предопределенные fuse bits — дэфолты для Arduino, заводские дэфолты для ATmega328P, при которых используются внутренние часы на 8 МГц и стоит флаг Divide clock by 8, и те же fuse bits, только без названного флага. Подробнее о fuse bits вы можете прочитать в полном даташите по ATmega328P [PDF] на странице 348, в секции 31.2. Но будьте осторожны! Выставив не те fuse bits, можно перевести микроконтроллер в такое состояние, в котором вы потом не сможете до него достучаться обычными средствами.

Если в своих проектах вместо кварцевого резонатора вы решите использовать часы микроконтроллера, учтите, что для этого в ранее использованном нами файле arduino.mk понадобится закомментировать строку:

# BOARD_BUILD_FCPU := $(call readboardsparam,build.f_cpu)

… а в Makefile дописать частоту микроконтроллера, например:

# для фьюзов с именем atmega328p-1mhz
BOARD_BUILD_FCPU := 1000000

Все исходники к этой заметке, включающие в себя принципиальную схему и плату в форматах EAGLE, код скетча ArduinoISP, который я одолжил из Arduino IDE, а также скрипт avrisp.py, вы найдете в этом репозитории на GitHub. Как обычно, буду рад вашим дополнениям и вопросам!

Метки: AVR, Электроника.

Прошивка бутлоадера, или ардуино за 100 грн

2016-01-16

Всі статті →

Назарчик Дядюн

Недавно мне пришлось сделать небольшой проект для своего дома!

Но так как он был довольно таки простой, то “тратить” на него целую UNO не особо то и хотелось.

Я довольно давно работаю с микроконтроллерами, и в первое время до покупки ардуино, прошивал их с помощью разных способов:LPT порт компьютера, самодельные программаторы, чем я только это не делал…

Но на этот раз решил попробовать сделать это тем образом, который сейчас опишу!

Для начала нам понадобится микроконтроллер, это может быть любая микра от фирмы Atmel, так как для PIC немного другой процесс…

Далее нам понадобится ардуино или конвертер вот такого плана: Foca

Далее нам нужно соединить ардуино(переходник) и саму микросхему таким образом:

Данный процесс подключения описанный в образце “ArduinoISP”

Затем мы загружаем в Ардуино этот образец(Для переходника процесс можно пропустить)

Следующим шагом нужно найти вкладку Инструменты –> Программатор и выбрать там Arduino as ISP.

После этого наша Arduino UNO превращается в программатор!

Теперь мы открываем вкладку Инструменты и нажимаем “Записать Загрузчик”

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

Такую микросхему можно использовать для замены например сгоревшей в вашей плате!

Но также можно и использовать и отдельно, для этого есть соответствия пинов:

Эта картинка подходит как для 328 атмеги, так и для 168 и 8, потому что они совместимы.

Это значит что можно сделать самодельную ардуино на Атмега8, которая стоит копейки.

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

Обратите внимание, что для данной и других микросхем нужно питание от 1.8 до 5 вольт, если меньше – не заведётся, больше – сгорит, рекомендую использовать стабилизатор на подобии

Так же можно использовать 7805, с ним еще проще!

Так же огромное спасибо сайту Arduino.ua за всю электронику, в том числе и Arduino! Отличное качество и быстрая доставка!

На этом у меня всё, удачи вам, не спалите свои контроллеры, до скорой встречи!

Дякуємо Вам за звернення! Ваш відгук з’явиться після модерації адміністратором.

Поки немає відгуків на цю статтю.

Аппаратный взлом

: извлечение прошивки из микроконтроллеров Atmel

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

В этой первой части мы рассмотрим микроконтроллер Atmel Atmega2561. Чтобы получить доступ к прошивке микроконтроллеров Atmel, мы будем читать данные напрямую с контроллера через последовательный интерфейс программирования (SPI). Для этого требуются следующие инструменты и программное обеспечение:

Используя Bus Pirate в сочетании с программным обеспечением с открытым исходным кодом avrdude , микропрограмму микроконтроллера Atmel AVR можно извлечь из флэш-памяти микроконтроллера через SPI. Приложение avrdude можно скачать здесь.

Стандартная прошивка Bus Pirate должна работать нормально, если вы не извлекаете флеш-память из определенных микроконтроллеров Atmel, таких как ATmega 2560 и 2561. Прошивка Bus Pirate может иметь проблемы с извлечением памяти выше 128 КБ на ATmega 2560-2561. Чтобы решить эту проблему, вам необходимо установить прошивку STK500v2 на Bus Pirate. Прошивка STK500v2 превратит Bus Pirate в клон отладчика AVR. Прошивку для этого можно скачать здесь, а инструкции по обновлению прошивки Bus Pirate можно найти на этом веб-сайте.

После того, как Bus Pirate будет обновлен прошивкой STK500v2, вы можете подключить его к порту SPI. Если вам повезет, у производителя устройства есть разъемы для подключения на плате, к которым вы можете подключиться, но в любом случае вам нужно будет найти и проверить подключения заголовка до подключения Bus Pirate – и, если необходимо, припаять провода или разъемы к плате. Другой вариант – напрямую подключиться к микропроцессору.

На этом этапе таблица данных пригодится для определения распиновки микроконтроллера.Используя таблицу данных Atmega2561, вам нужно будет определить и найти контакты SPI «Power» и «Ground».

  • MOSI = серийный вход Master Out
  • MISO = Главный вход с последовательным выходом
  • SCLM = последовательные часы
  • RESET = Сброс микроконтроллера
  • GND = Земля
  • Vcc = напряжение обычно 3,3 В постоянного тока

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


Источник изображения

Как только это будет выполнено, вы можете подключить Bus Pirate к портам SPI чипа:

Atmega2561 Автобус Пиратский
Штифт SCK 11 SCLK
Вывод MOSI 12 MOSI
MISO-контакт 13 MISO
Пин сброса 20 CS
Вывод Vcc 21 Vcc 3.3 В постоянного тока
GND контакт 22 GCC

После подключения вы можете использовать приложение avrdude для извлечения флэш-памяти из микроконтроллера ATmega 2561, используя следующую команду:

avrdude -p m2561 -c stk500v2 e -P / dev / ttyUSB0 -u flash: r: flash.bin: r

Микроконтроллер Atmel AVR определяется с помощью переключателя -p . Коммутатор -c идентифицирует устройство интерфейса SPI, -P указывает на расположение устройства Bus Pirate – в этом случае он подключен к системе как ttyUSB0 – и, наконец, -u сообщает avrdude, что нужно извлечь во флеш-память и запишите его во флеш-память.мусорное ведро.

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

Итак, как видите, этот процесс достаточно прост, если у вас есть правильные инструменты, программное обеспечение и таблицы данных для MCU, из которого вы хотите извлечь прошивку. Обязательно ознакомьтесь с другими блогами из этой серии здесь:

Нужна помощь в обеспечении безопасности вашего Интернета вещей? Узнайте больше о наших услугах по тестированию безопасности Интернета вещей.
Начать

andysworkshop / nxa66: Прошивка Atmega328p для моей платы контроллера NXA66

= Прошивка контроллера источника питания NXA66

Это репозиторий содержит прошивку для контроллера источника питания, который я построил для размещения модуля регулятора напряжения (источника питания) Artesyn NXA66, который можно дешево купить на ebay. Вы можете увидеть полную запись в моем блоге.

== Установка прошивки

Вам не нужно его компилировать. В каталоге bin вы найдете .шестнадцатеричный файл для каждого выпуска. Вы можете прошить эту прошивку прямо на Atmega328p с помощью любой имеющейся у вас утилиты.

Я использую avrdude и прошиваю непосредственно на Atmega328p, когда он установлен на плате контроллера источника питания с помощью программатора USBASP, подключенного непосредственно к заголовку программирования на плате контроллера, когда плата включена. Команда для этого:

  avrdude -c usbasp -p m328p -e -U flash: w: nxa66-1.0.hex
  

=== Прошивка предохранителей

Мы делаем этот шаг, чтобы Atmega328p использовала свой внутренний RC-генератор 8 МГц в качестве источника тактовой частоты MCU.Если у вас Atmega328p только что с завода, вам не нужно этого делать, потому что заводские настройки верны. Вам нужно сделать это только в том случае, если ваш Atmega328p настроен на использование внешнего кристалла, что будет в случае, если вы вытащили его с платы Arduino.

Я программирую свои предохранители с помощью avrdude . Вы можете увидеть команду для этого в статье блога на моем сайте. Для этого я использую следующую команду:

  avrdude -c usbasp -p m328p -e -U lfuse: w: 0xe2: m -U hfuse: w: 0xde: m
  

Вы можете видеть, что значение низкого предохранителя составляет 0xe2 , а максимальное значение предохранителя – 0xde .

== Компиляция из исходников

Вы можете это сделать, если хотите. Убедитесь, что у вас установлено avr-gcc . Я использовал версию 4.9.2 для сборки этой прошивки. Вам также понадобится scons и avrdude , установленные и доступные.

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

Мигает загрузчик Arduino на микроконтроллере Atmega328p

Введение

Стоимость и размер, и это лишь некоторые из них, делают использование платы Arduino в определенных проектах излишеством, часто она всегда слишком велика или слишком дорога для объема проекта, особенно когда это проект, в котором нам нужно сделать несколько единиц. .Один из хороших способов сохранить простоту использования платформы Arduino, избегая при этом всех других недостатков, – это использовать только микроконтроллер Atmega328p и программировать его с помощью Arduino IDE и его упрощенной версии языка программирования C. Однако микроконтроллер atmega328p нельзя использовать с Arduino IDE, пока он не будет прошит загрузчиком Arduino.

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

Atmega328P микроконтроллер

Загрузчик Arduino

Программирование микроконтроллеров может быть немного сложным, поскольку для них требуются специальные программисты и файлы .hex, не говоря уже об огромных знаниях языка программирования C, необходимых для написания кода. Это неудобно для новичков, поэтому для устранения этих проблем Arduino создал файл .hex, который можно установить на микросхемы AVR, которые позволяют программировать плату через последовательный порт, обеспечивая все необходимое для программирования микроконтроллера (после установки шестнадцатеричного кода). file) – это последовательное соединение между микроконтроллером и компьютером, которое может быть достигнуто с помощью адаптера USB-UART.Этот шестнадцатеричный файл называется загрузчиком Arduino .

Загрузчик очень похож на BIOS, запущенный на ПК, и выполняет две задачи:

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

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

Запись загрузчика на микроконтроллер

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

В процессе производства электронных устройств микроконтроллеры обычно программируются после того, как они были установлены на печатной плате. Этот процесс программирования называется внутрисистемным программированием (ISP), и он требует, чтобы на печатной плате были определенные выводы заголовка, через которые микроконтроллер может быть доступен для программирования. Большинство плат Arduino и Arduino также поставляются с этой функцией, поскольку они обычно имеют 2×3-контактные разъемы, которые используются для формы внутрисистемного программирования, известной как внутрисхемное последовательное программирование (ICSP).Контакты заголовка состоят из 3 контактов SPI (MOSI (D11), MISO (D12), SCK (D13)), VCC, GND и контакта сброса, и это контакты, используемые для программирования микроконтроллера на Arduino. Подключив микроконтроллер Atmeg328p к этим контактам, мы сможем прошить микроконтроллер Atmeg328p с помощью загрузчика Arduino.

Необходимые компоненты

Для работы с этим руководством необходимы следующие компоненты;

  1. Arduino Uno / Duemilanove
  2. Провода перемычки
  3. Доска для хлеба
  4. Микроконтроллер Atmega328p
  5. Кварцевый генератор 16 МГц
  6. Конденсаторы 22пФ

Процедура загрузки загрузчика

1.Подготовьте Arduino в качестве программиста ISP

Под примерами, поставляемыми с Arduino IDE, находится пример «Arduino как ISP», который при загрузке на плату Arduino превращает плату в программатора ISP. Откройте пример и загрузите его в Arduino Uno или Duemilanove.

Arduino как ISP Пример

2. Подключение

Затем подключите Atmega328p, подлежащий прошивке, к Arduino через макетную плату, как показано на схемах ниже.

Схема

Ниже приведена карта контактов соединений, чтобы ее было легче понять.

  Arduino - Atmega328P
  D13 - штифт 19
D12 - вывод 18
D11 - вывод 17
D10 - сброс контакта 1 (конденсатор не требуется).
VCC - 5 В
ЗЕМЛЯ - ЗЕМЛЯ 

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

3. Записать загрузчик

После подключения мы готовы записать загрузчик.

Подготовьте IDE Arduino, выбрав Инструменты, Платы, затем выберите Arduino Uno в качестве типа платы. После этого перейдите в Инструменты> Программист и выберите « Arduino как ISP » в качестве программиста. Последнее действие для записи загрузчика – перейти к инструментам и выбрать «Записать загрузчик». Он возьмет выбранную вами плату и выполнит поиск в файле board.txt связанного с ней загрузчика в папке загрузчика. Важно, чтобы ваша Arduino IDE была правильно установлена ​​со всеми файлами платы, так как это не будет работать, если выбранный тип платы недоступен, но это очень редкий сценарий.

Выберите Burn Bootloader

После этого вы сможете загружать любой код непосредственно из Arduino IDE в микроконтроллер Atmega328P и использовать его в автономных целях.

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

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

До следующего раза

Установка загрузчика Arduino – узнайте.sparkfun.com

Добавлено в избранное Любимый 25

Введение

Внимание! Это руководство было написано для микроконтроллеров AVR с загрузчиком Arduino с использованием контактов ICSP. Если вы используете микроконтроллер ARM с выводами SWD, вам понадобится специальный программатор (например, Atmel JTAG ICE 3 или Atmel-ICE) для подключения к порту SWD. Для получения дополнительной информации ознакомьтесь с нашим руководством по программированию на ARM.

У вас есть заблокированная Arduino, которая больше не принимает код? Или, может быть, вы написали собственную прошивку и хотите загрузить ее на свой Arduino? Или, может быть, вы просто хотите узнать больше о внутренней работе Arduino, AVR и микроконтроллеров в целом. Что ж, тебе повезло! Из этого туториала Вы узнаете, что такое загрузчик, зачем его нужно устанавливать / переустанавливать, а также рассмотрите этот процесс.

Рекомендуемая литература

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

Основы печатной платы

Что такое печатная плата? В этом руководстве мы разберем, из чего состоит печатная плата, и разберем некоторые общие термины, используемые в мире печатных плат.

Что такое Ардуино?

Что вообще такое «Ардуино»? В этом руководстве подробно рассказывается о том, что такое Arduino, а также о проектах и ​​виджетах Arduino.

Установка Arduino IDE

Пошаговое руководство по установке и тестированию программного обеспечения Arduino в Windows, Mac и Linux.

Интегральные схемы

Введение в интегральные схемы (ИС). Вездесущие черные фишки электроники. Включает внимание к разнообразию корпусов ИС.

Что такое загрузчик?

AVR

Atmel – отличные маленькие микросхемы, но их может быть немного сложно запрограммировать. Вам понадобится специальный программист и несколько причудливых файлов .hex , и это не очень удобно для новичков.Arduino в значительной степени покончил с этими проблемами. Они поместили файл .hex на свои микросхемы AVR, который позволяет вам программировать плату через последовательный порт, то есть все, что вам нужно для программирования Arduino, – это USB-кабель.

Загрузчик представляет собой файл .hex , который запускается при включении платы. Он очень похож на BIOS, который работает на вашем ПК. Он делает две вещи. Сначала он осматривается, пытается ли компьютер его запрограммировать. Если это так, он берет программу с компьютера и загружает ее в память микросхемы (в определенное место, чтобы не перезаписать загрузчик).Вот почему, когда вы пытаетесь загрузить код, IDE Arduino сбрасывает чип. Это в основном выключает и снова включает IC, чтобы загрузчик мог снова начать работать. Если компьютер не пытается загрузить код, он сообщает чипу, что нужно запустить код, который уже хранится в памяти. Как только он обнаруживает и запускает вашу программу, Arduino непрерывно выполняет цикл, пока на плату подается питание.

Зачем устанавливать загрузчик?

Если вы собираете свой собственный Arduino или вам нужно заменить IC, вам необходимо установить загрузчик.У вас также может быть плохой загрузчик (хотя это бывает очень редко), и вам необходимо переустановить загрузчик. Также бывают случаи, когда вы поместили свою плату в странную настройку и переустановили загрузчик и вернули его к заводским настройкам – это самый простой способ исправить это. Мы видели платы, на которых люди отключили последовательный порт, что означает, что нет возможности загрузить код на плату, хотя могут быть другие способы исправить это, переустановка загрузчика, вероятно, является самым быстрым и простым.Как я уже сказал, плохой загрузчик на самом деле встречается очень редко. Если у вас новая плата, которая не принимает код, в 99,9% случаев это не загрузчик. В остальном 1% случаев это руководство поможет вам решить эту проблему.

Выбор программиста

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

Вариант 1. Специальные программисты

Для быстрого и легкого программирования мы рекомендуем изучить AVR Pocket Programmer (только для Windows).

Карманный программатор AVR

В наличии PGM-09825

В этой новой версии используется заголовок SMD 5×2. Это простой в использовании программатор USB AVR. Он невысокий, прост в использовании, отлично работает…

53

Или вы можете использовать официальный программатор Atmel-ICE для ARM, SAM и AVR.

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

Карманный программатор AVR или более дешевые варианты отлично подойдут для большинства приложений, но у них могут быть проблемы с некоторыми платами, особенно с платами с большим объемом памяти, такими как платы на базе ATMega2560.

Вариант 2: Использование Arduino в качестве программиста

Другой вариант – взять Arduino Uno (или Duemilanove). Если вы войдете в IDE Arduino, вы увидите пример скетча под названием ‘Arduino as ISP.’ Если вы загрузите этот код в свой Arduino, он будет действовать как программатор AVR. На самом деле это не рекомендуется для производства плат или плат с большим количеством памяти, но, в крайнем случае, это работает довольно хорошо. Также на момент написания этой статьи код работает только на платах ATmega328. Возможно, однажды это сработает на Леонардо или Дуэ, но пока нет.

Подключение оборудования

Внутрисхемное последовательное программирование (ICSP)

Очень редко программируют ИС до того, как они будут припаяны к печатной плате.Вместо этого у большинства микроконтроллеров есть так называемый заголовок внутрисистемного программирования (ISP). В частности, некоторые производители микросхем, такие как Atmel и Microchip, имеют специализированный метод ISP для программирования своих микросхем. Это называется внутрисхемным последовательным программированием (ICSP). Большинство плат, совместимых с Arduino и Arduino, будут иметь 2×3-контактный разъем ICSP. У некоторых может быть даже больше одной, в зависимости от того, сколько микросхем находится на печатной плате. Он выламывает три контакта SPI (MISO, MOSI, SCK), питание, землю и сброс.Это контакты, к которым вам нужно подключить программатор, чтобы перепрограммировать прошивку на вашей плате.

Здесь у нас есть Arduino Uno R3. Он имеет два заголовка ICSP: один для ATmega16U2 и один для ATmega328. Чтобы перепрограммировать загрузчик на этой плате, вы должны использовать только заголовок ICSP для ATmega328.

На некоторых платах меньшего размера вы можете не видеть этот разъем, но контакты должны быть выломаны в другом месте. Независимо от того, используете ли вы SMD IC или DIP IC, контакты ISP должны быть доступны в той или иной форме.На некоторых платах могут быть контрольные точки только для заголовка ISP. В этом случае вы можете подумать о приобретении адаптера ISP Pogo. Этот комплект позволяет вам временно установить хорошее соединение с контрольными точками, чтобы перепрограммировать вашу ИС.

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

Кабель для программирования AVR

В наличии CAB-09215

Это удобный кабель для программирования AVR, который включает в себя 10-контактный и 6-контактный интерфейс программирования ISP. Кабель…

3

Подключение карманного программатора AVR к цели

Если вы используете программатор, такой как карманный программатор AVR, ваша установка должна выглядеть примерно так, как показано ниже, когда кабель программирования AVR стрелка (◄) подключен к MISO .Если вы внимательно посмотрите на отливку разъема 2×3, вы должны заметить стрелку (◄) , указывающую на контакт 1 относительно положения стандартного заголовка ICSP.

Щелкните, чтобы увеличить изображение.

Внимание! Имеется небольшое различие в ориентации кабеля программирования AVR 2×5 – 2×3 по сравнению с другими кабелями 2×3, прикрепленными к официальным программаторам Atmel. Как показано на изображении ниже, где MISO выделен белой точкой, кабель карманного программатора AVR имеет MISO, подключенный ближе к внутренней части кабеля.Кабель AVR MKII имеет MISO, подключенный ближе к внешней стороне кабеля.
Щелкните, чтобы увеличить изображение.
Вы также можете заметить, что к одному из RedBoards подключен кабель , а не USB-кабель. Поскольку карманный программатор AVR может подавать питание 5 В на целевой AVR с переключателем, установленным в положение Power Target , для RedBoard кабель USB не требуется. Однако официальный Atmel AVR MKII не может обеспечить питание целевой платы.Таким образом, для подключения к целевому AVR требуется кабель.

То же самое и с более новыми программистами Atmel. На изображении ниже показан Atmel JTAG ICE3, подключенный к RedBoard. Как видите, положение кабеля AVR подключается к RedBoard аналогично изображению с AVR MKII. Поскольку программист не может обеспечить питание цели, вам понадобится дополнительный кабель, подключенный к целевому AVR.


Щелкните, чтобы увеличить изображение.

Подключение Arduino в качестве ISP к Target

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

Щелкните, чтобы увеличить изображение.

Tip Ищете другие примеры, помимо соединения двух Arduino Unos вместе? Для получения дополнительной информации посетите страницу ArduinoISP на Arduino.cc. Arduino.cc – ArduinoISP

Монтажный стол

Зарядите свою цель Arduino! Убедитесь, что ваша цель Arduino запитана. В противном случае вы не сможете прошить файл .hex на свою цель.

Вот таблица, которая поможет прояснить, какие соединения и куда идут. В зависимости от Arduino у вас может быть доступ к контактам ICSP только на заголовке 2×3 ICSP. Обязательно обратитесь к разводке платы для получения дополнительной информации о SPI-соединениях Arduino.

Программатор AVR Arduino как ISP 2×3 Заголовок ICSP ATmega328 ATmega2560 ATmega32U4
5 В Vcc / 5 В Штифт 2 Vcc Vcc Vcc
ЗЕМЛЯ ЗЕМЛЯ Штифт 6 ЗЕМЛЯ ЗЕМЛЯ ЗЕМЛЯ
MOSI MOSI / D11 Штифт 4 D11 D51 D16
MISO MISO / D12 Штифт 1 D12 D50 D14
SCK SCK / D13 Штифт 3 D13 D52 D15
Сброс D10 Штифт 5 Сброс Сброс Сброс
Предупреждение! Подключение для Arduino 5 В.Если вы подключаетесь к Arduino, который использует более низкое напряжение, убедитесь, что вы безопасно преобразовали логические уровни с помощью преобразователя между программатором и целевой Arduino. Для получения дополнительной информации ознакомьтесь с нашим руководством по логическим уровням.

Логические уровни

Узнайте разницу между устройствами 3,3 В и 5 В и логическими уровнями.

Код загрузки – Easy Way

Примечание: В этом примере предполагается, что вы используете последнюю версию Arduino IDE на своем рабочем столе.Если вы впервые используете Arduino, ознакомьтесь с нашим руководством по установке Arduino IDE.

Самый простой способ загрузить загрузчик – использовать IDE Arduino.

Загрузить Arduino как ISP

Предупреждение! Вам нужно будет загрузить ArduinoISP.ino на ваш заведомо исправный Arduino (то есть на вашу плату программирования), прежде чем вы сможете использовать его в качестве программиста.

Возьмите заведомо исправную RedBoard или Arduino Uno. Откройте вашу Arduino IDE.В вашем меню выберите Файл> Примеры> 11. ArduinoISP> ArduinoISP , чтобы открыть Arduino как эскиз ISP

.

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

Загрузите код в свой Arduino, чтобы превратить его в AVRISP.

Запись загрузчика до целевой

Оставьте Arduino в качестве ISP (то есть вашего программиста), подключенного к вашему компьютеру. Если вы еще этого не сделали, подключите целевой Arduino.Затем выберите определение платы для вашей целевой Arduino в Tools> Board .

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

Внимание! Вы можете встретить несколько вариантов выбора «Arduino как ISP» в списке программистов.Любой из них будет работать. Однако «ArduinoISP» не будет работать, если он выбран.

Наконец, выберите Записать загрузчик . Это возьмет плату, которую вы выбрали в Arduino IDE, и найдите соответствующий загрузчик в файле board.txt . Затем он найдет загрузчик в программной папке Arduino IDE (в частности, « … \ Arduino \ hardware \ arduino \ avr \ bootloaders ») и установит его. Это работает только в том случае, если плата правильно установлена ​​в среде IDE и у вас есть правильный загрузчик.

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


Код загрузки – Hard Way

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

Этот процесс состоит из трех этапов:

  • Установка битов предохранителей (т. Е. Низкого, высокого и удлиненного)
  • Flash .hex Файл
  • Набор фиксирующих бит

Первый шаг – установка предохранителей.Предохранители – это часть микросхемы AVR, которая определяет такие вещи, как использование внешнего кристалла или необходимость обнаружения потемнения. Перечисленные ниже команды предназначены специально для Arduino Uno, использующего ATMega328, они, вероятно, будут работать на некоторых других подобных платах, таких как Duemilanove, но убедитесь, что вы знаете, что делаете, прежде чем играть с плавкими битами. Все необходимые предохранители перечислены в файле boards.txt для различных плат. Опять же, если у вас плат.txt , тогда просто используйте Easy Way. Второй шаг – это загрузка программы. Последний шаг – установка битов блокировки.

Примечание: Эти плавкие вставки , а не , будут работать на плате 3,3 В / 8 МГц. Если вы используете другой микроконтроллер, вам также потребуется настроить параметр partno.

Карманный программатор AVR

Биты предохранителя

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

  язык: bash
avrdude -b 19200 -c usbtiny -p m328p -v -e -U efuse: w: 0x05: m -U hfuse: w: 0xD6: m -U lfuse: w: 0xFF: m
  
Шестнадцатеричный файл и фиксирующие биты

После того, как биты предохранителя установлены, мы можем прошить скомпилированный файл .hex на целевую плату и установить биты блокировки. Введите в командной строке следующее. Убедитесь, что вы находитесь в том же каталоге, что и ваш файл .hex , и настройте ... hexfilename.hex , который вы используете для прошивки для своей цели.Чтобы запустить загрузчик Arduino Uno, перейдите в папку программы Arduino. В ОС Windows он будет выглядеть примерно так: … \ arduino-1.8.5 \ hardware \ arduino \ avr \ bootloaders \ optiboot . В папке есть несколько файлов, но нас интересует файл optiboot_atmega328.hex .

  язык: bash
avrdude -b 19200 -c usbtiny -p m328p -v -e -U flash: w: hexfilename.hex -U lock: w: 0x0F: m
  

Arduino как ISP

Биты предохранителя

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

  язык: bash
avrdude -P comport -b 19200 -c avrisp -p m328p -v -e -U efuse: w: 0x05: m -U hfuse: w: 0xD6: m -U lfuse: w: 0xFF: m
  
Шестнадцатеричный файл и фиксирующие биты

После того, как биты предохранителя установлены, мы можем прошить скомпилированный файл .hex на целевую плату и установить биты блокировки. Введите в командной строке следующее. Убедитесь, что вы находитесь в том же каталоге, что и ваш файл .hex , и настройте ... hexfilename.hex , который вы используете для прошивки для своей цели.Чтобы запустить загрузчик Arduino Uno, перейдите в папку программы Arduino. В ОС Windows он будет выглядеть примерно так: … \ arduino-1.8.5 \ hardware \ arduino \ avr \ bootloaders \ optiboot . В папке есть несколько файлов, но нас интересует файл optiboot_atmega328.hex .

  язык: bash
avrdude -P comport -b 19200 -c avrisp -p m328p -v -e -U flash: w: hexfilename.hex -U lock: w: 0x0F: m
  

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

Ресурсы и дальнейшее развитие

Ищете подходящую Arduino?

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

Отведи меня туда!

Для получения дополнительной информации о AVR, загрузчиках и прошивке прошивки на другие платы ознакомьтесь с этими другими замечательными руководствами.

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

Установка загрузчика на MicroView

Исправьте MicroView без загрузчика! В этом руководстве рассказывается, как: разобрать MicroView, подключить его к разным программистам, запрограммировать загрузчик и протестировать его.

Pi AVR Programmer HAT Hookup Guide

В этом руководстве мы будем использовать Raspberry Pi 3 и Pi AVR Programmer HAT для программирования цели ATMega328P.Сначала мы запрограммируем загрузчик Arduino через SPI, а затем загрузим скетч Arduino через последовательный COM-порт USB.

Или ознакомьтесь с нашим руководством по программированию ARM для чипов ARM.

ARM Программирование

Как программировать платы SAMD21 или SAMD51 (или другие процессоры ARM).

USB – USB-драйвер только с прошивкой для микроконтроллеров Atmel AVR

V-USB – USB-драйвер только с прошивкой для микроконтроллеров Atmel AVR Товары Маленький снитч Микро-снитч LaunchBar Средство просмотра политики доступа в Интернет Больше продуктов Блог Магазин Служба поддержки Вакансии V-USB Меню

V-USB – это программная реализация низкоскоростного USB-устройства для микроконтроллеров Atmel AVR®, позволяющая создавать USB-оборудование практически с любым микроконтроллером AVR®, не требуя дополнительных микросхем.

Характеристики

  • Низкоскоростное устройство, полностью совместимое с USB 1.1, за исключением обработки ошибок связи и электрических характеристик.
  • Примеры проектов демонстрируют реализацию драйверов устройств и хостов в Linux, Mac OS X и Windows.
  • Поддерживает несколько конечных точек: одну конечную точку управления, две конечные точки прерывания / массового ввода и до 7 конечных точек прерывания / массового вывода. (Обратите внимание, что спецификация USB запрещает массовые конечные точки для низкоскоростных устройств, но V-USB в некоторой степени их поддерживает.)
  • По умолчанию передается размер до 254 байтов, больше – как вариант конфигурации.
  • Поставляется со свободно используемыми идентификаторами USB (пары Vendor-ID и Product-ID).
  • Работает на любом микроконтроллере AVR с объемом флэш-памяти не менее 2 КБ, ОЗУ 128 байт и тактовой частотой не менее 12 МГц.
  • Не требуется UART, таймера, входного блока захвата или другого специального оборудования (кроме прерывания, запускаемого фронтом).
  • Может работать с тактовой частотой 12 МГц, 15 МГц, 16 МГц, 18 МГц или 20 МГц или от 12.Внутренний RC-генератор на 8 МГц или 16,5 МГц.
  • Функциональность высокого уровня написана на C и хорошо прокомментирована.
  • Размер кода всего от 1150 до 1400 байт.
  • Вы можете выбрать лицензию: с открытым исходным кодом или коммерческую. Щелкните здесь, чтобы узнать подробности.

Оборудование

На этой схеме показана типовая схема устройства с питанием от шины.

D1 и D2 представляют собой недорогую замену микросхеме стабилизатора с низким падением напряжения 3,3 В, такой как LE33. Работа AVR при более высоких напряжениях выходит за пределы синфазного диапазона многих микросхем USB.Если вам нужно запустить АРН при 5 В, добавьте стабилитроны 3,6 В на D + и D-, чтобы ограничить напряжение.

Макетную плату см. На metaboard.

Преимущества перед альтернативными решениями

Почему бы не выбрать микроконтроллер со встроенным USB-оборудованием? Доступно несколько из них (см. Http://janaxelson.com). Или объединить микроконтроллер по вашему выбору с USB-чипом?

Преимущества перед микроконтроллерами с USB-оборудованием

  • Стандартные контроллеры AVR обычно легче получить.
  • Большинство контроллеров с поддержкой USB доступны только в SMD, что практически невозможно для любителей.
  • V-USB поставляется с бесплатной общей парой Vendor- / Product-ID.
  • Для AVR доступны хороший бесплатный компилятор ANSI-C (GNU gcc) и бесплатная система разработки для Windows (WinAVR).
  • Контроллеры
  • AVR быстрее, чем большинство контроллеров со встроенным USB, и стоят меньше.
  • Автономная работа: некоторые контроллеры USB загружают свои микропрограммы с главного компьютера в оперативную память.Они не работают без подключения к хосту.
  • Контроллеры AVR
  • имеют встроенную EEPROM.

Преимущества перед отдельным периферийным USB-устройством

  • Без дополнительных затрат.
  • Никаких дополнительных аппаратных сложностей: более простая печатная плата, меньше отказов.
  • Больше свободы в выборе дескрипторов USB.
  • V-USB поставляется с бесплатной общей парой Vendor- / Product-ID.
  • Используется мало аппаратных ресурсов: всего два-три контакта ввода-вывода.
  • USB-чипы
  • часто бывает трудно достать.

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

Аналогичный драйвер для микроконтроллеров серии AVR можно приобрести у Игоря Чешко. Наш USB-драйвер имеет следующие преимущества перед драйвером Игоря:

  • Весь настраиваемый код написан на ANSI-C, поэтому его легче поддерживать.
  • Модульная концепция: легче интегрировать в существующие проекты.
  • Немного меньший размер кода, несмотря на языковые модули высокого уровня.
  • Быстрее: все кодирование / декодирование (USB требует кодирования NRZI и вставки битов) выполняется в реальном времени, а не в основном цикле после сохранения потока необработанных данных.
  • Больше конечных точек, дескрипторы USB могут быть лучше настроены.
  • V-USB поставляется с бесплатной общей парой Vendor- / Product-ID.
  • Уровень соответствия стандартам задокументирован (описание ограничений и потенциальных проблем).
  • Лицензировано в соответствии с условиями Стандартной общественной лицензии GNU или, альтернативно, в соответствии с коммерческой лицензией.

Дик Стрифланд урезал старую версию V-USB до самого основания. Его код легче читать и понимать, но ему не хватает некоторых функций, которые есть в V-USB:

.
  • V-USB поддерживает до 4 конечных точек.Это позволяет реализовать устройства, соответствующие классу устройств HID или CDC.
  • V-USB проходит тесты в тестовой утилите usb.org.
  • V-USB поддерживает множество различных тактовых частот, некоторые даже с внутренним RC-генератором.


AVR является зарегистрированным товарным знаком Atmel Corporation

Обновление прошивки (расширенное)

Quadrino – это, по сути, плата Arduino Nano со встроенными датчиками и назначением контактов MultiWii.Ардуино:

«… платформа для создания прототипов электроники с открытым исходным кодом, основанная на гибком, простом в использовании аппаратном и программном обеспечении. Она предназначена для художников, дизайнеров, любителей и всех, кто интересуется созданием интерактивных объектов или сред!»

Это непростой путь! В этом руководстве подробно рассказывается о прошивке через среду разработки Arduino. Если вы не являетесь опытным пользователем, вам следует использовать Firmware Config Tool.

Вы можете узнать больше о среде Arduino на arduino.cc, но вы здесь не поэтому … вы хотите перепрограммировать Quadrino до последней версии MultiWii … так что приступим! Чтобы обновить Quadrino, мы выполним следующие шаги:

  1. Загрузите и установите последнюю версию Arduino IDE (1.0.1 на момент написания этой статьи) с веб-сайта arduino.cc. Нам может потребоваться установить драйвер USB, если вы используете более раннюю версию Windows, чем Vista, и подключаете Quadrino впервые.
  2. Скачайте и распакуйте последнюю версию прошивки MultiWii от flyingeinstein.com для вашей модели и версии платы.
  3. Загрузите файлы прошивки в программное обеспечение Arduino.
  4. Выберите тип платы Arduino (Nano w / ATmega328)
  5. Когда Quadrino подключен к USB, нажмите кнопку загрузки прошивки (программы)

Загрузка среды разработки Arduino

Вы должны использовать версию 1.0 или 1.0.1 IDE Arduino. Более ранние версии могут по-прежнему работать, но не будут использовать более оптимизированные процедуры в новом коде Arduino.Для всех загрузок перейдите на страницу загрузки Arduino. Для версии для Windows или Mac нажмите ниже.

Windows Arduino 1.0

Mac Arduino 1.0

Linux Arduino 1.0 (32-разрядная) или (64-разрядная)

Установка файлов среды разработки Arduino

Программное обеспечение arduino не имеет стандартной программы установки. Вам придется вручную распаковать файлы IDE arduino в каталог программных файлов (Windows) или папку приложений (Mac). Вы можете установить приложение arduino в любую папку по вашему выбору.Кстати, часть этого процесса установки была заимствована со страницы «Начало работы с Arduino» (Windows или Mac), чтобы упростить вам задачу.

MAC OSX: образ диска (.dmg) должен монтироваться автоматически. Если этого не произошло, дважды щелкните по нему. Это должно выглядеть как на следующем изображении. Перетащите Arduino.app в папку «Приложения». Оставьте этот DMG смонтированным, затем нам нужно будет установить драйверы FTDI.

Первое подключение Quadrino (установка драйверов USB)

В некоторых операционных системах вам может потребоваться загрузить и установить драйверы USB.Если вы уже использовали MultiWiiConfig для настройки Quadrino, тогда этот шаг должен быть уже выполнен, и вы можете перейти к Загрузка прошивки . Вы также можете безопасно записать прошивку, если вы установили модуль bluetooth и он работает. Загрузка прошивки на Quadrino – безопасная операция. Неудачная загрузка прошивки приведет к блокированию Quadrino , а не , вы можете начать загрузку снова. Однако после того, как загрузка будет начата, вам нужно будет завершить успешную загрузку, прежде чем Quadrino снова начнет нормально работать.

Окна

1. Найдите USB-кабель, вам понадобится тот, на котором есть конец mini-B.

2. Подключите Quadrino к компьютеру. Quadrino будет использовать питание от USB-порта, поэтому вы должны увидеть, что Quadrino включается, и желтый индикатор STATUS быстро мигает, а затем гаснет. Также может загореться синий индикатор СТАБИЛЬНЫЙ.

Windows начнет процесс установки драйвера:

В Windows Vista и 7 драйвер должен автоматически загрузиться и установить! (На самом деле! Это работает!) Если вы видите номер COM-порта, например «COM5», отметьте номер, он вам понадобится позже.

В Windows XP появится мастер установки нового оборудования:

Прежде чем продолжить, загрузите последнюю версию драйверов FTDI232 с веб-сайта FTDI , если вы используете более раннюю версию Windows, чем Vista .

  • На вопрос « Может ли Windows подключиться к Центру обновления Windows» для поиска программного обеспечения? выберите « Нет, не в этот раз» . Нажмите кнопку “Далее.
  • Выберите «Установить из списка или указанного места (Дополнительно)» и нажмите «Далее».
  • Убедитесь, что установлен флажок «S искать лучший драйвер в этих местах» ; снимите отметку “Искать на съемном носителе” ; отметьте «Включить это местоположение в поиск» и перейдите в каталог драйверов / драйверов FTDI USB, который вы скачали. (Последнюю версию драйверов можно найти на веб-сайте FTDI.) Нажмите «Далее».
  • Мастер выполнит поиск драйвера и сообщит вам, что был обнаружен «USB-последовательный преобразователь». Нажмите “Готово”.
  • Мастер нового оборудования появится снова.Выполните те же действия и выберите те же параметры и местоположение для поиска. На этот раз будет обнаружен «Последовательный порт USB». Если вы видите номер COM-порта, например «COM5», отметьте номер, он вам понадобится позже.

Проверить, установлены ли драйверы, можно, открыв диспетчер устройств Windows (на вкладке «Оборудование» панели управления системой). Найдите «Последовательный порт USB» в разделе «Порты»; это плата Arduino.

Mac OSX

Вам потребуется установить на плату драйверы для микросхемы FTDI.Дважды щелкните значок FTDIUSBSerialDriver_xxxx.mpkg в загруженном вами образе dmg и следуйте инструкциям программы установки. После установки драйверов вам потребуется перезагрузить компьютер. (Последнюю версию драйверов можно найти на веб-сайте FTDI.) Опять же, если вы уже настроили Quadrino через MultiWiiConf, то вы, должно быть, уже выполнили установку драйвера и можете пропустить этот шаг.

Загрузка последней прошивки Quadrino

Чтобы узнать, какая у вас версия Quadrino, используйте ссылку меню «Обновление прошивки» выше и следуйте рисункам, чтобы определить вашу модель, датчики и версию.

Загрузите последнюю версию прошивки для Quadrino. Прошивка – это термин, используемый для обозначения «программного обеспечения, которое работает на микросхеме электронной платы». Вы также можете использовать код прямо из репозитория MultiWii, но вам придется вручную установить параметры конфигурации для Quadrino. Чтобы максимально использовать возможности Quadrino, вам следует использовать нашу подготовленную прошивку.

Распакуйте загруженный zip-файл в каталог. Теперь вернитесь в меню приложения Arduino и выберите File | Открыть .перейдите в папку с распакованной вами прошивкой и выберите / откройте файл MultiWii —–. ino (пример ниже). Теперь нажмите ОК в открытом диалоговом окне, и вы должны увидеть все исходные файлы, загруженные в приложение Arduino в виде текстовых файлов. Теперь вы готовы загрузить прошивку в Quadrino!

Настройка среды Arduino

Поскольку вы впервые используете среду Arduino, вы должны выбрать тип платы. Quadrino основан на Arduino Nano, который использует микрочип ATmega328.Итак, в меню приложения выберите Инструменты | Плата и выберите из списка “Arduino Nano w / ATmega328” .

Неправильный выбор платы приведет к выдаче ошибки OUT OF SYNC при загрузке.

Программирование Quadrino

Нажмите кнопку «Загрузить» на панели инструментов приложения Arduino, кнопка ниже обведена красным. Через несколько секунд вы должны увидеть строку в области состояния приложения arduino с указанием размера двоичного эскиза, а индикаторы TX / RX на Quadrino должны начать быстро мигать.Загрузка прошивки займет около 20 секунд. Вам может быть предложено ввести последовательный порт, как указано ниже.

Опытные пользователи: Перед тем, как нажать кнопку «Загрузить», вы можете на этом этапе изменить настройки в файле Config.h, который уже открыт в редакторе Arduino (прокрутите вкладки вправо). Все функции Quadrino уже включены, поэтому это не требуется, если вы используете наши подготовленные пакеты прошивки.

После нажатия кнопки «Загрузить» вам может быть предложено выбрать последовательный порт, к которому подключен Quadrino.Во время процесса установки драйвера, описанного выше, он должен был указать номер COM-порта. Если вы его пропустили, не беспокойтесь, выбор неправильного порта приведет к ошибке, и вы можете попробовать другой порт, снова нажав кнопку загрузки.

Вот и все! Вы готовы перейти в приложение MultiWii Config и настроить новую прошивку!

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

Запись загрузчика ATMega328p

В центре каждой Arduino UNO находится микроконтроллер Microchip ATmega328p. Это мозг операции, без него ваш Arduino не смог бы делать ничего из того, чем он славится.

Запись загрузчика за 5 простых шагов:

Шаг 1 – Установка мини-ядра

  1. Установите «Мини-ядро» – аппаратный пакет, который добавляет поддержку ряда устройств ATmega в Arduino IDE.
  2. Откройте IDE Arduino и перейдите к настройкам (или нажмите ctrl +, ). Скопируйте следующий URL-адрес в пустое поле с надписью «Дополнительные URL-адреса диспетчера плат»: https://mcudude.github.io/MiniCore/package_MCUdude_MiniCore_index.json
  3. перейдите в диспетчер досок, который можно найти в разделе Инструменты> Доска > Менеджер плат .
  4. Введите «minicore» в строку поиска, и появится соответствующая запись. Выберите последнюю версию и нажмите «установить».После завершения установки закройте окно диспетчера досок.

Шаг 2 – Установка ArduinoISP

Прошивка Arduino с помощью встроенного в систему программатора. Вы найдете ArduinoISP под заголовком «Примеры» в меню «Файл».

Шаг 3. Подключение

Подключите Arduino к макетной плате. Чтобы ATMega328 работал, вам понадобятся четыре дополнительных компонента:

  • Подтягивающий резистор 10 кОм
  • Два керамических конденсатора 18-22 пФ
  • Кристалл 16 МГц или 8 МГц

Хотя загрузчик можно загрузить и без них компонентов (вместо этого полагаясь на внутреннюю тактовую частоту 8 МГц), вы столкнетесь с меньшим количеством проблем, если включите их.

Подключите все это так:

Шаг 4 – Выберите устройство, кристалл и программатор

  1. Выберите соответствующие параметры устройства, кристалла и программатора в меню «Инструменты».
  2. Под платой , выберите «ATmega328» (или любой другой чип, который вы используете).
  3. Под clock, выберите частоту ваших внешних часов. Это должно быть написано заглавными буквами на верхней части корпуса кристалла.
  4. и ваш программатор как «Arduino as ISP»

Шаг 5 – Записать загрузчик

  1. Записать загрузчик, используя опцию «Записать загрузчик» в нижней части меню «Инструменты».
  2. Затем вы можете удалить перемычки, соединяющие контакты 10-13 платы Arduino с макетной платой.

Теперь ваша макетная плата будет работать, используя только сигналы +5 В и заземление – все сигналы данных будут поступать от самого ATMega328. Вы сможете загружать эскизы в ATMega328 с помощью кабеля FTDI, который соединяет микроконтроллер с USB-разъемом компьютера.

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

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

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

Что такое ATmega328p?

Семейство микросхем megaAVR было создано Atmel, а затем приобретено Microchip Technology, когда они приобрели Atmel в 2016 году.ATmega является флагманом этой серии и с самого начала составляла основу плат Arduino.

Чтобы установить ATmega на макетную плату, вам понадобится DIP-версия микросхемы. Он будет аккуратно вставлен в центр макета, так что ножки будут находиться по обе стороны от зазора. Как только он будет установлен, вы сможете использовать соседние разъемы для подключения к контактам.

Что делает ATmega328p на Arduino UNO?

С определенной точки зрения, ATmega328p – это Arduino.Ваши наброски хранятся во внутренней памяти, и он выполняет все содержащиеся в нем инструкции, повышая и понижая напряжение и считывая внешние входные данные. Когда мы говорим о подключении чего-либо к Arduino, мы на самом деле говорим о подключении чего-либо к ATmega328p – среда и печатная плата Arduino просто обеспечивают легкую для понимания упаковку, которая делает подключение к ATMega328 немного более интуитивным. ATMega328 имеет ту же распиновку, что и женские разъемы Arduino Uno, за исключением контактов питания.

Что такое загрузчик?

Так что же такое загрузчик и почему он так важен? Возможно, вы знакомы с этим термином на своем настольном ПК. В этом случае загрузчик – это программа, которая запускается, как только машина включается, и ее задача – запустить вашу операционную систему. Хотя в Arduino отсутствует операционная система, у нее все еще есть загрузчик, который на самом деле представляет собой небольшую часть программного обеспечения, которая позволяет устанавливать новую прошивку на чип без необходимости использования внешнего интернет-провайдера.Если на чипе нет загрузчика, то нет возможности ввести новую прошивку, а это означает, что каждый загрузчик необходимо будет установить с помощью внешнего интернет-провайдера хотя бы один раз.

Нельзя ли вынуть ATmega328 из Arduino?

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

Зачем использовать ATmega328 отдельно?

Вам может быть интересно, в чем смысл всего этого. Если в Arduino уже есть все необходимое для работы ATmega, зачем убирать одно из другого? Существует несколько возможных причин:

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

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

Запись загрузчика

Установка мини-ядра

. Пакет MiniCore от MCUDude – это аппаратный пакет, который добавляет поддержку ряда устройств ATmega в среде Arduino IDE, а именно:

  • ATmega8
  • ATmega48
  • ATmega88
  • ATmega168
  • ATmega328
  • ATmega328PB
1 – Откройте IDE Arduino и перейдите к настройкам (или нажмите ctrl +, ).Внизу страницы есть пустое поле рядом с «URL-адресами дополнительных плат». Вы хотите скопировать сюда следующий URL-адрес:

https://mcudude.github.io/MiniCore/package_MCUdude_MiniCore_index.json

Шаг 2. Перейдите к диспетчеру досок, который находится под Tools> Board> Boards Manager. . Здесь вы найдете список плат, с которыми может взаимодействовать ваш Arduino.

Шаг 3 – Введите «minicore» в строку поиска, и появится соответствующая запись.Вы сможете выбирать из списка предыдущих версий, но если у вас нет конкретной цели, лучше выбрать последнюю. Нажмите «установить» и дождитесь завершения. Затем закройте окно менеджера досок.

Установка ArduinoISP

Вы собираетесь прошить Arduino с помощью встроенного в систему программатора, почти так же, как вы загружали бы пример скетча. Фактически, вы найдете ArduinoISP под заголовком «Примеры» в меню «Файл» (по умолчанию это номер одиннадцать).

Подключение

Теперь мы собираемся подключить оборудование так, чтобы Arduino был подключен к микроконтроллеру на плате. Помимо проводов, в идеале для этой работы вам понадобятся четыре дополнительных компонента. Это:

  • Подтягивающий резистор 10 кОм
  • Два керамических конденсатора 18-22 пФ
  • А 16 МГц или 8 МГц Кристалл

Резистор предназначен для обеспечения высокого напряжения на выводе сброса, когда он не активен. Это предотвращает случайную перезагрузку устройства при появлении шума на контакте.Часы и конденсаторы служат для предоставления микросхеме важной информации о времени. Хотя можно загрузить загрузчик без этих компонентов (вместо этого полагаясь на внутренние часы чипа с частотой 8 МГц), вы столкнетесь с меньшим количеством проблем, если включите их.

Подключите все это так:

Выберите устройство, кристалл и программатор

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

Перейдите в меню плат в разделе «Инструменты» и выберите «ATmega328». Если вы используете другой чип, вы можете соответствующим образом изменить свой выбор.

Выберите кристалл, который вы будете использовать для часов. Мы сказали, что будем использовать кристалл с частотой 16 МГц, так что давайте продолжим. Если вы используете кристалл с частотой 8 МГц, выберите его.

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

Ваш адрес email не будет опубликован.