Как прошить загрузчик ардуино в атмегу 328
Перейти к содержимому

Как прошить загрузчик ардуино в атмегу 328

  • автор:

Arduino программатор

Как прошить чип 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 подделок!

Установите загрузчик на ATmega AT328P-PU и дешево получите функциональность, близкую к Arduino Uno!

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

Что такое Arduino? Вы серьезно?

После 2003 года сложно было не услышать что-либо об Arduino; нравятся ли они вам или нет, но эти платы вездесущи. Но что такое Arduino?

Вопреки тому, как многие думают, Arduino не является микроконтроллером, это особый бренд сборок на печатных платах, которые содержат микроконтроллеры. Эти микроконтроллеры – это чаще всего ATmega от компании Atmel (которая сейчас входит в состав Microchip), а одним из наиболее часто используемых ATmega является AT328P. Но не каждый AT328P будет работать на печатной плате Arduino или с Arduino IDE (интегрированной средой разработкой); на скриншоте ниже показано, что произойдет, когда вы попытаетесь загрузить скетч в обычный AT328P, который приобрели в магазине.

Ошибка при попытке загрузить скетч в AT328P

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

Далее следуют пошаговые инструкции по загрузке кода загрузчика Arduino на AT328P-PU с помощью полноценной платы Arduino Uno. По сути, процесс разбивается на четыре части:

  1. сборка схемы загрузчика;
  2. настройка Arduino Uno как ISP (внутрисхемного программатора);
  3. подключение Arduino Uno к схеме загрузчика;
  4. прошивка кода загрузчика.

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

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

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

Список комплектующих

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

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

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

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

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

Делаем ISP программатор из Arduno Uno

После двойной проверки схемы прошивки загрузчика, прежде чем подключать ее к Arduino Uno, вы должны настроить Arduino Uno для работы в качестве программатора ISP (In-circuit Serial Programmer, внутрисхемный последовательный программатор). Подключите Arduino Uno к компьютеру и запустите Arduino IDE. Затем выполните шаги, как показано на следующих скриншотах.

  1. Укажите, что подключена обычная плата Arduino Uno. Определение платы, подключенной к компьютеру
  2. Укажите назначение платы Arduino Uno как Arduino ISP. Назначение режима работы Arduino Uno в качестве ISP программатора
  3. Откройте скетч Arduino ISP. Скетч Arduino ISP Скетч Arduino ISP
  4. Загрузите скетч Arduino ISP в Arduino Uno. Загружаем скетч Arduino ISP в Arduino Uno
  5. Когда вы увидите сообщение » done uploading » (загрузка завершена), ваша плата Arduino Uno будет готова работать в качестве ISP программатора, и будет способна понимать и отвечать на инструкции от Arduino IDE. Arduino Uno готова работать в качестве ISP программатора

Прошивка кода загрузчика

Теперь подключите шесть проводов от схемы прошивки загрузчика к Arduino Uno точно так, как показано на схеме и фотографии, приведенной выше в разделе «Сборка схемы прошивки загрузчика». После двойной проверки всех соединений вы готовы записать следующий код загрузчика в AT328P-PU в схеме прошивки загрузчика.

  1. Выберите » Burn Bootloader » (прошить загрузчик) как действие для Arduino Uno; процесс должен начаться сразу после того, как вы кликните » Burn Bootloader «. Прошивка загрузчика в AT328P-PU
  2. Когда вы увидите сообщение » Done burning bootloader » (прошивка загрузчика завершена), процесс будет выполнен, и AT328P-PU сможет понимать и отвечать на инструкции от Arduino IDE. Загрузчик загружен в AT328P-PU

Простейшая схема программирования (и проверки работы)

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

Список комплектующих

Обозначение Описание
R2 Резистор 470 Ом, 0,25 Вт
C4 Конденсатор, керамический, 0,1 мкФ, 50 В
LED1 Светодиод, T1 3/4, желтый
нет Конвертер USB–TTL с выводом DTR

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

  1. Удалите все шесть перемычек между Arduino Uno и схемой прошивки программатора.
  2. Подключите R2 и LED1 между землей и выводом 19 микроконтроллера AT328P-PU.
  3. Подключите выводы 1, 3, 4 и 5 от USB-TTL конвертера к AT328P-PU, как показано ниже. Вывод 2 не используется.
  4. Подключите вывод 6 через конденсатор C4 (0,1 мкФ) к выводу 1 AT328P-PU. (C4 обеспечивает, чтобы сигнал DTR от преобразователя USB-TTL выдавал кратковременный сигнал сброса, а не тот сигнал, который остается на низком логическом уровне в течение длительного периода времени.)

Простейшая схема программирования AT328P-PUМакет простейшей схемы программирования AT328P-PU

Загрузка первого скетча: разумеется, мигаем

  1. Чтобы подтвердить работоспособность макета простейшей схемы программирования и проверки работы, откройте скетч » Blink » из базовых примеров, включенных в Arduino IDE. Скетч Blink
  2. После выбора правильного COM порта скомпилируйте и загрузите в AT328P-PU скетч » Blink «. Скетч BlinkПервая попытка прошивки скетча Blink не удалась; можете увидеть, почему произошел сбой? Подсказка: посмотрите на правый нижний угол окна IDE выше, и сравните его с тем же участком окон IDE на скриншотах ниже (на которых прошивка удалась). Компиляция скетча BlinkПрошивка скетча BlinkКонечно, причина неудачи первой попытки прошивки заключается в неправильном выборе COM порта: был выбран COM3, вместо правильного COM6.

Что случилось?

Успех! Вы прошили загрузчик Arduino в AT328P-PU, а затем загрузили в AT328P-PU скетч Blink , что подтверждается мигающим желтым светодиодом на макете простейшей схемы программирования и проверки работоспособности. Теперь любой скетч для Arduino может быть загружен аналогичным образом, а компоненты, необходимые для этого скетча, могут быть подключены к микроконтроллеру AT328P-PU, и всё будет работать.

Развлекайтесь с Arduino. тратя теперь меньшие деньги!

Как прошить загрузчик ардуино в атмегу 328

Наконец-то для моего долгостроя, проекта взрывных! часов , пришла микросхемка ATmega 328. Она полностью пуста и задача поставлена прошить в ней bootloader. После прошивки и нескольких навесных элементов она будет почти Arduino UNO.

Д анный пример может помочь новичкам начавших работу с микроконтроллерами. Для прошивки загрузчика потребуется ISP программатор. Таких программаторов бывает много и разных. В моем случае в качестве программатора выступает плата Arduino UNO. В Arduino IDE открываем примеры, ищем ArduinoISP.

Открывшийся скетч заливаем в UNO. После загрузки скетча программатор готов и нужно правильно подключить ATmega 328.

Соединяем все как на рисунке

Далее « Сервис>>Плата » и выбираем тип платы для которой хотим записать загрузчик, в нашем случае — «Arduino UNO». Далее « Сервис>>Программатор>>Arduino as ISP ». В меню сервис выбираем « Записать загрузчик».

Важное условие для достижения положительного результата, это подключение резонатора 16 МГц на ногах 9 и 10.

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

  • Какие бывают Arduino
  • Как мигнуть светодиодом в Arduino через USB с помощью Питона
  • Установка ПО Arduino под Линуксом
  • Установка ПО Arduino под MS Windows XP
  • Страница ссылок на Arduino на русском
  • Набор Матрешка UNO
  • Как не переплачивать за Arduino и компоненты к нему
  • Прошивка бутлоадера в Arduino
  • Команды avrdude чтобы проверить и прошить AVR Mega8 через LPT-порт
  • Прошивка bootloader (загрузчика) ATmega 328
  • Память EEPROM (ППЗУ) в AVR. Запись и чтение
  • EEPROM. Avrdude. Снова про работу с контроллерами. Как считать и записать данные
  • Пример работы с EEPROM. Библиотека EEPROM и EEPROM2
  • Что делать при ошибке avrdude: ser_open(): can’t open device «/dev/ttyACM0»: Permission denied
  • Распиновка платы Arduino UNO (R3)
  • Распиновка контроллера Arduino UNO — Atmel 328P-PU (DIP-корпус)
  • Как прошить контроллер Atmel/Atmega через Arduino UNO на примере ATmega8
  • Схема Arduino UNO Rev3
  • Где взять настройки прошивальщика avrdude, которые формирует среда Arduino IDE
  • Описание опций прошивальщика avrdude
  • Программатор SPI Flash на Arduino своими руками

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

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

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

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

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

Начальный загрузчик платформы Arduino

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

ATMEGA328P dip28 распиновка

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

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

  1. Плата Arduino Uno
  2. Проволочные перемычки
  3. Макетная плата
  4. Микроконтроллер ATmega328P
  5. Кварцевый резонатор на 16 МГц
  6. Керамические конденсаторы на 22 пф

Процесс установки начального загрузчика

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

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

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

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

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

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

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

Arduino Atmega328P
D13 Pin 19
D12 Pin 18
D11 PIN 17
D10 Pin 1 (сброс) (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 были корректно установлены все файлы для используемых плат, чтобы можно было их выбрать в соответствующем меню. Обычно они уже установлены в среду.

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

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

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

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

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

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