Содержание
Компания Atmel производит множество чипов и 2 разновидности микроконтроллеров, которые были признаны радиолюбителями. Один из них — ATmega328P, рассматриваемый в этой статье. Рассмотрим его устройство, варианты программирования и ПО, требующееся для прошивки
ATmega328P — микроконтроллер группы AVR
Устройство atmega328p имеет 28 контактов. Его знает большинство владельцев конструктора Arduino, как главный элемент электронного комплекта. Но на самом деле, функционал устройства намного шире, чем применение в этом конструкторе. И это подтверждается в atmega328p datasheet.
Семейство микроконтроллеров AVR, куда входит atmega328p, сегодня широко применяется при конструировании электроники разного уровня. Среди них не только микроконтроллер ATmega328P, но и схожий по характеристикам 8-контактный ATtiny45, имеющий чуть меньше функций.
Микроконтроллер также является основой Arduino Nano — маленькой отладочной платы, очень распространённой в любительской среде программистов. Это устройство — компактное по размеру, но по характеристикам не уступающее всем известной Arduino Uno. Она запросто включается в проекты, где параметры очень важны.
Распиновка atmega328p
Как правило, программирование указанных устройств ведется с помощью SPI — последовательного периферийного интерфейса. Через шину данных идет ряд сигналов:
- MOSI — вход поступления данных;
- MISO — выход ее распространения;
- SCK — синхронизирующий вход.
Последний — генерирует программатор и обеспечивает синхронное получение между двумя связанными устройствами. Можно сказать, что интерфейс SPI — это синхронная шина коммуникации.
Как выбрать физический программатор под ATmega328P
Для указанного микроконтроллера есть множество подходящий программаторов. Один из них производится той же фирмой, Atmel и разрабатывался профессионалами. Он называется «Atmel-ICE».
По мнению радиолюбителей, это лучший программатор для прошивки AVR и схожих микросхем. Его можно приобрести в интернет-магазинах наподобие AliExpress, по стоимости от 5 тысяч рублей. Устройство выглядит так:
К сожалению, такая версия не по карману простым любителям электроники. Рациональнее — остановить выбор на usb — программаторе AVR Pocket Programmer. Он стоит намного дешевше профессионального Atmel-ICE. На некоторых сайтах его можно приобрести даже за 200 р, правда, без проверки.
При отсутствии возможности купить простой программатор, можно изготовить его собственноручно. Основу такой схемы составляет чип ATtiny2313. Внешними элементами в ней являются:
- Резисторы.
- Светодиоды.
- Стабилитроны.
Конструкция самодельного устройства — проста и доступна. Желательна буферизация сигнальных линий, но она не обязательна. Для нее в схеме должен находиться буфер. К примеру, его роль может сыграть устройство 74AC125. Оно же входит и в фирменную версию. Вместо него можно применить транзистор.
Программатор не функционирует без usb-драйвера. Поэтому, радиолюбители обзаводятся универсальным инсталлятором для Windows (7 и более высоких версий), который помогает устанавливать общие драйвера. Установка драйвера в ОС желательна до того, как физическая схема atmega328p подключится к компьютеру.
Как подключать и программировать микроконтроллер
Устройства группы AVR программируют с помощью интерфейса SPI, сигнальным прохождением сквозь 6 участкоа:
- электропитание;
- «земля»;
- сброс;
- получение данных;
- передача;
- синхронизирование.
Чтобы все перечисленные сигналы перемещались через устройства, нужен 1 из 2 стандартных разъемов, с 6 или 10 контактами. Программаторная atmega328p плата соединяется с ними с помощью шлейфа-кабеля. Ее заводской вариант укомплектован всеми возможными дополнениями.
Для работы вместе с программным инструментом используются 2 вида контактных разъемов SPI.
Фирменная плата оборудована переключателем режимов электропитания. При его помещении в положение Power Target, она получает от usb напряжение 5 В. В противном случае, то есть, режиме No Power на контакте нет питания. Второй вариант применяется, чтобы программировать чипы с невысоким напряжением, от 1,8 до 3,3 В.
В каждый контроллер atmega328p для avrdude встраивается технология bootloader atmega328p. Она считается самым рациональным и правильным вариантом программирования. Так как специализированные программные адаптеры и набор знаний — не обязательны, необходимо подключение классического кабеля от ПК к плате и активацию программы.
При предварительной переконфигурации atmega328p nano или обычной, старт микроконтроллера идёт со специализированого адреса, где, как правило, располагается atmega328p old bootloader. Это является условием запуска, определяемым состоянием перемычки извне, которая подключается к ножке atmega328p для Ардуино.
Использование утилиты AVRDUDE
Рассмотрим инструмент для строки команд в системе Windows. Для его применения нужно нажать всего 2 клавиши: Пуск, а затем, выполнить. После этого выясните уровень готовности утилиты следующей командой:avrdude -c usbtiny -p atmega328p.
Эта комбинация помогает выяснить, подключен ли микроконтроллерный программатор к разъему usb. Чипы из других серий, соответственно, проверяются другими командами.
Если программатор подключен правильно, утилита выведет на экран следующее (см. Рисунок):
Если микроконтроллер изготавливается по стандартам, в нем присутствуют идентификаторы. Он определяется при первом запуске утилиты. AVRDUDE в ходе проверки сканирует идентификатор чипа.
Микросхемные идентификаторы имеют разный вид, согласно типу AVR. В частности, идентификация ATmega328P выглядит как 0x1E950F. Эти символы выводятся в специальное окно. После проверки работоспособности схемы, идет следующий шаг — чтение и запись программного кода посредством утилиты.
Участок памяти чипа, как правило, прошиваемый, является энергозависимой областью, местом для хранения программ (Flash). Прошивка atmega328p производится с помощью комбинации: avrdude c usbtiny p atmega328p U flash:w:test.hex. Имя файла здесь дано только как пример.
Чтобы записать flash-память, потребуется некоторое время, большее, чем для считывания информации atmega328p. Проверка устройства, чтение и запись, в свою очередь, меняют командную строку.
Взгляните на этот рисунок, чтобы увидеть, как читается информация в памяти устройства посредством утилиты. Она помещается в специальное окно.
Добавочный символ w указывает на запись, затем, через знак “:” идет имя и местонахождение документа, который и записывается в память.
Работа инструмента возможна лишь с теми документами, у которых есть расширение hex.
Отличия ATmega328 от ATmega328P и ATmega328PU
Обычному пользователю сложно понять, почему маркировка кристаллов отличается, и какой выбрать. Попробуем разобраться:
- Для использования в обычных сферах между первыми двумя вариантами — разница небольшая, поэтому возможна взаимозаменяемость.
- Энергопотребление ATmega328P — существенно ниже, чем Atmega328. Это описано в параметрических таблицах даташит. О чем это говорит? О том, что при разработке первого варианта применялся более точный технический процесс. Как правило, стоимость этих чипов — выше. У микроконтроллеров категории AVR с низким энергопотреблением, согласно классификации производителя, есть отметка PicoPower. Получается, что для батарейных устройств ATmega328P — выгоднее. В них должны быть использованы контролирующие режимы для уменьшение потребления энергии.
- У рассматриваемых вариантов — разные сигнатуры чипов. Поэтому, при использовании программ для их чтения (по аналогии с утилитой avrdude) можно увидеть сообщения об ошибке atmega328p при неправильном указании типа микроконтроллера.
- Только Atmega328P может быть оснащен корпусом TQFP32, но не TQFP328. Это зависит от большей толщины кристалла, из-за которой он просто не влезает в данный корпус.
- В Atmega328 отсутствует фьюз, блокирующий детектор низкого уровня питания. Во втором варианте данный фьюз присутствует, за счет чего дополнительно снижается потребление энергии и происходит отключение BOD. Наличие такого фьюза возможно только у версий группы picoPower. Их обозначение заканчивается символами 48PA, 88PA, 168 PA, 328 P. То же самое касается фьюзов BODS, BODSE.
- Система команд, которые относятся к инструкциям перехода, тоже пусть незначительно, но отличается. При компиляции чипа программы в обоих вариантах — работоспособны.
- Буквы PU означают вид кристального корпуса. Это -DIP28 из пластика. В него легко помещается ATmega328, вот и дополняется таким суффиксом. Также варианты корпусов обозначаются буквенными сочетаниям AU, MU.
Можно изготовить Ардуино на основе atmega328p mini. Этот вариант — более простой, чем uno, так как там нет участка USB-to-Serial. Как мы знаем, atmega328p pro mini — это, как правило, вариант atmega328p au. Но для некоторых устройств этот вариант — слишком мал, и туда больше подходит PU.
На основе микроконтроллеров создаётся множество устройств, в том числе, atmega328p тестер-транзистор и контроллер atmega328p nano 3.0.
Led-матрица на основе ATmega328p (самодельный Arduino)
Этот прибор может украсить полку любого пользователя и радиолюбителя.
Составляющие элементы
Сначала нужно собрать все необходимые детали. Нам понадобится:
- 7 резисторов с сопротивлением 150 Ом.
- 5 конденсаторов (50 В, 1 мкФ ).
- Резонатор из кварца (16 МГЦ).
- Разъём-гребенка с 18 контактами.
- Регистор сдвига с DIP-корпусом.
- Микросхемная панель 74ch595 с 16 ножками.
- 35 световых диодов (3 В).
- Непосредственно микроконтроллер в корпусе DIP.
- Плата для монтажа 5*7.
Обзаведитесь флюсом, припоем и паяльником, оптимальными проводами, например, МГТФ.
Регистр сдвига
Принцип действия микросхемы 74ch595 — довольно сложен для понимания. Ее основное предназначение — увеличение числа пинов.
В схеме есть несколько основных регулирующих контактов: вывода (DS), определения напряжения на выводе (SH), записи состояния в DC, открытия и закрытия микросхемы путем установки контактов в нужное положение (ST).
Последнее, что нужно узнать, — это код для функционирования микросхемы.
Как подготовить матрицу
Иногда светодиодам не хватает места на плате, и тогда нужна обточка мелкой окантовки. Делайте ее аккуратнее, так как световые диоды — довольно хрупкие элементы.
Не забудьте о конденсаторах! При их отсутствии световые диоды погаснут, что помешает оптимизации устройства.
Резисторов, как уже было указано, в конструкции — 7, но видно только 6, так как 1 расположен напрямую под микросхемой.
Вместо генератора с частотой 16 МГц можно использовать имеющий 24 МГц, для ускорения работы. Но такую корректировку можно сделать только в готовом устройстве. Дело в том, что прошивка ATmega328p на генераторе с большей частотой — невозможна.
Расположение светодиодов таково:»+» к 74ch595, «-» — ATmega328p.
Конечно, не прошитое устройство мгновенно не заработает, однако, можно попробовать воспользоваться классическим blink Arduino. При определённых условиях — может сработать. При мигании света в 1-м ряду можно считать, что эксперимент удался.
Для возможности влияния микроконтроллера на контакты, нужна их инициализация. В противном случае, актуально было бы использование массива и цикла для сокращения функционального кода.
В устройстве обязательно должна быть динамическая память, при отсутствии которой оно просто зависнет.
Как выбрать источник электропитания
Этот момент нужно учесть в первую очередь. Например, выбрать в качестве электроисточника ноут или персональный компьютер — не лучшая идея. Конечно, кое-как при таких пульсациях конструкция какое-то время поработает, но стабильности не ждите.
Конечно, слабая работа прибора, созданного на микроконтроллере, может объясняться неправильным прошивочным кодом, проблемой с контактами на плате. Но если вы меняете источник питания, и работа возобновляется, дело в нем.
Не все сетевые варианты здесь подходит, гораздо выгоднее — использование автономного питания. Например, подойдут и литий-ионные аккумуляторы для питания мобильников.
А поскольку, согласно технической инструкции, чтобы контроллер ATmega328p при 16 МГц, нужно напряжение около 5 В, здесь не обойтись без модуля преобразователя, который повышает напряжение.
https://youtu.be/vP4axLNLqUw
Популярные статьи