Arduino atmega328p: ATMEGA328P-PU как замена Arduino

ATMEGA328P-PU как замена Arduino

Раз уж Arduino стал практически мейнстримом, напишу обзор про микроконтроллеры ATMEGA328
Данный микроконтроллер является сердцем Arduino Uno, Nano, Pro Mini и ряда других плат.
Но Arduino — это слишком просто. Купил, подключил, загрузил программу и вот уже гордо мигает светодиод на плате. Мы же легких путей не ищем и программируем голые микроконтроллеры на ассемблере поэтому и куплены данные микросхемы. Тем кому интересно, прошу под кат.

Итак зачем все это нужно?

Ну во первых, это экономия в деньгах (Правда с ценами на Pro Mini очень сомнительная)

Во вторых, экономия места

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

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

Ну и в пятых, это ведь интересно и познавательно!

Заказал я данные микросхемы на Алиэксперсс. Лот состоит из 10 микроконтроллеров, 10 панелек для них, и 10 кварцевых резонаторов на 16МГц. Сейчас лот подорожал до $35 и купить за адекватную цену Atmegу можно разве что на Таобао.

Заказ шел целых 97 дней. Трек быстро отозвался в Китае и завис, не дойдя до России. Я успел пообщаться с продавцом, открыть спор и выиграть его, когда нежданно посылка нарисовалась в Москве. Деньги я вернул продавцу на PayPal, видимо у него где-то есть еще и магазин.

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

Подробное описание ATMEGA328 можно посмотреть на сайте atmel.com.

Буковка «P» в названии означает низкое энергопотребление, а PU-корпус DIP28, который удобно паять обычным паяльником.

Сам товар:

Контроллер с панелькой и кварцем

Как это все готовить?

Для программирования взят очень дешевый программатор USBasp за 3.Arduino atmega328p: ATMEGA328P-PU как замена Arduino 14 (Пи?) баксов.

Для простоты, используем ICSP разъем стандартной Arduino UNO


В панельку Arduino вставляем наш микроконтроллер.

Далее качаем и устанавливаем драйвер для программатора. Запускам стандартную ArduinoIDE, выбираем в меню «Сервис->Программатор->USBasp», плату ArduinoUNO и нажимаем «Записать загрузчик». После окончания процесса загрузки мы получаем контроллер, такой же как и в UNO, в который можно уже в дальнейшем заливать программы через стандартный USB Ардуины.

Далее мне захотелось использовать встроенный кварцевый резонатор на 8МГц, чтобы иметь минимум деталей на плате.

Открываем файл с описанием микроконтроллера c:\Program Files (x86)\Arduino\hardware\arduino\boards.txt

Копируем блок с Uno и правим в нм Фьюзы. Это специальные биты для настроки контроллера. Прочитать про них можно здесь. Сконфигурировать при помощи онлайн-калькулятора. Загрузив в калькулятор значения от UNO я устанавливаю стандартное значение с встроенным кварцем на 8МГц.

Затем заменяю значение в файле с описанием плат и получаю такое описание:

tmega328_8.name=Atmega328 (5V, 8 MHz internal) 

atmega328_8.upload.protocol=arduino
atmega328_8.upload.maximum_size=30720
atmega328_8.upload.speed=57600

atmega328_8.bootloader.low_fuses=0xE2
atmega328_8.bootloader.high_fuses=0xDE
atmega328_8.bootloader.extended_fuses=0x05
atmega328_8.bootloader.path=optiboot
atmega328_8.bootloader.file=optiboot_atmega328.hex
atmega328_8.bootloader.unlock_bits=0x3F
atmega328_8.bootloader.lock_bits=0x0F

atmega328_8.build.mcu=atmega328p
atmega328_8.build.f_cpu=8000000L
atmega328_8.build.core=arduino
atmega328_8.build.variant=standard

Затем в среде Arduino выбираю свой микроконтроллер и снова прошиваю загрузчик.
Все, я получил микроконтроллер, в который можно заливать скетчи на Arduino UNO плате, а затем использовать его без внешнего кварца.Arduino atmega328p: ATMEGA328P-PU как замена Arduino

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

Чтобы не соединять самому 10пинвый разъем на USBasp к 6-ти пиновому ICSP на Arduino заказал такой переходник

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

Рекомендую ли я данные микроконтроллеры — скорее нет. При цене на Arduino Pro Micro — $2.88 это не особенно целесообразно. Сейчас я бы купил Atmega8 стоимостью около 1$ или Atiny, для проектов, где не нужно возможности Atmega328.

Где я все это планирую применять?

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

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

В миниатюрном погодном датчике на аккумуляторе за окном.

В контроллере управления вентилятором на кухне и в ванной.

Да мало ли сколько еще «нужных и полезных» устройств можно сделать?

А как же мозг не вскипел все это реализовывать?

Ну конечно же был помощник

Все статьи мои статьи можно найти в моем блоге samopal.pro

Как перейти от Arduino к серийному образцу. Минимальная обвязка AtMega 328

Вот вы написали программу, и залили её в свой UNO. Всё великолепно работает, но такую громадную железку не запихнуть в миниатюрный корпус. Да и вдруг, вы хотите сделать 100 таких устройств, а зачем вам увеличение себестоимости, ведь на платах Arduino куча ненужного барахла.

Ну что же, попробуем. Для начала, как мы помним, в самых распространённых платах Nano и Mega, используется камень AtMega328P. Логично, что для его запуска, нам нужно подать питание на него. Для этого здесь достаточно много пинов VCC и GND, особенно в планарных типах корпуса.Arduino atmega328p: ATMEGA328P-PU как замена Arduino Связано это с топологией чипа на уровне производства, ведь каждый пин контроллера держит токовую нагрузку, поэтому МК должен быть запитан равномерно со всех сторон

Пин AREF отвечает за опорное напряжение АЦП, туда можно подать напряжение, относительно которого вы хотите читать результаты, или, если это будет 5в, или 2.5 от внутреннего делителя, то подтянуть конденсатором к питанию. Также, по классике, на линию питанию нужно повесить конденсаторы для сглаживанию питающего напряжения – от этого зависит стабильность микроконтроллера.

Знаете, на arduino, есть такая кнопка – Reset, от которой можно перезагрузить МК. Это такой выход i/o, на который на который вроде бы можно повесить периферию, но с большими ограничениями. Поэтому, если вам хватает ног, лучше не трогайте этот пин. Изначально он подтянут внутренним резистором, но лучше, для надёжности и стабильности сделать внешнюю подтяжку резистором 10кОм. Перезагружать готовое устройство нужды особой нет – кнопку ставить не будем.

Теперь нужно разобраться с тактированием. Arduino работает на частоте 16Мгц, т.е. от внешнего кварца. Если вы продолжаете работать на этой частоте, то этот кварц нужно установить на создаваемую плату, вместе с конденсаторами 22пФ.

Но если точность вычислений вам не сильно нужна, а хочется сэкономить в размерах, как иногда мне, то кварц можно вообще не ставить, а тактироваться от внутренней RC цепочки с 8Мгц. Как скомпилировать прошивку в arduino с другой частотой в 8Мгц, я расскажу позже. А пока рассмотрим самую важную часть – как программировать то голый микроконтроллер? Ведь usb выхода у него нет. Есть разные пути, но самый простой – использовать внутрисхемное программирование SPI. И купить дешёвый программатор USB ASP. Мой выглядит так, у него не подписаны контакты

Нарисовал удобную распиновку, если смотреть со стороны контактов. Для SPI нам важны 5 контактов, но я обычно беру и питание с программатора – MISO, MOSI, SCK, RST, GND

Также у меня лежит самодельный UsbAsp, но он громоздкий, и у него не сделан вывод 3.Arduino atmega328p: ATMEGA328P-PU как замена Arduino 3в, поэтому я его давно не использую

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

Теперь если подать питание, и подключить выводы программатора MOSI, MISO, SCK, RESET, GND то можно приступать к программированию. Как помните, из предыдущей статьи, где мы рассказали как достать HEX файл из среды Arduino, IDE делает два файла – *.hex и *with_bootloader.hex. Загрузчик нам не нужен, поэтому будем использовать обычный *.hex. Есть один нюанс – при покупке голого кристалла, он запрограммирован на RC цепочку 1Мгц. Да и вообще у atmega, есть система фьюз-битов. Выглядит это обычно не очень понятно, но конечно в среде Arduino всё это вырезано, чтоб не смущать новичков. Чтобы добраться до этих конфигураций, полезно будет скачать программу AVRDUDE. Главное окно выглядит так, здесь нужно сразу выбрать нужный МК

Переходим во вкладку Fuses – здесь, чтобы не наделать бед, а если вы запишите неправильные данные, контроллер можно превратить почти в кирпич (что не очень удобно на распаянной smd плате), я сначала СЧИТЫВАЮ биты, заодно можно убедиться в правильности подключения программатора к МК. Если всё хорошо – получаем такую картинку

Чтобы правильно выставить fuse-биты, нужно воспользоваться помощью специального калькулятора. Я пользуюсь этим. Тут также нужно выбрать чип, способ тактирования и другие параметры. В принципе для смены частоты достаточно сменить блок CKSEL фьюзов. В данном случае я выбрал Int RC – 8Mhz.

Получил картинку фьюзов.

А теперь переносим параметры в AVR DUDE, также калькулятор включает делитель на 8, бит CKDIV8, он нам не нужен. Можете пользоваться нижеприведённым скриншотом, для запуска atmega 328p на 8Мгц от внутреннего RC осциллятора.

Жмём запись – и МК принимает необходимую конфигурацию. Теперь осталось залить прошивку, но ведь она у нас рассчитана на 16Мгц, но в Arduino IDE, есть простой путь скомпилировать прошивку для atmega 328, для частоты 8Мгц.Arduino atmega328p: ATMEGA328P-PU как замена Arduino Нужно выбрать плату arduino pro, и указать частоту 8mhz

Как вы заметили, напротив чипа, стоит напряжение 3.3В при пониженной частоте – всё верно, но это не означает, что нельзя запитать кристалл от 5В. Зато от 3.3В теперь можно). Теперь после компиляции нам осталось по знакомому пути найти файл прошивки в формате HEX, и вернуться в AVR DUDE. Выбрать файл прошивки – и нажать программирование.

Всё! Вы избавились от лишней периферии Arduino, можете сделать плату в своём дизайне PCB, а прошивку использовать с вашего прототипа. В следующей статье, мы сделаем свою плату игральных костей в размере 4х4 см, чтобы упаковать в маленький корпус, и проделаем эти шаги на практике.

Запрограммируйте ATMega328P и используйте его без платы Arduino

Довольно просто использовать автономный чип Arduino. Особенность чипа, используемого для официальных плат, состоит в том, что они объединены для использования более быстрого (и более точного) внешнего генератора, установленного на плате. Это применимо даже при покупке свободных чипов, поскольку большинство из них перепроданы с намерением установить их на плату Arduino вместо сгоревшей, за исключением, возможно, чипов Digikey.

Предостережения: Arduino разработан как макетная плата, и немногие вещи делают лучше, чем в этой задаче. Возможно, вы захотите оставить чип на плате Arduino, пока не закончите проектирование и тестирование вашей схемы. Только тогда вы подключите его напрямую. Его можно использовать на месте, если у вас есть схема синхронизации, или вы можете заменить предохранители (см. Позже) и перепрограммировать Arduino с помощью адаптера ISP и тактовой частотой 8 МГц (PlatformIO позволяет вам это делать ( и позволяет напрямую импорт эскиза Arduino) — проверьте их страницу документации для плагина Atmel AVR, но вы также можете найти несколько руководств о том, как добавить файл платы в Arduino, чтобы указать ему использовать опцию 8 МГц для чистого чипа)

Если вы удалите микросхему для использования в другой цепи, то необходимо либо снова добавить схему синхронизации, либо заменить ее предохранители (я вернусь к этому через минуту).Arduino atmega328p: ATMEGA328P-PU как замена Arduino По ряду причин также будет сложно программировать, поэтому вы захотите приобрести довольно дешевое оборудование:

Программирование автономного чипа: ЦП Arduino изначально не предназначен для общения с компьютером. Вам нужен посредник. На Uno это делается с помощью второго чипа Atmel с поддержкой USB и загрузчика на основном чипе. То, что это делает, — то, что это использует UART для загрузки программы, в то время как чип USB преобразовывает сообщения ПК в сигналы UART. Поскольку загрузчик является некоторой болью, когда чип сам по себе (поскольку UART требователен и его установка настраивает чип на использование внешних часов в результате), вам нужно купить ISP-программатор для Arduino (или следуйте эскизу Arduino-as-ISP и инструкциям, чтобы создать свой собственный, который требует Arduino с чипом, так что вам потребуется секунда для программирования).

Они могут программировать ATMega 328 непосредственно через SPI, без загрузчика (в Интернете есть много инструкций; например, поиск «запрограммировать ATMega 328P без USBAsp»). Это значительно упрощает изменение и отладку вашей программы, за исключением того, что вы вытащили чип и вернулись на исходную плату Arduino. Вам также нужно изменить настройки часов, если вы не хотите использовать внешний кристалл.

Если вы хотите отладить чип, полезно также приобрести адаптер FTDI или другой конвертер USB-UART. Обратите внимание, что без части схемы сброса платы (или, опять же, добавления вашей собственной) это все равно не позволит вам программировать ATMega даже с помощью загрузчика. Для этого подключите контакты заземления, RX и TX к адаптеру. Вы можете или не можете подключать линию VCC, но рекомендуется этого не делать, если к микросхеме подключено множество устройств и / или у них есть собственный источник питания. Обратите внимание, что RX и TX необходимо поменять местами при их подключении; то есть, RX к TX и TX к RX — вы хотите, чтобы микросхема RX (принимала) то, что адаптер передает (TX) (передает), и наоборот.Arduino atmega328p: ATMEGA328P-PU как замена Arduino

Схема синхронизации не сложна, но требует нескольких компонентов, которых у вас может не быть. Итак, чтобы изменить источник синхронизации , перейдите по адресу http://www.engbedded.com/fusecalc/ и выберите ATMega 328P. Значения по умолчанию хорошие, но вы можете включить сохранение EEPROM и отключить деление тактовых импульсов на 8 или настроить параметры отключения. Больше ничего не трогайте (отключение сброса или SPI или включение DebugWire приводят к «веселью», которое требуется программисту HV). Когда закончите, вставьте команду, которую это предоставляет к команде AVRDude. Вам нужно будет изменить опции -c (-p уже настроен на ATMega 328P, но не для не-P 328s — не покупайте их) и, возможно, добавить опцию -P (для порта). Не пропускайте опцию -u в нижнем регистре, иначе будет отказано в обновлении предохранителей.

avrdude -p m328p -v -c usbasp -B 100 -u [add extras here: (-P <PORT>) <fuse set command here>]

Обратите внимание, что если вы покупаете USBASP (убедитесь, что у него три набора перемычек!), Несмотря на то, что они мои любимые программисты, у них может не быть обновленной прошивки, поддерживающей опцию -B (которая вам, вероятно, понадобится). Это означает, что вам нужно подключить его к Arduino через порт программирования с шестью контактами, точно так же, как вы будете использовать его для программирования загрузчика Arduino, но затем использовать эскиз Arduino-as-ISP для программирования нового прошивку для программиста (поиск «обновить прошивку usbasp через arduino-as-isp»)! Для справки, это обычно означает, что кабель направлен в сторону от корпуса платы, и вам, вероятно, придется программировать эскиз передподключение кабеля. Также включите перемычку питания от программатора на USBASP (5 В) и самопрограммирующуюся. (см. https://forum.arduino.cc/index.php?topic=560719.0 расположение перемычек питания и программ (JP2)).

Arduino сравнительная таблица всех плат и моделей

В этом материале мы приводим сравнительные таблицы основных характеристик всех плат и моделей Ардуино, от начальных до профессиональных.Arduino atmega328p: ATMEGA328P-PU как замена Arduino Данный материал можно сохранить в закладки, т.к. часто требуется подобрать плату под требования конкретного проекта.

Начинающий уровень

Основные платы и модули для начинающих.

Платы

Arduino Uno Rev 3Arduino LeonardoArduino 101
МикроконтроллерATmega328PATmega32u4Intel Curie
Рабочее напряжение5 V5 V3.3 V (5 V tolerant I/O)
Входное напряжение (Рекомендуемое)7-12 V7-12 V7-12 V
Входное напряжение (Ограничение)6-20 V6-20 V7-17 V
Цифровые (I/O) Пины14 (4 for PWM Output)2014 (4 for PWM Output)
PWM Цифровые (I/O) Пины674
Аналоговый вход Пины6126
Аналоговый вход Каналы4 из Цифровые I/O Пины
Аналоговый вход Каналы8
Постоянный ток на I/O Пин20 mA40 mA20 mA
Постоянный ток для 3.3 V Пин50 mA50 mA
Флэш-память32 KB (.5 KB для загрузчика)32 KB (4 KB для загрузчика)196 KB
SRAM2 KB2.5 KB24 KB
EEPROM1 KB1 KB
Тактовая частота16 MHz16 MHz32 MHz
LED встроенные1313
BluetoothBluetooth LE
Дополнительно6 осевой акселерометр / гироскоп
Длина68.6 mm68.6 mm68.6 mm
Ширина53.4 mm53.3 mm53.4 mm
Вес25 g20 g34 g

Платы (продолжение)

Arduino RobotArduino Esplora
МикроконтроллерATmega32u4ATmega32u4
Рабочее напряжение5 V5 V
Входное напряжение (Рекомендуемое)5 V through flat cable
Постоянный ток на I/O Пин40 mA
Флэш-память32 KB (4 KB для загрузчика)32 KB (4 KB для загрузчика)
SRAM2.Arduino atmega328p: ATMEGA328P-PU как замена Arduino 5 KB
EEPROM1 KB internal, 312 Kbit(12 C) external
Тактовая частота16 MHz16 MHz
Дополнительно* Keypad — 5 Keys
* Knob — potentiometer attached to analog Пин
* Full Color LCD — over SPI connection
* SD Reader — for FAT16 formatted cards
* Speaker — 8 Ohm
* Цифровой Компас — отклонение от севера в градусах
* I2C Soldering Ports — 2
* Prototypings Areas — 4
Длина164.04 mm
Ширина60 mm
Радиус185 mm
Height85 mm
Вес53 g

Модули

Arduino MicroArduino NanoArduino Mini
МикроконтроллерATmega32u4ATmega32uATmega32u
Рабочее напряжение5 V5 V5 V
Входное напряжение (Рекомендуемое)7-12 V7-12 V7-9 V
Входное напряжение (Ограничение)6-20 V7-12 V7-9 V
Цифровые (I/O) Пины202214 (6 for PWM Output)
PWM Цифровые (I/O) Пины6
PWM Каналы7
Аналоговый вход Пины8 (4 broken out onto Пины)
Аналоговый вход Каналы12
Постоянный ток на I/O Пин20 mA40 mA40 mA
Постоянный ток для 3.3 V Пин50 mA
Флэш-память32 KB (4 KB для загрузчика)32 KB (2 KB для загрузчика)32 KB (2 KB для загрузчика)
SRAM2.5 KB2 KB2 KB
EEPROM1 KB1 KB1 KB
Тактовая частота16 MHz16 MHz16 MHz
LED встроенные13
Дополнительно* AVR Architecture
* Power Consumption — 19 mA
Длина48 mm30 mm
Ширина18 mm18 mm
Вес13 g7 g

Улучшенные функции

Ниже сравнительная таблица плат Ардуино с улучшенным функционалом.Arduino atmega328p: ATMEGA328P-PU как замена Arduino

Платы

Arduino Mega 2560 Rev 3Arduino ZeroArduino Due
МикроконтроллерATmega2560ATSAMD21G18, 32-Bit ARM Cortex MO+AT91SAM3X8E
Рабочее напряжение5 V3.3 V3.3 V
Входное напряжение (Рекомендуемое)7-12 V7-12 V
Входное напряжение (Ограничение)6-20 V6-16 V
Цифровые (I/O) Пины54 (15 for PWM Output)2054 (12 for PWM Output)
PWM Цифровые (I/O) Пины6All but Пины 2 and 7
External InterruptsAll Пины Except Пин 4
Аналоговый вход Пины66, 12-bit ADC Каналы12
Analog Output Пины1, 10-bit DAC2 (DAC)
Постоянный ток на I/O Пин20 mA7 mA130 mA (Total on all I/O lines)
Постоянный ток для 3.3 V Пин50 mA800 mA
Постоянный ток для 5 V800 mA
Флэш-память256 KB (8 KB для загрузчика)256 KB512 KB for user applications
SRAM8 KB32 KB96 KB (two banks: 64 KB and 32 KB)
EEPROM4 KBNone
Тактовая частота16 MHz48 MHz84 MHz
LED встроенные1313
Длина101.52 mm68 mm101.52 mm
Ширина53.3 mm30 mm53.3 mm
Вес37 g12 g36 g

Платы (продолжение)

Arduino ProArduino M0Arduino M0 Pro
МикроконтроллерATmega328ATSAMD21G18, ARM Cortex-MO+, 48Пины LQFPATSAMD21G18, ARM Cortex-MO+, 48Пины LQFP
Рабочее напряжение3.Arduino atmega328p: ATMEGA328P-PU как замена Arduino 3 V3.3 V
Входное напряжение5-15 V5-15 V
Board Power Supply3.35 — 12 V (3.3 V model) or 5-12 V (5 V model)
Circuit Рабочее напряжение3.3 V or 5 V (depending on model)
Цифровые (I/O) Пины1420, with 12 PWM and UART20
PWM Пины6
PWM Output1212
Аналоговый вход Пины6
External Interrupts2
Аналоговый вход Каналы12
Analog I/O Пины6 +1 DAC6 +1 DAC
Постоянный ток на I/O Пин40 mA7 mA (I/O Пины)7 mA (I/O Пины)
Флэш-память32 KB (2 KB для загрузчика)256 KB256 KB
SRAM2 KB32 KB32 KB
EEPROM1 KB
Тактовая частота8 MHz (3.3 V version) or 16 MHz (5 V version)48 MHz48 MHz
LED встроенные1313
Power Consumption29 mA44 mA
Дополнительно* UART — 1

* SPI — 1

* I2C — 1

Длина68.5 mm68.5 mm
Ширина53 mm53 mm
Вес21 g22 g

Модули

Arduino MKRZeroArduino Pro Mini
МикроконтроллерSAMD21 Cortex-MO +32bit low power ARM MCUATmega328
Рабочее напряжение5 V
Board Power Supply5 V (USB/VIN)3.35 — 12 V (3.3 V model) or 5-12 V (5 V Model)
Supported BatteryLi-Po single cell, 3.Arduino atmega328p: ATMEGA328P-PU как замена Arduino 7 V, 700mAh minimum
Circuit Рабочее напряжение3.3 V3.3 V or 5 V (depending on model)
Цифровые (I/O) Пины2214
PWM Пины12 (0,1,2,3,4,5,6,7,8,10, A4 — or 18 -, A4 -or 19)6
UART11
SPI11
I2C11
PWM Каналы6
Аналоговый вход Пины7 (ADC 8/10/12 bit)
Analog Output Пины1 (DAC 10 bit)
External Interrupts8 (0, 1, 4, 5, 6, 7, 8, A1 — or 16 -, A2 — or 17)2
Постоянный ток на I/O Пин7mA40 mA
Флэш-память256 KB (8 KB для загрузчика)32 KB (2 KB для загрузчика)
SRAM32 KB2 KB
EEPROMnone1 KB
Тактовая частота32.768 kHz (RTC), 48 MHz8 MHz (3.3 V version) or 16 MHz (5 V version)
LED встроенные32
Дополнительно*Full-Speed USB Device with Embedded Host

Интернет вещей

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

Платы

Arduino YUNArduino EthernetArduino TIAN
AVR МикроконтроллерARM Микроконтроллер
МикроконтроллерATmega32U4ATMega328SAMD21G18, ARM Cortex-MO+
Рабочее напряжение5 V5 V3.3 V
Входное напряжение5 V
Входное напряжение Plug (Рекомендуемое)7 -12 V
Входное напряжение Plug (Ограничениеs)6 — 20 V
Входное напряжение PoE (Ограничениеs)36 — 57 V
Цифровые (I/O) Пины2014 (4 for PWM output)
PWM Output7
Analog I/O Пины126
Аналоговый вход Пины6
Analog Output Пины1, 10-bit DAC
Постоянный ток на I/O Пин40 mA on I/O Пины; 50 mA on 3.Arduino atmega328p: ATMEGA328P-PU как замена Arduino 3 Пин40 mA7 mA (I/O Пины)
Постоянный ток для 3.3 V Пин50 mA
Флэш-память32 KB (4 KB для загрузчика)32 KB (.5 для загрузчика)
SRAM2.5 KB2 KB
EEPROM1 KB1 KB
Тактовая частота16 MHz16 MHz48 MHz
LED встроенные1313
BluetoothCSR8510, Bluetooth with EDR / BLE 4.0
Длина101.52 mm68.6 mm68.5 mm
Ширина53.3 mm53.3 mm53 mm
Вес37 g28 g36 g
MicroprocessorMicroprocessor
ProcessorAtheros AR9331Atheros AR9342
ArchitectureMiPSMiPS
Рабочее напряжение3.3 V3.3 V
Ethernet802.3 10/100 Mbit/s802.3 10/100/1000 Mbits/s
WiFi8.02.11b/g/n 2.4 GHz802.11 b/g/n 2.4 GHz dual-band
USB Type2.0 Host2.0 Host
Card ReaderMicro-SD
RAM64 MB DDR264 MB DDR2
Флэш-память16 MB16 MB + 4 GB eMMC
SRAM2.5 KB
EEPROM1 KB
Тактовая частота400 Mhz560 MHz

Платы (продолжение)

Arduino Industrial 101Arduino Leonardo ETHArduino MKRFOX 1200
AVR МикроконтроллерAVR Микроконтроллер
МикроконтроллерATmega32u4ATmega32u4SAMD21 Cortex-MO+ 32bit low power ARM
Рабочее напряжение5 V5 V
Входное напряжение5 V7-12 V5-15 V
Board Power Supply5 V (USB/VIN)
Supported Batteries2 x AA or AAA
Circuit Рабочее напряжение3.Arduino atmega328p: ATMEGA328P-PU как замена Arduino 3 V
Цифровые (I/O) Пины20 (7 exported on header)208
PWM Пины12 (0,1, 2, 3, 4, 5, 6, 7, 8, 10, A3 — or 18, A4 — or 19)
PWM Output7 (2 exported on header)712
UART1
SPI1
I2C1
Аналоговый вход Пины7 (ADC 8/10/12 bit)
Analog Output Пины1 (DAC 10 bit)
External Interrupts8 (0, 1, 4, 5, 6, 7, 8, A1 — or 16 -, A2 — or 17)
Analog I/O Пины12 (4 exported on header)12
Постоянный ток на I/O Пин40 mA40 mA on I/O Пины; 1A on 3.3 V Пин only when powered via external power supply7 mA
Флэш-память32 KB (4 KB для загрузчика)256 KB
SRAM2.5 KB2.5 KB32 KB
EEPROM1 KB1 KBno
Тактовая частота16 MHz16 MHz32.768 kHz (RTC),  48 MHz
LED встроенные6
Power Consumption29 mA
Дополнительно* GPIO — Exported on headers
* DogOLED — 1 Exported on headers
* Цифровые I/O Пины — 36-57 V
* 4 used SD Card Select; 10 used for W550 Select
* Card Reader — Micro SD Card, with active voltage translators
* Full-speed USB Device and Embedded Host
* Antenna — 2 dB
* Carrier Frequency — 868 MHz
* Working Region — EU
Длина51 mm68.58 mm67.64 mm
Ширина42 mm53.34 mm25 mm
Вес.0012 Kg28 g32 g
Microprocessor
ProcessorAtheros AR9331802.Arduino atmega328p: ATMEGA328P-PU как замена Arduino 3
ArchitectureMIPS
Рабочее напряжение3.3 V
Флэш-память16 MB
RAM64 MB DDR2
Тактовая частота400 MHz
WiFi802.11  b/g/n 2.4 GHz
Ethernet802.3 10/100 Mbit/s (Exported on headers)802.3 10/100 Mbit / s
USB2.0 Host (Exported on headers)

Модули

Arduino MKR1000Arduino YUN Mini
AVR Микроконтроллер
МикроконтроллерSAMD21 Cortex-MO +32bit low power ARM MCUATmega32u4
Рабочее напряжение5 V
Board Power Supply5 V (USB/VIN)
Supported BatteryLi-Po single cell, 3.7 V, 700mAh minimum
Circuit Рабочее напряжение3.3 V
Цифровые (I/O) Пины820
PWM Пины12 (0,1,2,3,4,5,6,7,8,10, A3 — or 18 -, A4 -or 19)
UART1
SPI1
I2C1
PWM Output7
Power Consumption170 mA
Аналоговый вход Пины7 (ADC 8/10/12 bit)
Analog Output Пины1 (DAC 10 bit)
Analog I/O Пины12
External Interrupts8 (0, 1, 4, 5, 6, 7, 8, A1 — or 16 -, A2 — or 17)
Постоянный ток на I/O Пин7mA40 mA on I/O Пины; 50 mA on 3.3 V Пин
Флэш-память256 KB32 KB
SRAM32 KB2.5 KB
EEPROMnone1 KB
Тактовая частота32.Arduino atmega328p: ATMEGA328P-PU как замена Arduino 768 kHz (RTC), 48 MHz
LED встроенные6
Длина61.5 mm71.1 mm
Ширина25 mm23 mm
Вес32 g16 g
Microprocessor
ProcessorAtheros AR9331
ArchitectureMIPS 24 K processor operating at up to 400 MHz
Рабочее напряжение3.3 V typ.380 mA (113~570 mA)
Флэш-память16 MB
RAM64 MB DDR2
Тактовая частота400 MHz
WiFi802.11 b/g/n 2.4 GHz
Ethernet802.3 10/100 Mbit/s
USB2.0 Host

Переносные электронные устройства

Ниже сравнительные таблицы, так называемых, переносных электронных устройств.

Платы

Arduino GemmaLilypad Arduino USBLilypad Arduino Main Board
МикроконтроллерATtiny85ATMega32u4ATmega168 or ATmega328V
Рабочее напряжение3.3 V3.3 V2.7 V — 5.5 V
Входное напряжение4 V — 16 V3.8 V — 5 V2.7 V — 5.5 V
Цифровые (I/O) Пины3914
PWM Каналы246
Аналоговый вход Каналы146
Постоянный ток на I/O Пин20 mA40 mA40 mA
Absorption9 mA while running
Флэш-память8 KB (2.75 KB для загрузчика)32 KB (4 KB для загрузчика)16 KB (2 KB для загрузчика)
SRAM512 KB2.5 KB1 KB
EEPROM512 KB1 KB512 KB
Тактовая частота8 MHz8 MHz8 MHz
LED встроенные1
Диаметр27.Arduino atmega328p: ATMEGA328P-PU как замена Arduino 94 mm50 mm

Платы (продолжение)

Lilypad Arduino SimpleLilypad Arduino Simple Snap
МикроконтроллерATmega328ATmega328
Рабочее напряжение2.7 V — 5.5 V2.7 V — 5.5 V
Входное напряжение2.7 V — 5.5 V2.7 V — 5.5 V
Цифровые (I/O) Пины99
PWM Каналы55
Аналоговый вход Каналы44
Постоянный ток на I/O Пин40 mA40 mA
Флэш-память32 KB (2 KB для загрузчика)32 KB (2 KB для загрузчика)
SRAM2 KB2 KB
EEPROM1 KB1 KB
Тактовая частота8 MHz8 MHz
Диаметр50 mm50 mm
Радиус18 mm

Сводная таблица

Эта сводная таблица показывает сравнение характеристик всех плат Arduino и Genuino.

НазваниеПроцессорРабочее/входное напряжениеСкорость процессораАналоговый Вход/выходЦифровые IO/PWMEEPROM [kB]SRAM [kB]Flash [kB]USBUART
101Intel® Curie3.3 V/ 7-12V32MHz6/014/424196Regular
GemmaATtiny853.3 V / 4-16 V8 MHz1/03/20.50.58Micro0
LilyPadATmega168VATmega328P2.7-5.5 V /2.7-5.5 V8MHz6/014/60.512116
LilyPad SimpleSnapATmega328P2.Arduino atmega328p: ATMEGA328P-PU как замена Arduino 7-5.5 V /2.7-5.5 V8 MHz4/09/41232
LilyPad USBATmega32U43.3 V / 3.8-5 V8 MHz4/09/412.532Micro
Mega 2560ATmega25605 V / 7-12 V16 MHz16/054/1548256Regular4
MicroATmega32U45 V / 7-12 V16 MHz12/020/712.532Micro1
MKR1000SAMD21 Cortex-M0+3.3 V/ 5V48MHz7/18/432256Micro1
ProATmega168 ATmega328P3.3 V / 3.35-12 V5 V / 5-12 V8 MHz 16 MHz6/014/60.512 11 216 321
Pro MiniATmega328P3.3 V / 3.35-12 V5 V / 5-12 V8 MHz 16 MHz6/014/612321
UnoATmega328P5 V / 7-12 V16 MHz6/014/61232Regular1
ZeroATSAMD21G183.3 V / 7-12 V48 MHz6/114/10322562 Micro2
DueATSAM3X8E3.3 V / 7-12 V84 MHz12/254/12965122 Micro4
EsploraATmega32U45 V / 7-12 V16 MHz12.532Micro
EthernetATmega328P5 V / 7-12 V16 MHz6/014/41232Regular
LeonardoATmega32U45 V / 7-12 V16 MHz12/020/712.Arduino atmega328p: ATMEGA328P-PU как замена Arduino 532Micro1
Mega ADKATmega25605 V / 7-12 V16 MHz16/054/1548256Regular4
MiniATmega328P5 V / 7-9 V16 MHz8/014/61232
NanoATmega168ATmega328P5 V / 7-9 V16 MHz8/014/60.5121121632Mini1
YùnATmega32U4AR9331 Linux5 V16 MHz400MHz12/020/712.516MB3264MBMicro1
Arduino RobotATmega32u45 V16 MHz6/020/61 KB (ATmega32u4)/512 Kbit (I2C)2.5 KB(ATmega32u4)32 KB (ATmega32u4) of which5 KB used by bootloader11
MKRZeroSAMD21Cortex-M0+32bit low powerARM MCU3.3 V48 MHz7 (ADC 8/10/12 bit)/1(DAC 10 bit)22/12No32 KB256 KB11

Спецификации плат, которые больше не выпускаются.

НазваниеПроцессорРабочее/входное напряжениеСкорость процессораАналоговые вход/выходЦифровые IO/PWMEEPROM [kB]SRAM [kB]Flash [kB]USBUART
BTATmega328P5 V / 2.5-12 V16 MHz6/014/612321
FioATmega328P3.3 V / 3.7-7 V8 MHz8/014/61232Mini1


Ардуино и микросхемы | Arduino UNO R3 Mega328P-AU Ch440G


Плата микроконтроллера «UNO R3 ATmega328P-AU» —  это 3-я версия хорошо знакомого нам контроллера от ARDUINO.Arduino atmega328p: ATMEGA328P-PU как замена Arduino  Главное отличие от предыдущих версий состоит в замене микросхемы-преобразователя от фирмы «FTDI» FT232RL на чип «Ch440G» с ещё большим функционалом. AVR-микроконтроллер используется той же фирмы ATMEL: ATMega328P-AU в корпусе «TQFP32». На сегодня это самый надежный и распространённый контроллер с достаточным функционалом для любителей «Умного Дома».


Устройство продается в комплекте с USB-кабелем для подключения к компьютеру. Также необходимо приобрести адаптер питания  с выходом на 9 вольт и нагрузкой 900мА. При выборе адаптера следует учесть, разъем на плате контроллера имеет диаметр 2,1мм с плюсом в центре. Или можно использовать «DC-DC конвертер с питанием от батарейки. Подключить преобразователь надо к пину «Vin».


На нашем сайте в разделе «Библиотека файлов» Вы можете скачать SOFT от ARDUINO для программирования в MAC OSX 10.7 (и выше) или в WINDOWS (любая версия). Программа находится в свободном доступе.


При подключении устройства инициализируется виртуальный COM-порт. Т.е. контроллер использует последовательный интерфейс (SPI) передачи данных.


Контроллер можно программировать с помощью отдельного программатора, например «USBASP ISP», который подключается к разъёму ISCP. С описанием дополнительных функций, который предоставляет этот программатор можно ознакомиться в отдельной статье на нашем сайте.


Данная плата имеет 14 цифровых выводов (DO) с обозначением на плате D0-D13. Через Цифровые выводы можно генерировать ШИМ-сигнал. Т.е. можно управлять сервоприводами и т.п. Цифровые порты программируются на вход или выход программой ARDUINO от потребности.


И есть 6 вводов для подключения устройств с аналоговыми сигналами. Обозначаются на плате А0-А5. В отличие от цифровых портов аналоговые могут работать только на вход сигнала. Питание на аналоговых портах должно быть 5 вольт относительно GND.


Функционал цифровых портов схож с портами на плате контроллера «NANO V3.Arduino atmega328p: ATMEGA328P-PU как замена Arduino



10-SS,


11-MOSI (ввод данных тактирования),


12-MISO (вывод данных тактирования),


13-SCK (SPI)


На плате контроллера есть два светодиода для визуализации процесса передачи данных, подсоединенные к пинам:


0  ТХ -(вывод данных)


1  RX — (ввод данных)



Обратите внимание, что выводы «5V» и «3.3V» предназначены для питания устройств и использовать их для питания платы контроллера НЕ рекомендуется.


При подключении устройств ВАЖНО помнить, что предельно допустимый ток на одном выводе НЕ должен превышать 40мА, на всей группе (цифровой или аналоговой) суммарный ток НЕ должен быть выше 100мА. Получается, что суммарный ТОК НАГРУЗКИ ДОЛЖЕН БЫТЬ НЕ БОЛЕЕ 200мА!


Статья для ЯБЛОЧНИКОВ!


Часто обращаются с таким вопросом: не хочет «ARDUINO CC» видеть данную плату. Хочу ниже описать процесс подключения к моему MACBOOK PRO, на котором установлена последняя версия MAC «OS X El Capinan 10.11.2» — может кому-то и пригодиться!


Итак; подключив через USB-кабель Ардуинку к своему ноуту, я запустил программу-оболочку «Arduino» — и обнаружил, что:


1)  СВЕТОИОД питания светиться


2) Индикатор состояния (светодиод) моргает в штатном режиме


3) Оболочка НЕ определяет Serial port


4) Система OSX не видит устройство (плату контроллера) — даже нет USB-порта.


Вот такая вводная встала передо мною.


Вопрос я решил следующим образом.


Первый этап — Сначала надо было решить вопрос с виртуальным СОМ-портом в самой Маковской системе. Но нужен не просто эмулятор, а такой, который был бы совместим с адаптером «Ch440G». Такой драйвер вскоре нашелся и скачать его можно из раздела «Библиотека файлов». Или на вкладке «Файлы».Перед установкой драйвера я советую отключить Плату от разъема! После установки Система попросит перезагрузку. После перезагрузки мы можем проверить, что у нас получилось. А получилось вот что: подключив плату, мы заходим в Диспетчер Устройств, т.е. нажимаем на «Яблоко» — далее «Об этом Мас» -«Отчет о системе». Находим вкладку «USB» и мы увидим, что в «Структуре USB» появился наш пунктик: «Шина USB3.0».


После подключения «платы» появится нужный нам пункт «USB2.0 Serial». Т.е. мы получили виртуальный СОМ-порт. И система определила самоё устройство. Осталось дело за малым!


Второй этап: когда вопрос с интеграцией нужного нам виртуального порта в систему решен, остается найти драйвер, с которым будет работать MAC OS. На нашей плате контроллера установлен ЧИП «Ch440G». Скачиваем драйвер из «Библиотеки файлов» или из Инета для этого ЧИПА и устанавливаем. Опять же предварительно отключаем нашу плату от USB-разъема. Система опять попросит перезагрузку. После перезагрузки подключаем «Плату контроллера» к USB-разъему и запускаем оболочку «Arduino». Далее открываем закладку «Инструменты» («Tools») и там должен появиться Последовательный порт «.1410» !!


Все. Далее можно писать свои проекты.

Чем отличаются друг от друга ATmega328, ATmega328P, ATmega328PU? | avr

Компания Atmel применяет довольно неудобную систему именования чипов AVR, которая часто приводит в недоумение даже опытных пользователей. Бывает трудно понять, с какой именно маркировкой следует использовать кристалл для разработки, если имеется несколько на первый взгляд незначительно отличающихся вариантов. В этой статье сделана попытка обобщить различия между ATmega328, ATmega328P, ATmega328PU.


1. Для обычных применений нет никакой разницы между Atmega328P и Atmega328. Так что можно просто заменить ATmega328 на ATmega328P или наоборот.

2. Atmega328P меньше потребляет энергии, чем Atmega328 (в чем можно убедиться, если посмотреть таблицы параметров даташита). Это означает, что для Atmega328P использовался более точный техпроцесс (60 нм у ATmega328P против 90 нм у ATmega328), и обычно эти чипы дороже. Микроконтроллеры AVR, которые меньше потребляют, обладают по терминологии Atmel классификацией PicoPower. Таким образом, в устройствах с батарейным питанием предпочтительнее использовать ATmega328P, и задействовать у них специальные режимы управления питанием с целью снижения энергопотребления.

3. Сигнатуры чипа для Atmega328P и Atmega328 отличаются. Так что если используются программы, читающие сигнатуру чипа (наподобие утилиты программирования avrdude в составе Arduino IDE), то Вы можете встретиться с сообщениями об ошибке, если неправильно укажете тип микроконтроллера.

4. Корпус микроконтроллера типа TQFP32 доступен только для Atmega328P, и его нет для Atmega328. Возможно это связано с тем, что толщина кристалла Atmega328 больше, и он не помещается в корпус TQFP32.

5. В Atmega328 нет фьюза для запрета детектора некачественного питания (Brown-out Detector, BOD). В Atmega328P этот фьюз есть, что позволяет дополнительно уменьшить энергопотребление, если отключить BOD.

Фьюз BOD имеется только в AVR с технологией picoPower ATmega48PA, ATmega88PA, ATmega168PA, ATmega328P. Фьюзы BODS и BODSE имеются только в AVR с технологией picoPower ATmega48PA, ATmega88PA, ATmega168PA, ATmega328P.

6. Есть незначительные отличия в системе команд, относящиеся к инструкциям перехода. Если компилировать для чипа ATmega328, то программа будет одинаково работоспособна и на ATmega328, и на ATmega328P.




МнемоникаОперандыОписаниеОперацияДействие на флаги# циклов
JMPadrПрямой переход по адресуPC ← adrнет3
CALLadrПрямой вызов подпрограммы по адресуPC ← adrнет4

Примечание: эти инструкции имеются только в ATmega168PA и ATmega328P.

7. Суффикс PU обозначает тип корпуса кристалла — пластиковый DIP28 (PDIP), это не имеет никакого отношения к суффиксу P. Т. е. ATmega328PU это просто ATmega328 в корпусе PDIP28.

[Суффиксы -PU, -AU, -MU]

Эти суффиксы обозначают тип корпуса микроконтроллера. PU соответствуют пластиковому DIP (PDIP), AU пластиковому TQFP, MU пластиковому QFN.



ATmega328-PU, корпус PDIP28ATmega328P-AU, корпус TQFP32

ATMega328 в Arduino без кварца

На большинстве плат ARDUINO с микроконтроллером ATMega238P установлен кварцевый резонатор 16 MHz. Микроконтроллер ATMega238P может работать на любой частоте вплоть до 16 МГц, в том числе и с внутренним RC-генератором на частоте 8 MHz.

Микроконтроллер ATMega238P полноценно может быть запрограммирован в среде Arduino IDE будучи настроенным на частоту 8 МГц с внутренним RC-генератором.

Приведём пример превращения Arduino UNO с микроконтроллером ATMega238P работающем на частоте 16 МГц в Arduino с микроконтроллером ATMega238P работающем на частоте 8 МГц без кварцевого резонатора. Наметим план работ:

  1. Прописать в файле конфигурации Arduino IDE (boards.txt) параметры платы Arduino с ATMega238P на 8 МГц.
  2. Подключить к плате Arduino UNO программатор USBasp.
  3. Записать в плату Arduino UNO загрузчик, способный работать на микроконтроллере с частотой 8 МГц.
  4. Проверить работоспособность изделия (Arduino с ATMega238P на 8 МГц).

Файл boards.txt можно найти в папке /arduino-1.8.12/hardware/arduino/avr вашего дистрибутива Arduino IDE. Допишем в этот файл следующие строки:

##############################################################

dior.name=Arduino 328P 8MHz int

dior.upload.tool=avrdude
dior.upload.protocol=arduino
dior.upload.maximum_size=30720
dior.upload.maximum_data_size=2048
dior.upload.speed=57600

dior.bootloader.tool=avrdude
dior.bootloader.low_fuses=0xE2
dior.bootloader.high_fuses=0xDA
dior.bootloader.extended_fuses=0xFD
dior.bootloader.file=atmega/ATmegaBOOT_168_atmega328_pro_8MHz.hex
dior.bootloader.unlock_bits=0x3F
dior.bootloader.lock_bits=0x0F

dior.build.mcu=atmega328p
dior.build.f_cpu=8000000L
dior.build.board=AVR_FIO
dior.build.core=arduino
dior.build.variant=eightanaloginputs

Подключим к плате Arduino пока ещё UNO программатор USBasp. На плате Arduino UNO есть разъём ICSP 6 pin а на программаторе USBasp разъём 10 pin. Если нет переходника, подключаем по схеме:

Запускаем Arduino IDE и в меню Инструменты / Плата выбираем плату «Arduino 328P 8MHz int». В меню Инструменты / Программатор выбираем «USBasp». Записываем загрузчик — меню Инструменты / Записать загрузчик. Одновременно с записью загрузчика в микроконтроллер будут записаны фьюзы L:0xE2 H:0xDA E:0xFD

Теперь микроконтроллер может работать без платы Ардуино, а программировать его можно всё так же на плате Ардуино в программе Ардуино.

ATmega328P Standalone Board — Arduino Project Hub

ATmega328P Минимальная конфигурация

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

Первым основным компонентом является микросхема ATmega328P, которая является мозгом платы. Стабилизатор напряжения, который регулирует входное напряжение до чистого выхода 5 В, который используется в основном микросхемой ATmega320p.Кварцевый генератор 16 МГц, который создает электрический сигнал заданной частоты. Он просто считает секунды, поэтому вам не нужно это делать. Некоторые светодиоды, чтобы убедиться, что плата работает без сбоев и все еще жива. DC Plug позволяет подключать плату к источнику постоянного тока. USB-порт позволяет подключить плату к компьютеру. Некоторые штыревые заголовки для связи с внешним миром (датчики, двигатели, светодиоды, …) через некоторые перемычки.

Зная основные компоненты, используемые в плате Arduino UNO, мы можем сделать ее, используя те же основные компоненты, которые мы указали ранее, которые называются минимальной конфигурацией ATmega328P.

Схема

Схема соединений

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

ATmega328P работает при напряжении 5 В, которое должно быть хорошо отрегулировано без скачков напряжения, поэтому мы используем конденсатор на 10 мкФ между линией питания 5 В. Для того, чтобы ATmega328p работал, вы должны подать ВЫСОКОЕ логическое значение «5V» на вывод «сброса».

Вывод «Reset» является активным выводом низкого уровня, что означает, что если вы применили к нему логическое значение LOW «0V», он перезапустит микросхему. Поэтому мы оставляем его ВЫСОКИМ, чтобы отключить его.

Обычно микросхема ATmega328P работает на кварцевом генераторе 16 МГц, размещенном на контактах 9 и 10, но для того, чтобы заставить его колебаться, ему нужны два конденсатора 22 пикофарад, подключенные к заземлению.

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

Схема

Плата Cairoduino V1.0

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

  • Разъем питания постоянного тока для простого и быстрого подключения платы к источнику питания.
  • L7805 стабилизатор напряжения, поэтому вы можете подключить его к любому источнику питания в диапазоне от 7 В до 12 В, а микросхема L7805 будет регулировать это напряжение и подавать микросхему ATmega328p хорошо стабилизированное напряжение 5 В.Разница между входным и выходным напряжениями выражается в виде тепла.
  • Кнопка сброса, чтобы можно было легко сбросить плату в случае любого неправильного поведения.
  • светодиодный индикатор питания как индикатор, который сообщает пользователю, подключена ли плата к источнику питания или нет.
  • Выключатель.
  • -контактные разъемы, позволяющие пользователю легко подключать к плате любые электронные компоненты, такие как датчики, светодиоды, переключатели … с помощью некоторых перемычек, как любая плата Arduino.
  • Коммутационная плата FTDI, чтобы можно было подключить плату к ноутбуку, чтобы вы могли легко программировать и загружать на нее код, не удаляя сам чип ATmega.

Производство печатных плат

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

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

Вы можете заказать свою собственную плату Cairoduino на PCBWay всего за два клика. по этой ссылке. PCBWay

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

Загрузка загрузчика в чип

Чтобы использовать Arduino IDE для программирования чипа, нам нужно записать загрузчик на чип Atmega.На этом этапе нам понадобится плата Arduino UNO, которую мы будем использовать в качестве программатора, подключив выводы MOSI, MISO, SCK между микросхемой ATmega328p и платой Arduino UNO.

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

После подключения микросхемы ATmega к плате Arduino нам нужно открыть Arduino IDE -> Файл -> Примеры -> ArduinoISP -> ArduinoISP

Затем установите для программатора Arduino как ISP.Инструменты -> Программист -> Arduino как ISP.

Теперь пора записать загрузчик, Инструменты -> Записать загрузчик.

Коммутационная плата FTDI

Как мы заявляли ранее, мы используем модуль FTDI для подключения платы Cairoduino к ноутбуку, чтобы мы могли программировать и загружать на него код, также вы можете отправлять, читать некоторые вещи назад и вперед на серийный номер Монитор через установленную последовательную связь.

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

Светодиод мигает

Давайте попробуем загрузить код приветствия мира на доску, чтобы увидеть, ведет ли он себя должным образом или нет. откройте Arduino IDE -> Примеры -> Основы -> Blink

. После подключения платы к ноутбуку и нажатия кнопки загрузки вы должны увидеть встроенный светодиод, подключенный к контакту 13, мигающий каждую 1 секунду. Если вы хотите узнать больше о том, как работает мигание светодиода, вы можете проверить это руководство, которое мы опубликовали ранее.Светодиодный индикатор Arduino мигает

Если вам нравится этот контент, посетите наш веб-сайт для получения дополнительных проектов с открытым исходным кодом и руководств.

========================== Makesomestuff.org =================== ======

Программирование микроконтроллера Atmega328p с Arduino IDE

Введение

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

Микроконтроллер Atmega328p

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

Микроконтроллер Atmega328p, как и любой другой микроконтроллер, может оказаться довольно сложной задачей для новичка. Обычно они требуют определенного набора инструментов, включая программатор (оборудование) и платформу разработки (например, Atmel Studio) для написания кода. Эти платформы разработки, в отличие от Arduino IDE, обычно требуют высоких знаний C или других языков программирования, без ярлыков и упрощенных функций, которые предоставляет Arduino.

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

Чтобы запрограммировать микроконтроллер с помощью Arduino IDE, микроконтроллер должен быть подключен к компьютеру через какое-то оборудование. Обычно это делается двумя основными способами:

  1. Использование переходника USB — последовательный / TTL
  2. Использование платы Arduino

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

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

Использование переходника USB — последовательный / TTL

Адаптер USB-to-Serial / TTL

Первый подход предполагает подключение адаптера USB-to-Serial к микроконтроллеру. Адаптер USB к последовательному / TTL преобразует сигналы данных с USB на компьютере в последовательный / TTL для микроконтроллера и наоборот. Это обеспечивает связь микроконтроллера (последовательного интерфейса) с Arduino IDE, работающей на ПК (USB). Эта установка по сравнению со вторым, безусловно, самая дешевая, поскольку эти адаптеры обычно очень дешевы.

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

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

  1. Микроконтроллер Atmega328P с установленным загрузчиком Arduino
  2. Макет
  3. Адаптер USB — последовательный / TTL
  4. кварцевый генератор 16 МГц
  5. 22pf конденсаторы x2
  6. Конденсатор 100 нФ
  7. Провода перемычки
  8. Резистор 100 Ом
  9. светодиод
Схема

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

Схема 1: USB-последовательный адаптер и Atmega328P

Большинство адаптеров можно настроить для работы с логическим уровнем 5 В или 3,3 В. Убедитесь, что ваш настроен для работы с уровнем напряжения 5 В, поскольку питание на микроконтроллер составляет 5 В.

Код загрузки

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

Примечание: при программировании микроконтроллера Atmega328p с использованием Arduino IDE необходимо выбрать соответствующий тип платы — «Arduino Duemilanove или Nano w / ATmega328».

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

Использование платы Arduino

Второй подход предполагает использование платы Arduino одним из двух аналогичных способов;

  1. Путем замены микроконтроллера на Arduino Uno на программируемый
  2. Используя любую из плат Arduino в качестве внутрисистемного программатора.

Первый режим — это самый простой способ загрузить код в микроконтроллер, так как он включает в себя простую замену микроконтроллера на Uno на тот, который нужно программировать.Однако это может быть не лучшим вариантом при прототипировании, поскольку перемещение чипа от Arduino к проекту, назад и вперед, может привести к повреждению контактов микроконтроллера. Другим недостатком этого является то, что он работает только с Arduino Uno, поскольку все другие платы Arduino используют микроконтроллеры типа SMD, что делает замену непрактичной, а разработку дорогостоящей.

Так что никакой схемы для этого, просто поменяйте местами микроконтроллер и нажмите «Загрузить».

Второй метод предполагает использование Arduino Uno в качестве внутрисистемного программатора.

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

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

  1. Arduino Uno
  2. Макет
  3. Адаптер USB — последовательный / TTL
  4. кварцевый генератор 16 МГц
  5. 22pf конденсаторы x2
  6. Провода перемычки
  7. резистор 10к
  8. Резистор 100 Ом
  9. светодиод
Схемы

Подключите компоненты, как показано на схемах ниже.

Программирование Atmeg328p с помощью Arduino Uno

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

Код загрузки

Процесс загрузки кода такой же, как уже описанный. Введите код для загрузки или выберите пример -> выберите тип платы (Duemilanove или Nano W / atmeg328), выберите правильный порт и нажмите кнопку загрузки. Код будет загружен в микроконтроллер.

После успешной загрузки кода с использованием любого из подходов, описанных выше, преобразователь Arduino или USB — Serial / TTL можно отключить, а проект подключить к батарее для автономной работы, как показано на изображении ниже.

Программируемый микроконтроллер Atmega328p

Вот и все, ребята из этого руководства, спасибо за подписку.

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

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

Распиновка микроконтроллера

ATMega328P, конфигурация контактов, характеристики и техническое описание

Микроконтроллер ATMega328P

Микроконтроллер ATMega328P

Микроконтроллер ATMega328P

Распиновка ATMega328P

нажмите на изображение для увеличения

ATMEGA328P — это высокопроизводительный контроллер с низким энергопотреблением от Microchip.ATMEGA328P — 8-битный микроконтроллер на базе архитектуры AVR RISC. Это самый популярный из всех контроллеров AVR, поскольку он используется в платах ARDUINO.

Конфигурация контактов ATMega328

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

Контакт №

Имя пина

Описание

Дополнительная функция

1

PC6 (СБРОС)

Pin6 PORTC

Вывод

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

2

PD0 (RXD)

Pin0 PORTD

RXD (контакт ввода данных для USART)

Интерфейс последовательной связи USART

[Может использоваться для программирования]

3

PD1 (TXD)

Контакт1 PORTD

TXD (вывод данных для USART)

Интерфейс последовательной связи USART

[Может использоваться для программирования]

INT2 (вход внешнего прерывания 2)

4

PD2 (INT0)

Контакт 2 PORTD

Внешний источник прерывания 0

5

PD3 (INT1 / OC2B)

Контакт 3 PORTD

Внешний источник прерывания 1

OC2B (ШИМ — выход таймера / счетчика2, выход сравнения B)

6

PD4 (XCK / T0)

Pin4 PORTD

T0 (Вход внешнего счетчика Timer0)

XCK (ввод / вывод внешних часов USART)

7

VCC

Подключен к положительному напряжению

8

GND

Подключено к земле

9

PB6 (XTAL1 / TOSC1)

Pin6 PORTB

XTAL1 (вывод 1 генератора тактовой частоты или вход внешнего тактового сигнала)

TOSC1 (вывод 1 генератора таймера)

10

PB7 (XTAL2 / TOSC2)

Pin7 порта PORTB

XTAL2 (вывод 2 генератора тактовой частоты)

TOSC2 (вывод 2 генератора таймера)

11

PD5

(T1 / OC0B)

Контакт 5 PORTD

T1 (Вход внешнего счетчика Timer1)

OC0B (ШИМ — выход таймера / счетчика 0, выход сравнения B)

12

PD6 (AIN0 / OC0A)

Pin6 PORTD

AIN0 (положительный I / P аналогового компаратора)

OC0A (ШИМ — выход таймера / счетчика 0, выход сравнения A)

13

PD7 (AIN1)

Pin7 PORTD

AIN1 (отрицательный I / P аналогового компаратора)

14

PB0 (ICP1 / CLKO)

Pin0 порта PORTB

ICP1 (вход захвата таймера / счетчика 1)

CLKO (разделенные системные часы.Разделенные системные часы могут выводиться на вывод PB0)

15

PB1 (OC1A)

Pin1 порта PORTB

OC1A (выход таймера / счетчика1, выход сравнения A)

16

PB2 (SS / OC1B)

Контакт 2 порта PORTB

SS (вход выбора ведомого SPI).На этом выводе низкий уровень, когда контроллер действует как ведомый.

[Последовательный периферийный интерфейс (SPI) для программирования]

OC1B (выход таймера / счетчика1, выход сравнения B)

17

PB3 (MOSI / OC2A)

Контакт 3 PORTB

MOSI (главный выход, подчиненный вход).Когда контроллер действует как подчиненный, данные принимаются на этот вывод. [Последовательный периферийный интерфейс (SPI) для программирования]

OC2 (Выход таймера / счетчика2, выход сравнения)

18

PB4 (MISO)

Pin4 порта PORTB

MISO (главный вход и выход подчиненного устройства). Когда контроллер действует как подчиненный, данные передаются этим контроллером мастеру через этот вывод.

[Последовательный периферийный интерфейс (SPI) для программирования]

19

PB5 (SCK)

Pin5 порта PORTB

SCK (последовательные часы шины SPI). Это часы, совместно используемые этим контроллером и другой системой для точной передачи данных.

[Последовательный периферийный интерфейс (SPI) для программирования]

20

AVCC

Питание для внутреннего преобразователя АЦП

21

AREF

Analog Reference Pin для АЦП

22

GND

ЗЕМЛЯ

23

PC0 (АЦП0)

Pin0 PORTC

ADC0 (входной канал ADC 0)

24

ПК1 (АЦП1)

Pin1 PORTC

АЦП1 (входной канал АЦП 1)

25

ПК2 (АЦП2)

Контакт 2 PORTC

АЦП2 (входной канал АЦП 2)

26

PC3 (ADC3)

Контакт 3 PORTC

АЦП3 (входной канал АЦП 3)

27

PC4 (АЦП4 / SDA)

Pin4 PORTC

АЦП4 (входной канал АЦП 4)

SDA (линия ввода / вывода данных двухпроводной последовательной шины)

28

PC5 (ADC5 / SCL)

Контакт 5 PORTC

ADC5 (входной канал ADC 5)

SCL (Линия синхронизации двухпроводной последовательной шины)

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

ATMEGA328P — Упрощенные функции

ЦП

8-битный AVR

Количество контактов

28

Рабочее напряжение (В)

+1.8 В К + 5,5 В

Количество программируемых линий ввода / вывода

23

Коммуникационный интерфейс

Главный / подчиненный последовательный интерфейс SPI (17,18,19 контактов) [Может использоваться для программирования этого контроллера]

Программируемый последовательный USART (2,3 PINS) [Может использоваться для программирования этого контроллера]

Двухпроводной последовательный интерфейс (27,28 контактов) [Может использоваться для подключения периферийных устройств, таких как сервоприводы, датчики и устройства памяти]

Интерфейс JTAG

Нет в наличии

Модуль АЦП

6 каналов, разрешение 10 бит АЦП

Модуль таймера

Два 8-битных счетчика с отдельным предделителем и режимом сравнения, один 16-битный счетчик с отдельным предделителем, режимом сравнения и режимом захвата.

Аналоговые компараторы

1 (12,13 PINS)

Модуль ЦАП

Нет

ШИМ каналов

6

Внешний осциллятор

0-4 МГц @ 1.От 8 В до 5,5 В

0–10 МГц при 2,7–5,5 В

0-20 МГц при 4,5–5,5 В

Внутренний осциллятор

Калиброванный внутренний генератор, 8 МГц

Тип памяти программ

Вспышка

Программная память или флэш-память

32 Кбайта [10000 циклов записи / стирания]

Частота процессора

1MIPS для 1 МГц

RAM

2 Кбайт внутренней SRAM

EEPROM

1 Кбайт EEPROM

Сторожевой таймер

Программируемый сторожевой таймер с отдельным встроенным генератором

Блокировка программы

Есть

Режимы энергосбережения

Шесть режимов [режим ожидания, шумоподавление АЦП, энергосбережение, отключение питания, режим ожидания и расширенный режим ожидания]

Рабочая температура

от -40 ° C до + 105 ° C (+105 — абсолютный максимум, -40 — абсолютный минимум)

ATMEGA328P Замены

ATMEGA8

Альтернативы ATMEGA328P

ATMEGA16, ATMEGA32, ATMEGA8535

Где использовать ATMEGA328P

Несмотря на то, что у нас много контроллеров, ATMEGA328P наиболее популярен из-за своих возможностей и стоимости.Платы ARDUINO также разработаны на этом контроллере из-за его особенностей.

  • С программной памятью 32 Кбайт приложений ATMEGA328P очень много.
  • С различными режимами ЭНЕРГОСБЕРЕЖЕНИЯ он может работать с МОБИЛЬНЫМИ ВСТРОЕННЫМИ СИСТЕМАМИ.
  • Со сторожевым таймером для сброса при ошибке его можно использовать в системах с минимальным вмешательством человека.
  • Благодаря усовершенствованной архитектуре RISC контроллер быстро выполняет программы.
  • Также с датчиком температуры в чипе контроллер может использоваться при экстремальных температурах.

Все эти функции в совокупности способствуют дальнейшему продвижению ATMEGA328P.

Как использовать ATMEGA328P

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

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

Весь процесс использования ATMEGA328P выглядит следующим образом:

  1. Список функций, которые должны выполняться контроллером.
  2. Напишите функции на языке программирования в программах IDE.

Вы можете бесплатно скачать программу IDE на сайтах компании. Программа IDE для контроллеров AVR — ATMEL STUDIO. Ссылка на ATMEL STUDIO приведена ниже.

(обычно Atmel Studio 6.0 для Windows7 [http://atmel-studio.software.informer.com/6.0/],

Atmel Studio 7 для Windows10 [https://www.microchip.com/avr-support/atmel-studio-7])

  1. Программирование ATMEGA328P также можно выполнить в ARDUINO IDE.
  2. После написания программы скомпилируйте ее, чтобы исключить ошибки.
  3. Заставить среду IDE сгенерировать HEX-файл для написанной программы после компиляции.
  4. Этот файл HEX содержит машинный код, который должен быть записан во флэш-память контроллера.
  5. Выберите устройство программирования (обычно программатор SPI для контроллеров AVR), который устанавливает связь между ПК и ATMEGA328P. Вы также можете запрограммировать ATMEGA328P, используя плату ARDUINO UNO.
  6. Запустите программное обеспечение программатора и выберите соответствующий шестнадцатеричный файл.
  7. Запишите шестнадцатеричный файл записанной программы во флэш-память ATMEGA328P с помощью этой программы.
  8. Отключите программатор, подключите соответствующие периферийные устройства для контроллера и запустите систему.

Как использовать ATMega328P с Arduino

Поскольку ATmega328P используется в платах Arduino Uno и Arduino nano, вы можете напрямую заменить плату arduino на микросхему ATmega328. Для этого сначала вам нужно установить загрузчик Arduino в чип (или вы также можете купить чип с загрузчиком — ATMega328P-PU). Эту микросхему с загрузчиком можно разместить на плате Arduino Uno и записать в нее программу. После того, как программа Arduino записана в ИС, ее можно удалить и использовать вместо платы Arduino вместе с кварцевым генератором и другими компонентами, необходимыми для проекта.Ниже показано расположение контактов между Arduino Uno и микросхемой ATmega328P.

Приложения

Есть сотни приложений для ATMEGA328P:

  • Используется в платах ARDUINO UNO, ARDUINO NANO и ARDUINO MICRO.
  • Промышленные системы управления.
  • SMPS и системы регулирования мощности.
  • Цифровая обработка данных.
  • Измерение аналоговых сигналов и манипуляции с ними.
  • Встроенные системы, такие как кофеварка, торговый автомат.
  • Системы управления двигателями.
  • Дисплейные единицы.
  • Система периферийного интерфейса.

2D Модель

Все размеры указаны в миллиметрах.

Описание архитектуры

Arduino (ATmega328 / p) — Разработка

Arduino: Название Arduino происходит от названия бара в Ивреа, Италия, где раньше встречались некоторые из основателей проекта. Бар был назван в честь Ардуина из Ивреи, который был маркграфом (военачальником) Марша Ивреи и королем Италии с 1002 по 1014 год.

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

В платах

Arduino используются различные микропроцессоры и контроллеры. Платы оснащены наборами цифровых и аналоговых контактов ввода / вывода (I / O), которые могут быть подключены к различным платам расширения (экранам) или макетам (другим схемам на них).

Arduino Uno — это плата микроконтроллера на базе ATmega328P (таблица данных). Он имеет 14 цифровых входов / выходов (из которых 6 могут использоваться как выходы ШИМ), 6 аналоговых входов, кварцевый кристалл 16 МГц, соединение USB, разъем питания, разъем ICSP и кнопку сброса. Он содержит все необходимое для поддержки микроконтроллера, просто подключите его к компьютеру с помощью USB-кабеля или подключите к нему адаптер переменного тока в постоянный или аккумулятор, чтобы начать работу. Вы можете возиться со своим UNO, не слишком беспокоясь о том, что сделаете что-то не так, в худшем случае вы можете заменить чип за несколько долларов и начать все сначала.

«Uno» означает «один» на итальянском языке и был выбран в ознаменование выпуска программного обеспечения Arduino (IDE) 1.0. Плата Uno и версия 1.0 программного обеспечения Arduino (IDE) были эталонными версиями Arduino, которые теперь эволюционировали до более новых выпусков. Плата Uno является первой в серии плат USB Arduino и эталонной моделью для платформы Arduino. (IDE = интегрированная среда разработки)

Входное напряжение (7–12 В) для платы Arduino, когда она использует внешний источник питания (в отличие от 5 вольт от USB-соединения или другого регулируемого источника питания).Вы можете подавать напряжение через вывод Vin или, если напряжение подается через разъем питания, обращаться к нему напрямую через вывод Vin.

Архитектура: означает сложную или тщательно разработанную структуру чего-либо.

Здесь архитектура от Arduino или, точнее, IC от Arduino (ATmega328p). ATmega328 / P — это маломощный 8-битный КМОП-микроконтроллер, основанный на архитектуре RISC (компьютер с сокращенным набором команд) AVR®.
Чтобы максимизировать производительность и параллелизм, AVR использует архитектуру Гарварда — с отдельной памятью и шинами для программы и данных.Команды в программной памяти выполняются с одним уровнем конвейерной обработки.
Часы управляются внешним кварцевым генератором 16 МГц.

Основная работа ЦП ATmega328: —
1. Данные выгружаются последовательно через порт (выгружаются из Arduino IDE компьютера). Данные декодируются, а затем инструкции отправляются в регистр инструкций, и он декодирует инструкции в том же тактовом импульсе.
2. При следующем тактовом импульсе в регистр команд загружается следующий набор инструкций.
3. В регистрах общего назначения регистры 8-битные, но есть еще 3 16-битных регистра.
а. 8-битные регистры используются для хранения данных для обычных вычислений и результатов.
г. 16-битные регистры используются для хранения данных счетчика таймера в 2 разных регистрах. Например. X-низкий и X-высокий. Они быстрые и используются для хранения определенных аппаратных функций.
4. EEPROM хранит данные постоянно, даже если отключено питание. Программирование внутри EEPROM происходит медленно.
5. Блок прерывания проверяет, есть ли прерывание для выполнения инструкции, которая должна быть выполнена в ISR (процедура обслуживания прерывания).
6. Последовательный периферийный интерфейс (SPI) — это интерфейсная шина, обычно используемая для передачи данных между микроконтроллерами и небольшими периферийными устройствами, такими как камера, дисплей, SD-карты и т. Д. В ней используются отдельные линии синхронизации и данных, а также линия выбора для выбора устройство, с которым вы хотите поговорить.
7. Сторожевой таймер используется для обнаружения неисправности MCU и восстановления после нее.
8. Аналоговый компаратор сравнивает входные значения на положительном и отрицательном выводе, когда значение положительного вывода выше, устанавливается выход.
9. Состояние и контроль используются для управления потоком выполнения команд путем проверки других блоков внутри ЦП через равные промежутки времени.
10. ALU (Арифметический и логический блок) Высокопроизводительный AVR ALU работает в прямом соединении со всеми 32 рабочими регистрами общего назначения. В течение одного такта выполняются арифметические операции с регистрами общего назначения. Операции ALU делятся на 3 основные категории — арифметические, логические и битовые.
11. Контакты ввода / вывода Цифровые входы и выходы (цифровые вводы / выводы) на Arduino — это то, что позволяет вам подключать датчики, исполнительные механизмы и другие микросхемы Arduino.Изучение того, как их использовать, позволит вам использовать Arduino для некоторых действительно полезных вещей, таких как считывание входов переключателей, световых индикаторов и управления релейными выходами.

EXTRA:
1. Автоматический (программный) сброс: вместо того, чтобы требовать физического нажатия кнопки сброса перед загрузкой, Arduino спроектирован таким образом, чтобы его можно было сбросить с помощью программного обеспечения, запущенного на подключенном компьютере. Программное обеспечение Arduino (IDE) использует эту возможность, чтобы вы могли загружать код простым нажатием кнопки загрузки в среде Arduino.Это означает, что у загрузчика может быть более короткий тайм-аут, так как снижение DTR (Data Terminal Ready) может быть хорошо скоординировано с началом загрузки.

2. Прошивка: Прошивка — это программа или набор инструкций, запрограммированных на аппаратном устройстве. Он предоставляет необходимые инструкции о том, как устройство взаимодействует с другим компьютерным оборудованием. Прошивка хранится в устройствах энергонезависимой памяти, таких как ПЗУ.

3. Чтобы проверить, установлена ​​ли прошивка в вашем Arduino или нет, просто нажмите кнопку сброса и, если встроенный светодиодный индикатор мигает (на контакте 13), прошивка присутствует.

Ссылки:
A. Arduino.cc
B. Wikipedia.com
C. Технические данные ATmega328 / p

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

Спасибо за подписку! Пожалуйста, проверьте свою электронную почту для получения дальнейших инструкций.

Связанные

Комментарии

комментария

Arduino UNO Как программист AtMega328P: 4 шага

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

Осциллятор

AtMega328P с загрузчиком

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

AtMega328P без загрузчика

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

Понятно, что добавление внешнего генератора к шилду подойдет для всех типов микросхем. Можно использовать кристалл 16 МГц и 2 конденсатора по 15 пФ или резонатор 16 МГц.

Индикация светодиодов

В исходном коде или скетче указаны 3 выхода, которые можно подключить к светодиодам. Эта индикация должна присутствовать на щите.

Сброс программатора

Если на Arduino UNO установлен экран, кнопка сброса UNO обычно недоступна.На щите должна быть отдельная кнопка сброса.

Питание программируемой микросхемы

К микросхеме, которую необходимо запрограммировать, должно быть подключено питание. Для питания + 5V и 0V взяты с платы Arduino UNO. Однако установка и извлечение микросхемы из программатора при включенном питании может привести к повреждению микросхемы. По этой причине на щитке был добавлен переключатель.

Защита порта ввода / вывода

Экран ArduinoISP устанавливает определенные контакты как ВЫХОДНЫЕ на Arduino UNO.Если теперь подключить к программатору ранее использованный AtMega328P, может возникнуть конфликт между линиями ввода-вывода двух микросхем, который может вызвать повреждение портов. Для защиты я добавил резисторы 470R между программатором и программируемой микросхемой.

Линия сброса программируемой микросхемы

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

Метод программирования

ZIF Socket

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

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

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

Записать загрузчик ATmega328p AU на микросхеме SMD

При покупке нового микрочипа ATMEGA328P AU они подозревают, что в их память ничего не записано.Чтобы запрограммировать эти микроконтроллеры, вам необходимо предварительно записать загрузчик. Загрузчик похож на микрочип copan duro
ntroller. Без этого контроллера микрочип не будет понимать язык, который мы отправили из Arduino IDE. Чтобы понять код, который мы отправляем, мы должны сначала записать загрузчик.

Здесь я покажу вам, как записать загрузчик на микросхему ATmega328p AU SMD, используя Arduino NANO в качестве программатора ISP.

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

Как вы можете видеть, у нас есть кварцевый осциллятор на 16 МГц между контактами 7 и 8 микросхемы SMD с двумя конденсаторами 22 пФ на землю. Нам нужно подключить землю к контактам 3, 6 и 21, а питание 5 В — к контактам 4, 6 и 18.Мы добавляем подтягивающий резистор на 1 кОм между 5 В и выводом сброса, который является выводом 29 этого SMD-чипа. Рекомендуется подключить конденсатор емкостью 47 мкФ между выводом Aref и 5 В.

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

Цифровой вывод 13 от Arduino NANO к выводу 17 от микросхемы SMD (SCK)
Цифровой вывод 12 от Arduino NANO к выводу 16 от микросхемы SMD (MISO)
Цифровой вывод 11 от Arduino NANO к выводу 15 от Микросхема SMD (MOSI)
Цифровой вывод 10 от Arduino NANO к выводу 29 от микросхемы SMD (CS)

Теперь открываем Arduino IDE.Переходим в файл -> Примеры -> Arduino как ISP и открываем скетч примера ArduinoISP. В инструментах мы выбираем Arduino NANO в качестве платы, COM нашего USB, подключенного к Arduino, и загружаем скект как обычный, как любой другой, в Arduino NANO.

После того, как мы загрузили код ArduinoISP в Arduino NANO и с предыдущими подключениями, мы можем записать загрузчик. Для этого мы переходим в Инструменты -> Программист -> Arduino в качестве ISP, как показано ниже.

Осталось только зайти в Инструменты и нажать кнопку записи загрузчика.Мы увидим, что индикаторы Arduino NANO часто мигают. Как только он говорит, что загрузчик сгорел, все готово. Мы успешно записали загрузчик на SMD-чип.
Все, что нам нужно сделать, это проверить работоспособность микросхемы. Для этого мы загрузим простой мигающий код, используя соединение FTDI, как показано ниже. Не забудьте вернуть программатор в нормальное состояние.

Помните, что нам нужен конденсатор емкостью 0,1 мкФ между выводом DTR модуля FTDI и нашим выводом сброса для программирования этого чипа.

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

См. Руководство по контроллеру Arduino + RF здесь:

ATmega328P, единственный микроконтроллер, с которым вы должны начать

В настоящее время, когда микроконтроллеры относительно дешевы и легко доступны на рынке, принятие решения о покупке подходящего из них может оказаться сложной задачей. Однако есть одна конкретная модель, с которой полезно начинать с пользователей.Эта модель — ATmega328p, 8-битный микроконтроллер AVR.

Эта статья расскажет, почему ATmega328p — именно то, что вам нужно.

Он будет охватывать следующие компоненты:

  • Что такое ATmega328P?
  • Характеристики и параметры продукта
  • Сравнение конкурентов: STM32 и MSP430
  • Рекомендации по продукту
  • Сводка

Что такое ATmega328P?

ATmega328P — это высокопроизводительный 8-битный микроконтроллер AVR с низким энергопотреблением, который благодаря своей передовой RISC-архитектуре способен выполнять 131 мощную команду за один такт.Обычно его можно найти в качестве процессора на платах Arduino, таких как Arduino Fio и Arduino Uno.

Особенности и параметры

Особенности:

Долговечные энергонезависимые сегменты памяти
  • В системе самопрограммируемая флэш-память программ
  • Блокировка программирования для защиты программного обеспечения
Периферийные функции
  • Два 8-битных таймера / счетчика с отдельным предварительным делителем, режим сравнения.
  • Один 16-битный таймер / счетчик с отдельным предварительным делителем, режимом сравнения и режимом захвата
  • Измерение температуры
  • Программируемый последовательный USART и сторожевой таймер с отдельным встроенным генератором
Уникальные особенности по сравнению с другими микроконтроллерами (ARM, 8051 , ПОС):
  • Сброс при включении и программируемое обнаружение потери мощности
  • Внутренний калиброванный генератор
  • Внешний и внутренний источники прерываний
  • Шесть спящих режимов: холостой ход, шумоподавление АЦП, энергосбережение, отключение питания, режим ожидания и расширенный режим ожидания
Параметры
Тип памяти программы Флэш-память
Размер памяти программы 32
Скорость ЦП (MIPS / DMIPS) 20
SRAM (КБ) EEPROM / HEF (байты) 1024
Периферийное устройство цифровой связи 1-UART, 2-SPI, 1-I2C
Периферийное устройство захвата / сравнения / PWM 1 вход захвата 6PWM, 1 CWM
Таймеры / счетчики 2 x 8-битные, 1x 16-битные
Количество компараторов 1
Диапазон температур от -40 до 85 градусов
902 Диапазон рабочего напряжения35 (В)

1.От 8 до 5,5 В
Количество выводов 32
Низкое энергопотребление Да

Преимущества и недостатки:

Преимущества:
  • Процессоры проще в использовании, с использованием 8-битных и 16-битных вместо более сложных 32/64-битных
  • Легко использовать без дополнительных вычислительных компонентов с 32 Кбайт встроенной самопрограммируемой флэш-памяти программ, а также 23 программируемых ввода / вывода. O строк
  • Код Эффективный, все 31 регистр напрямую подключены к арифметико-логическому устройству (ALU), что делает его в 10 раз быстрее, чем обычные микроконтроллеры CISC
  • Оптимизирован для расширенного набора команд RISC AVR
Недостатки:
  • Недостаточная производительность по сравнению с микроконтроллерами с более высокой разрядностью

Приложения для продуктов

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

Быстрый режим ШИМ, который обеспечивает генерацию высокочастотного сигнала ШИМ, позволяет использовать его для регулирования мощности, выпрямления и применения ЦАП.

Сравнение продуктов

Что лучше? Atmega368P против STM32 против MSP430

ATmega328P СТМ32 MSP430
Марка Микрочип Cortex Техасские инструменты
Стоимость Низкий Высокая Низкий
Архитектура Расширенная архитектура RISC Технология Power Architecture, разработанная для встраиваемых приложений Старая архитектура фон Неймана
Потребляемая мощность Низкое, более эффективное энергопотребление Средняя, ​​более высокая тактовая частота может привести к более высокому потреблению энергии Низкий
Производительность Среднее, нижнее долото, но подходит для сложных проектов Высокая, быстрая скорость обработки, большая мощность.
Работает 32-битное ядро ​​процессора ARM с достаточным объемом ОЗУ
Low, больше подходит только для простых проектов
Простота использования Простота использования, 8 бит и высокая совместимость с платами Arduino Сложно из-за того, что он является 32-битным микроконтроллером Комплекс относительно плат Arduino

Вердикт: Atmega368P. Хотя ему не хватает производительности по сравнению с STM32, его более низкая относительно низкая стоимость и набор функций делают его вариантом с соотношением цены и качества, который следует учитывать.

AtMega328P против AtMega328

  • Оба имеют схожий архитектурный дизайн
  • ATmega328P потребляет меньше энергии
  • ATmega328P немного дороже
  • Пакет TQFP доступен только в версии 328P

Вердикт: хотя 328P немного дороже, чем его предыдущий преемник, он может сэкономить вам пару микроампер силы. Кроме того, вариант чипа в корпусе TQFP доступен только в 328P.

Рекомендации по продукции

Seeeduino V4.2. Вариант «Соотношение цены и качества»

Всего за 6,90 долларов вы сможете получить полностью совместимую плату с Arduino UNO-R3 Shield, в которой используется микроконтроллер ATmega328P.

Характеристики продукта включают:

  • 14 контактов цифрового ввода / вывода (6 выходов PWM)
  • 6 аналоговых входов
  • Программирование через Micro USB и источник питания
  • Заголовок ISP
  • 3 встроенных разъема Grove для лучшего прототипирования
  • Переключатель питания системы 3,3 / 5 В

Плюсы:

  • Относительно дешево и подходит для новичков
  • Использование micro USB для питания и программирования платы для простоты использования

Seeeduino Lotus V1.1. Экономичная плата, совместимая с Mac Os

.

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

  • Комбинация Seeeduino и базового щита.
  • Совместимость с Arduino UNO, использует тот же чип (ATmega328P)
  • Встроенный разъем Grove
  • Совместимость с Mac OS.
  • Экономичный

Seeeduino Nano: более дешевая и лучшая альтернатива Adruino Nano

Seeeduino Nano оснащен USB Type-C вместо обычного мини-USB, который использует Adruino Nano.Кроме того, добавленные разъемы Grove позволяют задействовать сотни датчиков и исполнительных механизмов путем простого подключения.

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

  • 43 мм * 18 мм Крошечная плата
  • 16M ATmega328P
  • Полная совместимость с Arduino Nano
  • USB Type C для программирования и питания
  • Встроенный разъем Grove I2C
  • Совместимость с макетной платой

Основные различия между Seeeduino Nano и Arduino Нано:

Seeeduino Nano Ардуино Нано
Процессор ATmega328P ATmega328P
Входное напряжение 5В / 7-12В 5В / 7-12В
Напряжение ввода-вывода 5 В 5 В
Аналоговый вход / выход 8/0 8/0
Цифровой ввод-вывод / ШИМ 14/6 14/6
USB Тип-C Мини-USB
Соединители Grove 1xI2C Соединители без Grove

Сводка

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

Следите за нами и ставьте лайки:

Теги: 8051, Arduino, arm, Atmega328, ATMEGA328P, AVR, cortex, Microchip, микроконтроллер, MSP430, pic, seeeduino, STM32, Texas Instruments

Продолжить чтение

.