Отладочная плата с микроконтроллером atmega328

AVR УРОК 38. Atmega 328p Pro Mini

Урок 38

Atmega 328p Pro Mini

Сегодня мы познакомимся поближе с интересной отладочной платой, выполненной на базе микроконтроллера Atmega 328p. А наибольший интерес у программистов микроконтроллеров AVR данная плата вызвала тем, что помимо того, что контроллер здесь не слабый, но, самое главное, стоит она сущие копейки. Я, например, приобретал её всего лишь за 2,7 $. В видеоверсии данного урока я описании дам ссылку на распаковку и первоначальное тестирование данной платы, а также и на продавца, у которого я её приобретал.

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

Мы же пойдём другим путём и применим данную плату уже как полноценную отладочную плату для создания приложений под управлением привычной для нас среды программирования Atmel Studio. Соттветственно, в качестве программатора мы также возьмём привычный нам народный программатор, который мы применяем во всех наших занятиях и подключим его к шине SPI.

Я думаю, будет лишним перечисление всех достоинств контроллера Atmega328p по сравнению с контроллером Atmega 8A. Здесь и оперативной памяти больше и памяти под прошивку больше, и также здесь две шины USART по сравнению с одной в восьмой серии.

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

Теперь подключим программатор Для подключения программатора я спаял вот такой переходничок

Распиновка нашей платы совпадает со стандартом Arduino UNO R3. Приводить я её здесь не буду во избежание нарушения прав. Найти данную распиновку не представляет никаких трудностей. Согласно распиновки разъём к плате подключаем следующим образом:

AVR ISP – ATMEGA328
VCC-VCC
GND-GND
RESET-RST
MOSI-11
MISO-12
SCK-13

Получится вот так

Подключим к разъёму программатор и проверим обнаружение платы. Для этого запустим программу avrdude, выберем там контроллер ATmega328P и нажмем кнопку «чтение». Программатор и контроллер должны будут обнаружиться и должны будут считаться калибровочные ячейки

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

Теперь также подключим для тестирования 10 светодиодов. У меня, как вы знаете из моих уроков, есть 10-диодная матрица. Не забываем про токоограничивающие резисторы. Так как я данную матрицу использую ещё в тестах на контроллерах stm32, в которых граничный ток портов ниже, то резисторы там установлены на 680 ом. Менять я их не стал, светодиоды работают и с ними, возможно только светятся не так ярко, но это не страшно. Вот такая вот плата с матрицей

К отладочной плате светодиоды мы подключим следующим образом (нажмите на картинку для увеличения изображения)

Согласно стандарту Arduino соединения получатся следующие

Makerbot — необычные часы — отладочная плата на базе микроконтроллера ATmega328

В статье описывается проект на микроконтроллере Atmel AVR, представляющий собой компактную отладочную плату и, по совместительству, необычные часы на светодиодах, получивший название Makerbot. Это Arduino проект, и микроконтроллер имеет собственный загрузчик, который работает по UART интерфейсу. Сам загрузчик программируется с помощью программатора в среде Arduino.

Спецификация:

  • устройство выполнено на микроконтроллере ATmega328;
  • кварцевый резонатор 16 МГц;
  • 3 кнопки для управления (пользовательские кнопки);
  • динамик (буззер);
  • 6-контактный разъем для обновления ПО с помощью Arduino;
  • 6-контактный разъем внутрисхемного программирования;
  • 4-контактный разъем для расширения возможностей (подключение дополнительных датчиков).

Устройство выполнено на двухсторонней печатной плате в форме окружности с диаметром около 50 мм. Питание осуществляется от батареи, напряжение питания 3.3 В. Схема и печатная плата разработаны в среде проектирования Eagle, файлы проекта доступны для скачивания в разделе загрузок.

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

  • 12 светодиодов для индикации часов;
  • 12 светодиодов, каждый из которых соответствует 5 минутам;
  • 4 дополнительных светодиода индикации минут, каждый из которых соответствует 1 минуте (т.е. для индикации 4 дополнительных минут).

К примеру, если текущее время 12:04, будет светиться светодиод, обозначающий часы – в 12 позиции, светодиод, обозначающий минуты – в 12 позиции, и будут светиться 4 дополнительных светодиода, обозначающих минуты.

Принципиальная схема

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

Также разработана вторая, усовершенствованная версия часов. Основные отличия от первой версии:

  • питание осуществляется от Li-Polymer аккумулятора емкостью 110 мА•ч;
  • встроенная схема заряда аккумулятора;
  • порт microUSB для питания часов и заряда аккумулятора;
  • количество кнопок сокращено до 2;
  • микроконтроллер тактируется от кварцевого резонатора 8 МГц;
  • отсчет времени ведется специализированной микросхемой DS1337, которая подключена к микроконтроллеру по шине I2C.

Схема зарядки аккумулятора в данном варианте конструкции часов выполнена на микросхеме MCP73831 производства компании Microchip, которая предназначена для зарядки одной ячейки Li-Po или Li-Ion аккумулятора. В MCP73831 реализована возможность задания тока предзаряда, встроены контроль и защита по температуре. Указанные возможности позволяют применить это семейство в сложных комплексных разработках, в т.ч. со встроенными аккумуляторами, например, карманные приборы, сложные USB изделия, медицинская техника.

Вид печатной платы, второй вариант:

Вид печатной платы в 3D:

При конструировании данных часов потребуется редактирование текстового файла в среде Arduino. В данном текстовом файле прописаны основные конфигурации платформ Arduino: протокол программирования, размер Flash-памяти микроконтроллера (в соответствии с платформой Arduino), конфигурация загрузчика, Fuse- и Lock-биты, тактовая частота и пр. Редактирование потребуется, в связи с тем, что микроконтроллер тактируется от кварцевого резонатора и питание осуществляется от батареи 3 В, а уровень Brown-Out детектора установлен на 2.8 В, что в данной конструкции неприемлемо.

Загрузки

  • Схема
    • Принципиальная схема первого варианта (pdf) – скачать
    • Печатная плата (Eagle) — скачать
    • Второй вариант конструкции (с DS1337) в формате Eagle — скачать
  • Программное обеспечение
    (Header-файл с определением класса MakerBotWatch, исходный код класса MakerBotWatch, тестовый проект простых часов с использованием класса MakerBotWatch, модифицированный Header-файл с определением класса MakerBotWatch (версия 1.1), модифицированный исходный код класса MakerBotWatch (версия 1.1), тестовый проект усовершенствованных часов с использованием класса MakerBotWatch, примеры) – скачать
  • Дополнительные ресурсы:
    • Программная библиотека дата/время — http://www.arduino.cc/playground/Code/DateTime
    • Организация часов на базе Arduino — http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?action=print;num=1200661518

Перевод: Vadim по заказу РадиоЛоцман

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

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

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

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

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

Читайте также  Tft дисплей 3.2 с открытым исходным кодом

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Собираем собственную плату Arduino на микроконтроллере AVR ATmega328

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

Arduino использует системный загрузчик (boot loader), который позволяет новому программному коду записываться внутрь его. В данной статье мы рассмотрим вопрос записи системного загрузчика в микроконтроллер ATmega328 (семейство AVR) и сконструируем на его основе домашнюю систему Arduino на печатной плате. Выбор микроконтроллера ATmega328 IC обусловлен тем, что он используется в платформе Arduino UNO.

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

  • Плата Arduino UNO с интегральной схемой (IC) и кабелем (купить на AliExpress);
  • Микроконтроллер Atmega328 IC;
  • ЖК дисплей 16х2 (купить на AliExpress);
  • Макетная плата;
  • Соединительные провода;
  • Кварц 16 МГц (купить на AliExpress);
  • Резистор 10 кОм (купить на AliExpress).

Последовательность действий при сборке платформы Arduino

Чтобы загрузить системный загрузчик (boot loader) в «чистый» Atmega328 IC нам будет необходима какая-нибудь плата Arduino (подойдет любая). Последовательность действий по сборке платформы Arduino будет показана в виде следующей последовательности шагов. Также в конце статьи вы можете посмотреть видео, на котором наглядно представлены все продемонстрированные на рисунках процессы.

Шаг 1. Соберите вместе и аккуратно разложите все необходимые для сборки компоненты.

Шаг 2. Удалите “Arduino Original IC” с платы Arduino с помощью отвертки и вставьте “New Atmega328 IC” на плату Arduino.

Шаг 3. Откройте интегрированную среду разработки Arduino, выберите в ней пункт меню File -> example -> ArduinoISP.

После открытия ArduinoISP выберите Arduino UNO board из пункта меню Tools -> Board -> Arduino Uno.

Затем выберите COM PORT (последовательный порт) из пункта меню Tools -> Serial Port -> COM10.

Затем загрузите ArduinoISP Sketch (кусок программного кода).

Шаг 4. Теперь удалите New IC (ваш микроконтроллер) с платы Arduino и вставьте в нее оригинальный Arduino IC (тот, который был на ней изначально). Загрузите в нее тот же самый ArduinoISP sketch который мы загружали на шаге 3.

Шаг 5. Соберите приведенную ниже схему на макетной плате с New IC (вашим микроконтроллером Atmega328) и с оригинальным микроконтроллером на оригинальной плате Arduino.

Шаг 6. Теперь в интегрированной среде разработки Arduino выберите пункт Tool (инструменты) и выберите в нем пункт Burn Bootloader.

В это время вы увидите как светодиоды Rx и Tx на плате Arduino будут случайно мигать некоторое время. Это значит что Bootloader загружается в новый ATmega 328 IC. После этого интегрированная среда разработки Arduino (Arduino IDE) выдаст сообщение “Done burning bootloader” (то есть загрузка завершена). И теперь вы сможете использовать свой микроконтроллер Atmega328 (‘New IC’) на своей плате Arduino.

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

Вставьте ‘New IC’ (ваш микроконтроллер) в эту плату. Также вы сможете собрать всю эту систему сразу на печатной плате. Для подключения жидкокристаллического дисплея соедините вашу собранную плату Arduino с оригинальной платой Arduino, используя контакты Rx, Tx, RST and GND оригинальной платой Arduino, как показано ниже на мнемонической схеме или выше на схеме соединений. И загрузите приведенный ниже код.

Удалите оригинальный микроконтроллер с платы когда вы будете загружать код в ваш новый микроконтроллер на макетной плате. Вашу плату Arduino можно запитать с помощью контакта 5v с оригинальной платы Arduino как показано на выше приведенной мнемонической схеме.

Реверс-инжиниринг микроконтроллера Atmel Atmega328p

Микроконтроллер ( англ. Micro Controller Unit, MCU)-микросхема, на которой сочетается функции процессора и содержит ОЗУ и ПЗУ на одной системе на чипе. По сути, это однокристальный процессор, на котором размещены все внешние устройства.

Постоянное запоминающее устройство (ПЗУ) — энергонезависимая память, используется для хранения различной информации.

Оперативная память (англ. Random Access Memory, RAM (ОЗУ) —энергозависимая память, в которой во время работы компьютера хранится информация.

Существует несколько разновидностей ПЗУ, предназначенных для различных целей:

ROM — (Read-Only Memory, постоянное запоминающее устройство), к примеру, масочное ПЗУ, изготавливается фабричным методом. В дальнейшем нет возможности изменить записанные данные. ROM используется в микроконтроллерах для хранения кода, а также для других целей.

PROM — (Programmable Read-Only Memory, программируемое ПЗУ (ППЗУ)) — ПЗУ, однократно программируемое пользователем.

EPROM — (Erasable Programmable Read-Only Memory, перепрограммируемое ПЗУ (ПППЗУ)). Например, содержимое микросхемы К573РФ1 стиралось при помощи ультрафиолетовой лампы. Для прохождения ультрафиолетовых лучей к кристаллу в корпусе микросхемы было предусмотрено окошко с кварцевым стеклом.

EEPROM — (Electrically Erasable Programmable Read-Only Memory, электрически стираемое перепрограммируемое ПЗУ). Память такого типа может стираться и заполняться данными несколько десятков тысяч раз. Используется в твердотельных накопителях, микроконтроллерах, SPD. Из недостатков – долгое время стирания. Одной из разновидностей EEPROM является флеш-память (Flash Memory).

Flash — в переводе с английского «вспышка». Стирание происходит сразу для большого блока ячеек, что позволяет снизить время записи. Иногда выступает в качестве синонима для EEPROM.

Кроме этого, в составе микроконтроллера чаще всего находятся порты ввода/вывода, таймеры, АЦП, последовательные и параллельные интерфейсы. В некоторых даже можно заметить Wi-Fi-/Bluetooth-модуль и даже поддержку NFC.

Первый патент на микроконтроллер был выдан в 1971 году компании Texas Instruments. Инженеры этой компании предложили размещать на кристалле не только процессор, но и память с устройствами ввода/вывода.

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

Параметр

28 или 32 контакта:

Максимальная рабочая частота

Технические характеристики

8-разрядный микроконтроллер Atmel AVR на базе RISC сочетает в себе 32 КБ флэш- памяти ISP с возможностями чтения во время записи, 1 КБ EEPROM , 2 КБ SRAM , 23 линии ввода-вывода общего назначения, 32 рабочих регистра общего назначения , три гибких таймера / счетчики с режимами сравнения, внутренними и внешними прерываниями , последовательным программируемым USART , байтовым 2-проводным последовательным интерфейсом, последовательным портом SPI , 6-канальным 10-битным аналого — цифровым преобразователем (8 каналов в пакетах TQFP и QFN / MLF ) , программируемый сторожевой таймер с внутренним генератором и пять программно выбираемых режимов энергосбережения. Устройство работает в диапазоне 1,8-5,5 вольт. Пропускная способность устройства приближается к 1 MIPS на МГц.

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

Микроконтроллер состоит из нескольких вычислительных блоков:

Арифметико-логическое устройство (АЛУ) (англ. arithmetic logic unit, ALU) — блок процессора, который под управлением устройства управления служит для выполнения арифметических и логических преобразований над данными.

Блок управления процессором (УУ) (control unit, CU) — блок, устройство, компонент аппаратного обеспечения компьютеров. Представляет собой конечный дискретный автомат. Структурно устройство управления состоит из: дешифратора команд (операций), регистра команд, узла формирования (вычисления) текущего исполнительного адреса, счётчика команд. УУ современных процессоров обычно реализуются в виде микропрограммного автомата и в этом случае УУ включает в себя ПЗУ микрокоманд. УУ предназначено для формирования сигналов управления для всех блоков машины.

Сумматорами называют логические устройства, выполняющие арифметические суммирование кодов двоичного числа

Микроконтроллер Atmega328P и Arduino

В классической линейке устройств Arduino в основном применяются микроконтроллеры Atmel AVR. Следующие МК можно встретить на указанных распространённых платах:

ATmega2560 (16 МГц, 256к Flash, 8к RAM, 54 порта, из них до 15 с ШИМ и 16 АЦП). Платы Mega.

ATmega32U4 (16 МГц, 32к Flash, 2,5к RAM, 20 портов, из них до 7 с ШИМ и 12 АЦП). Платы Leonardo, Micro, Yun.

ATmega328 (16 МГц, 32к Flash, 2к RAM, 14 портов, из них до 6 с ШИМ и 8 АЦП). Платы UnoR3, Mini, NanoR2, Pro, Pro mini, различные варианты плат uno и nano, такие как Wifi Uno и nano + nrf42l01

ATtiny85 (20Мгц, 8к Flash, 512б RAM, 6 портов, из них 4 ШИМ и 4 аналоговых). Платы Digispark, также часто применяются вне плат.

ATmega168(16Мгц, 16к Flash, 1к RAM, порты и распиновка аналогично ATmega328) Платы Uno R1, Uno R2, Pro mini, NanoR1.

До свидания, ATmega328! Здравствуй, ATmega328PB!

Atmel ATmega328PB

В микроконтроллере (МК) нам всегда не хватает встроенной периферии. Будь то аппаратные каналы ШИМ, АЦП или последовательные интерфейсы обмена данными – в конечном итоге нам всегда хочется иметь хотя бы еще один из них, хотя на самом деле многие из них нам не нужны. Видимо, услышав наши мольбы, на смену популярному 8-разрядному МК ATmega328 [1] Atmel выпустила ATmega328PB [2].

К настоящему времени официального пресс-релиза по ATmega328PB Atmel так и не выпустила, как и не получил массового распространения по дистрибьюторским сетям сам микроконтроллер. В начале 2015 года сообщалось о выходе приборов семейства megaAVR серии «PB» (ATmega168PB, ATmega88PB, ATmega48PB) и возможном релизе ATmega328PB, но если по первым уже имеются какие-то наработки и пользователи применяют их в своих устройствах и делятся впечатлениями, то ATmega328PB до сих пор остается загадкой.

Прежде всего, необходимо подчеркнуть, что ATmega328PB не является полной заменой ATmega328/ATmega328P, а представляет собой новое устройство, однако по выполняемым функциям он обратно совместим с существующим ATmega328. Ранее разработанный для этих устройств программный код будет корректно работать и на новых приборах без изменения существующей конфигурации или включения новых функций, в то время как обратная совместимость кода не гарантируется. Несмотря на то, что серия выпускается только в 32-выводных корпусах TQFP/QFN/MLF, по расположению выводов с ATmega328 она не совместима, о чем более подробно будет сказано ниже.

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

Общие сведения

В высокопроизводительном 8-разрядном AVR RISC микроконтроллере ATmega328PB реализована технология управления питанием picoPower. Он имеет 32 КБ Flash-памяти с поддержкой чтения во время записи, 1 КБ EEPROM и 2 КБ ОЗУ. Пользователю доступны 27 линий ввода/вывода общего назначения, 32 регистра общего назначения, пять таймеров/счетчиков с расширенным функционалом и гибкими настройками, внутренние и внешние прерывания, 8-канальный 10-разрядный АЦП, программируемый сторожевой таймер с отдельным генератором, последовательные интерфейсы USART, TWI и SPI. МК сохраняет полную работоспособность в широком диапазоне напряжений питания от 1.8 В до 5.5 В. Оценить функциональный состав МК можно по блок-схеме на Рисунке 1.

Рисунок 1. Блок-схема микроконтроллера ATmega328PB.

Для поддержки разработчиков компания предлагает оценочный набор ATMEGA328PB-XMINI (серия Xplained Mini), который может использоваться не только для знакомства с возможностями микроконтроллера, но также для разработки и отладки собственных приложений. Выполненная в Arduino-совместимом форм-факторе оценочная плата упростит интеграцию ATmega328PB в пользовательские устройства.

Дополнительные порты ввода/вывода

В ATmega328PB добавлен дополнительный 4-битный порт ввода/вывода PORTE [3:0] (Таблица 1). Две линии ввода/вывода PE2 (вывод 19) и PE3 (вывод 22) мультиплексированы с входами АЦП ADC6 и ADC7. Выводы 3 (GND в ATmega328) и 6 (VCC в ATmega328) заменены на линии ввода/вывода PE0 и PE1, соответственно, при этом PE0 выполняет альтернативную функцию выходного канала аналогового компаратора ACO.

ATmega328PB стал первым 8-разрядным МК семейства AVR с интегрированным контроллером сенсорного интерфейса QTouch (Peripheral Touch Controller, PTC), обрабатывающим сигналы емкостных сенсоров для определения касания. Как правило, внешние емкостные сенсоры формируются на печатной плате, а их электроды подключаются непосредственно к аналоговому интерфейсу PTC посредством мультиплексирования линий ввода/вывода в микроконтроллере. PTC поддерживает режимы работы как с определением собственной емкости сенсоров, так взаимной.

Первый режим обеспечивает возможность подключения к МК 24 сенсорных кнопок, второй – 144 кнопок. Отлично зарекомендовавшая себя технология QTouch и гибкость настроек контроллера позволяют использовать одновременно оба типа сенсоров, при этом для одного электрода требуется один вывод микроконтроллера. Аппаратная фильтрация, автоматическая калибровка и рекалибровка сенсоров, встроенные схемы компенсации паразитной емкости и регулировка чувствительности повышают надежность сенсорного интерфейса и исключают необходимость использования каких-либо внешних компонентов (Рисунок 2).

Рисунок 2. Блок-схема контроллера QTouch в режиме определения
собственной емкости сенсоров.

Разработка и отладка сенсорного интерфейса для приложений на МК ATmega328PB поддерживается программной средой QTouch Composer с библиотекой QTouch Library, в которой можно создавать различные комбинации сенсорных кнопок, слайдеров, колес и датчиков приближения.

Механизм обнаружения сбоев синхронизации

Clock Failure Detection mechanism (CFD) – еще одно нововведение в ATmega328PB. Это схема цифровой логики с собственным генератором 128 кГц, предназначенная для отслеживания сбоев синхронизации (только для кварцевого резонатора и внешнего источника тактовой частоты) и автоматического переключения на встроенную схему RC-генератора 1 МГц.

Включение механизма контроля синхронизации выполняется автоматически на стадии программирования Fuse-битов выбора источника тактовой частоты (CKSEL) и активизируется только при тактовой частоте выше 256 кГц. При переходе микроконтроллера в режим пониженного энергопотребления схема контроля тактовой частоты отключается, и включается автоматически при пробуждении МК.

Два дополнительных таймера/счетчика

В ATmega328PB интегрированы два дополнительных 16-разрядных таймера/счетчика с отдельными предделителями, блоками сравнения и входами захвата. Таким образом, теперь ATmega328PB имеет два 8-разрядных и три 16-разрядных таймера/счетчика с расширенным набором функций. С добавлением этих таймеров число доступных каналов аппаратной ШИМ выросло до 10 (на ATmega328 их всего 6).

OCM1C2 – модулятор выходов таймеров

Встроенный модулятор Output Compare Modulator (OCM) позволяет генерировать модулированные сигналы. Он использует выходы блоков сравнения (Output Compare Unit B) двух появившихся в ATmega328PB новых 16-разрядных таймеров/счетчиков Timer/Counter3 и Timer/Counter4, о которых было сказано выше. Когда работа модулятора разрешена, два выхода каналов сравнения образуют модулятор, где один канал служит источником несущей частоты, а другой – модулирующей, как это показано на Рисунке 3.

Рисунок 3. Блок-схема модулятора выходов таймеров.

Выходы блоков сравнения Output Compare 3B и Output Compare 4B совместно используют один вывод порта PD2. Имея более высокий приоритет, выходы блоков сравнения (OC3B и OC4B) переопределяют конфигурацию вывода PD2, заданную битом PORTD2. Когда OC3B и OC4B разрешены одновременно, автоматически разрешается работа модулятора.

Дополнительные последовательные интерфейсы обмена данными

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

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

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

Выход аналогового компаратора ACO подключен к отдельному выводу микроконтроллера, мультиплексируемому с портом PE0.

Уникальный серийный номер

Узнать уникальный серийный номер ATmega328PB можно посредством чтения определенных регистров ввода/вывода. Он формируется конкатенацией 9 байт, содержащихся в этих регистрах. Регистры доступны только для чтения.

Заключение

Увеличенное количество коммуникационных интерфейсов, 10 каналов ШИМ, контроль тактовой частоты и, самое главное, поддержка сенсорного интерфейса QTouch значительно расширяют область применения микроконтроллера ATmega328PB. Это могут быть промышленные системы контроля и управления, драйверы светодиодных светильников, приборы учета, средства домашней автоматизации. Дополнительная информация доступна в техническом описании.

Микроконтроллер ATmega328PB поддерживается основными программными, аппаратными и системными отладочными инструментами, включая Atmel Studio 6 и Atmel Power Debugger. Кроме того, множество примеров, программных библиотек и вспомогательных инструментов доступно пользователям в Atmel Gallery.

Ссылки

  1. AT15007: Differences between ATmega328/P and ATmega328PB
  2. AT08401:Getting Started with Atmel ATmega328PB

Материалы по теме

  1. Datasheet Atmel ATmega328
  2. Datasheet Atmel ATmega328PB

Перевод: Vadim по заказу РадиоЛоцман