Arduino uno схема atmega328p

Arduino uno схема atmega328p
Arduino uno схема atmega328p
Arduino uno схема atmega328p
Arduino uno схема atmega328p
Arduino uno схема atmega328p

Постоянно используя отладочные платы типа Arduino в своих проектах, рано или поздно вы придете к мысли: «- А как же удешевить свои устройства и сделать их более компактными и с меньшим количеством проводов???» Всё это происходит потому, что отладив проект на Arduino, у нас остается много не задействованных разъемов, различных выходов и интерфейсов, занимающих дополнительное место. И первое с чем обычно всем хочется разобраться, это как подсоединиться напрямую к микроконтроллеру, к какой лапке что подключить и создать свою так называемую схему взаимодействия с ним, использую только все самое необходимое в своем проекте.

Микроконтроллер ATmega328P-PU

Разбираться будем на примере микроконтроллера ATmega328P-PU, который используется во всем известной плате Arduino Uno.

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


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

 

Создаем Arduino ISP программатор из любой платы Ардуино.

В качестве программатора будем использовать плату Arduino Nano. Если у вас какая-то другая из плат Arduino, разницы нет ни какой, всё делаем так же. Подключаем плату Arduino к компьютеру. Запускаем программу Arduino IDE. В меню "Инструменты" выбираем как обычно нашу плату Ардуино и порт, с которым работаем. Открываем из примеров в программе скетч ArduinoISP "Файл" - "Примеры" - "ArduinoISP"

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

 

и загружаем его в нашу плату "Скетч" - "Загрузка".

 

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

 

Всё! Наш Arduino ISP программатор готов!

 

На заметку!!! Что такое ISP и SPI и в чем отличия! Несколькими словами это можно охарактеризовать так:

ISP - это метод внутрисхемного программирования, способ записи программы, программное обеспечение.

SPI - последовательный периферийный интерфейс, протокол, шина, стандарт обмена данными между устройствами.

 

Подключаем Arduino ISP программатор к микроконтроллеру ATmega328P-PU.

Наш микроконтроллер ATmega328P-PU DIP28 имеет 28 ножек, по 14 с каждой стороны. Собирая схему, обратим внимание на выемку с одной из сторон на корпусе микроконтроллера ATmega328P-PU, которая поможет правильно сориентироваться в нумерации лапок микроконтроллера в соответствии с приведенными ниже схемами.

Соединяем Arduino Nano с микроконтроллером ATmega328P-PU через SPI интерфейс.

Подключаем Arduino ISP программатор к микроконтроллеру ATmega328P-PU

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

Схемой распиновки микроконтроллера ATmega328P-PU

 

И схемой распиновки платы Arduino Nano.

 

схема распиновки платы Arduino Nano

 

Теперь мы видим, что пин питания 5V платы Arduino Nano мы направили к лапкам VCC и AVCC микроконтроллера. Пин GND платы Ардуино мы направили на лапки GND микроконтроллера. Таким образом, мы обеспечили полностью питанием наш микроконтроллер ATmega328P-PU. Далее соединяем пины MISO (D12), MOSI (D11), SCK (D13) платы Arduino Nano с лапками MISO, MOSI, SCK микроконтроллера ATmega328, а пин SS (D10) от Ардуино подводим к лапке reset микроконтроллера. Если вы используете другую плату Arduino в качестве ISP программатора, просто найдите схему распиновки вашей платы Arduino и определитесь, где у неё находятся пины MISO, MOSI, SCK и SS. После чего соедините их с соответствующими лапками микроконтроллера ATmega328P-PU.

 

На заметку!!!

Пины SPI интерфейса платы Arduino Mega: MISO (50), MOSI (51), SCK (52), SS (53)

Пины SPI интерфейса платы Arduino Uno: MISO (12), MOSI (11), SCK (13), SS (10)

 

Прошивка бутлоадера (загрузчика) в ATmega328P-PU через SPI интерфейс с помощью Arduino ISP программатора.

Теперь нам необходимо залить бутлоадер (загрузчик операционной системы) в наш микроконтроллер ATmega328P-PU. Для этого будем использовать Arduino загрузчик, настроенный специально для работы с внутренним кварцем на 8 МГц.

Качаем загрузчик по ссылке breadboard.zip

В программе Arduino IDE в меню "Файл" - "Настройки" смотрим (вспоминаем) свой путь к папке со скетчами. В этой папке со скетчами создаем папку hardware и разархивируем в неё архив с загрузчиком. Перезагружаем программу Arduino IDE и видим в меню "Инструменты" - "Платы" появилась строка "ATmega328 on a breadboard (8 MHz internal clock)", выбираем её.

 

Прошивка ATmega328P-PU через SPI интерфейс

 

В этом же меню "Инструменты", выбираем в списке программаторов, программатор "Arduino as ISP". Осталось записать загрузчик. Переходим "Инструменты" - "Записать загрузчик".

 

Прошивка ATmega328P-PU через SPI интерфейс

  Если не прошивается бутлоадер (загрузчик).

1. Загрузчик не всегда записывается с первого раза. Если программа Arduino IDE выдаст ошибки при записи загрузчика, необходимо просто повторно выполнить команду "Инструменты" - "Записать загрузчик", обычно со второго раза загрузчик прошивается нормально.

2. Загрузчик может так же не прошиваться, если вы делали какие-то не осмысленные действия с микроконтроллером и настройки так называемых фьюзов в итоге выставились не так как надо. В таком случае необходимо просто подключить внешний кварцевый резонатор на 16МГц к лапкам 9 и 10 микроконтроллера, имеющими обозначения на схеме распиновки в виде надписи "crystal". 

Подключение кварца к ATmega328P-PU

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

 

Загрузка скетчей в микроконтроллер ATmega328P-PU

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

Загрузка скетчей в микроконтроллер ATmega328P-PU

 

Открываем программу Arduino IDE. Создаем новый файл и копируем в него код.

void setup() { pinMode(2, OUTPUT); } void loop() { digitalWrite(2, HIGH); delay(1000); digitalWrite(2, LOW); delay(1000); }

Далее переходим в меню "Скетч" - "Загрузить через программатор".

 

Загрузить через программатор ATmega328P-PU

 

Всё! Светодиод, должен начать мигать. Именно команда "Загрузить через программатор" позволяет загрузить скетч через Arduino Nano, считая в таком случае её ISP программатором для передачи данных по SPI интерфейсу. Если же нажимать просто команду "Скетч" - "Загрузить", тогда программа будет пытаться загрузить скетч в саму Arduino Nano и при правильном выборе платы она его конечно же загрузит )).

  Схема минимальной обвязки ATmega328P-PU с внешним кварцевым резонатором на 16 МГц.

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

Схема минимальной обвязки ATmega328P-PU с внешним кварцевым резонатором на 16 МГц.

Кварцевый резонатор мы уже помним, как подсоединяется на ножки 9 и 10 микроконтроллера. А вот для обеспечения стабильной работы кварца, необходимо каждую его ножку соединить с землей через керамический конденсатор емкостью 22пФ. Так же для фильтрации ВЧ помех в нашей электрической цепи, соединим питание и землю микроконтроллера керамическим конденсатором 0.1мкФ.

Микроконтроллер работает по заданной программе, когда на ножке reset присутствует положительный сигнал. В принципе, микроконтроллер всегда сам держит вывод reset в режиме выполнения кода, но для стабильного положительного сигнала на этой линии (чтобы избежать впоследствии не стабильной работы), соединим ножку reset микроконтроллера ATmega328P-PU с положительным потенциалом нашей линии питания 5V через резистор 10 кОм.

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

Осталось залить в контроллер бутлоадер (загрузчик), предназначенный для работы с внешним кварцевым резонатором на 16 МГц. Тут все ещё проще, не надо ничего скачивать. Просто открываем программу Arduino IDE и в меню "Инструменты" - "Платы" выбираем "Arduino/Genuino Uno". То есть мы сейчас прошьем тем самым загрузчиком, которым прошит микроконтроллер в самой обычной Arduino Uno. Программатор в меню "Инструменты" остается "Arduino as ISP". Переходим в меню "Инструменты" - "Записать загрузчик".

 

Записать загрузчик в ATmega328P-PU

 

Всё! Наш аналог платы Arduino Uno своими руками готов! Можно дальше заливать скетчи через меню "Скетч" - "Загрузить через программатор" и продумывает свои будущие, более дешевые и компактные в габаритах проекты.

На заметку!!! Многие пытаются сразу перейти на работу с UART интерфейсом для загрузки последующих скетчей в микроконтроллер. UART интерфейс тема другой статьи, но тут напомним одну не стыковку. Если вы пытаетесь заливать скетчи через UART интерфейс и ничего не получается, попробуйте снова перепрошить загрузчик через SPI интерфейс, но только не заливать после этого через SPI интерфейс ни каких скетчей. То есть первый скетч после прошивки загрузчика заливайте через UART интерфейс.

 

 

 

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

JComments

Arduino uno схема atmega328p Arduino uno схема atmega328p Arduino uno схема atmega328p Arduino uno схема atmega328p Arduino uno схема atmega328p Arduino uno схема atmega328p Arduino uno схема atmega328p Arduino uno схема atmega328p Arduino uno схема atmega328p Arduino uno схема atmega328p Arduino uno схема atmega328p

Тоже читают:



Смотреть фото прически на средние

Вязание пинеток спицами малышей

Настойка болиголова схема приема

Как сделать бота для сообщества вконтакте

Журналы по вышивке по подписке