Микроконтроллеры семейства AVR DB

Компания Microchip, производитель 8-битных микроконтроллеров семейств PIC16, PIC18, ATtiny и AVR, постоянно совершенствует их и оснащение МК с относительно неэффективным ядром уникальной периферией вполне хорошая идея. Со временем периферийные устройства перекочевали на более производительные микроконтроллеры с ядром AVR. Изобретение инженеров в области модификации периферийных схем простых микроконтроллеров кажется неисчерпаемым, примером чему служат новые возможности семейства AVR DB.

Семейство микроконтроллеров AVR DB достаточно хорошо оснащено стандартными ресурсами. Топовая модель AVR128DB65 имеет 128 КБ флэш-памяти программ, 16 КБ SRAM и 512 ГБ EEPROM. Ядро может работать на частоте 24 МГц. Здесь ряд наиболее распространенных периферийных устройств: 16-битные и 12-битные счетчики, RTC, связь USART, SPI TWI/I2C, 12-битный АЦП с дифференциальным входом и асимметричным входом, 10-битный ЦАП – аналоговый ЦАП. Аналоговые схемы дополняются операционными усилителями, аналоговым компаратором, схемой обнаружения пересечения нуля (ZCD) и источниками опорного напряжения.

В начале своего пути развития микроконтроллеры и большинство периферийных систем питались от +5 В. Благодаря одинаковому напряжению питания взаимодействие между всеми элементами цифровой схемы происходило без проблем и помех. Долгое время сохранялся стандарт питания +5 В, но некоторое время стали предлагаться микроконтроллеры способные работать с более низким напряжением +3,3 В. Изменение напряжения питания было продиктовано двумя факторами: увеличение быстродействия цифровых микросхем, в том числе основного микроконтроллера, и снижение энергопотребления. Последнее свойство особенно важно в схемах с батарейным питанием, поскольку оно увеличивает время работы. В более мощных, снижение энергопотребления позволяет контролировать температуру и снижает затраты на охлаждение.

Современные мощные микроконтроллеры имеют мультивольтажное питание, например, ядро питается от +1,8 В, а периферия от +3,3 В. Существуют также микроконтроллеры которые могут питаться от +1,8 В до +5,5 В. Правда в схемах где микроконтроллер (или его периферия, включая порты) питается определенным напряжением и должен взаимодействовать с внешними цифровыми микросхемами, питающимися другим напряжением, могут возникнуть проблемы с корректной идентификацией уровней соответствующих логическим состояниям и, как следствие, выход из строя всей схемы.

Подключение схем с питанием +3,3 В и +5 В

Вот показан пример соединения выхода цифровой микросхемы с питанием +3,3 В с входами цифровых схем, выполненных по ТТЛ (биполярной) и КМОП-технологии. Помимо разницы напряжений, важна и технология изготовления цепей.

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

Еще больше проблем возникает когда выход +5 В подключен к входу +3,3 В. Каждый вход КМОП защищен парой диодов с обратным смещением. При более высоком выходном токе это может привести к повреждению как выходного, так и входного защитного диода. Некоторые микроконтроллерные схемы с питанием от +3,3 В имеют входы, принимающие уровни напряжения до 5 В (допуск +5 В), но это не является нормой.

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

Не менее хорошим решением будет использование микроконтроллеров AVR DB, оснащенных настраиваемым встроенным преобразователем/шифтером логического напряжения. Функция многовольтного ввода/вывода (MVIO) позволяет питать подмножество контактов порта ввода/вывода напряжением VDDIO2. Логические уровни выходов и входов MVIO относятся к этому напряжению VDDIO2, а не к напряжению питания VDD. Для входов низкое напряжение VIL будет не более 0,2 ВDDIO2 (буфер Шмитта) или не более 0,3 ВDDIO2 для шины I2C. Напряжение высокого состояния VIH составляет не менее 0,8 ВDDIO2 (буфер Шмитта) или не менее 0,7 ВDDIO2 (шина I2C). Для выходов низкое напряжение VOL не более 0,6 В, а высокое напряжение не менее VDDIO2 – 0,7 В. Микроконтроллер и выводы не охваченные работой MVIO питаются напряжением VDD. VDD и VDDIO2 не зависят друг от друга, но оба должны находиться в одном и том же допустимом диапазоне от +1,8 В до +5,5 В.

Как работает MVIO в AVR DB

В настоящее время выводы с функцией MVIO сгруппированы в порт PORTC, питаемый от вывода VDDIO2. Они могут функционировать только как линии цифрового ввода/вывода (не могут быть аналоговыми входами). Выводы с функцией MVIO ведут себя так же, как обычные выводы цифрового ввода/вывода. Это могут быть универсальные линии GPIO, линии последовательной шины, в том числе двунаправленные (USART, SPI, I2C) и выходы ШИМ.

Пример корпуса микроконтроллера с выводами MVIO

Режим питания MVIO программируется конфигурационным битом (фьюзом). Доступны два режима работы. Первый с единым рабочим напряжением – MVIO не активен, и контакты VDDIO2 и VDD должны быть соединены вместе. Второй режим – двойное рабочее напряжение, когда на VDDIO2 и VDD подаются разные напряжения.

Структурная схема модуля MVIO

Выше показана блок-схема модуля. Обнаружение уровня напряжения VDDIO2 за пределами допустимого диапазона сигнализируется битом регистра состояния. Установка этого бита может вызвать прерывание. VDDIO2, деленное на 10, также может быть измерено внутренним АЦП с внутренним опорным напряжением 1,024 В.

Модуль операционного усилителя OPAMP

Операционные усилители уже давно встроены в микроконтроллеры. Обычно их параметры не очень высоки, но для базовых задач, таких как согласование уровня сигнала с диапазоном входного напряжения АЦП, их достаточно. Так в чем же уникальность модуля усилителя OPAMP семейства AVR DB? Он построен на трех (в некоторых версиях на двух) операционных усилителях и может гибко программно настраиваться с использованием аналогового мультиплексора. Программная конфигурация позволяет усилителям работать в различных топологиях (инвертирующий усилитель, неинвертирующий, каскадный усилитель-буфер). Второй важной особенностью является то, что в большинстве случаев усилителям не нужны никакие внешние элементы (в основном резисторы – определяющие коэффициент усиления). Это также может значительно упростить и ускорить процесс проектирования и тестирования устройства.

Блок-схема одного модуля операционного усилителя МК

Блок-схема одного усилителя показана далее. Операционные усилители, работающие в инвертирующих и неинвертирующих усилителях, требуют подключения внешних резисторов определяющих их топологию и коэффициент усиления. Как видно, периферийный модуль усилителя имеет встроенную цепочку сопротивлений (R1, R2), подключенную к входам/выходам усилителя с помощью аналогового мультиплексора. Это позволяет настраивать такие усилители без необходимости подключения внешних элементов (резисторов). Модуль (модули) OPAMP может быть сконфигурирован как:

  • автономный операционный усилитель,
  • буфер (усилитель с усилением 1),
  • инвертирующий усилитель с коэффициентом усиления определяемым R1 и R2,
  • интегратор,
  • дифференциальный усилитель,
  • каскадный усилитель,
  • измерительный усилитель.

Мультиплексор на неинвертирующем (+) входе каждого ОУ позволяет подключаться к внешнему выводу микроконтроллера, ползунковому переключателю, выходу ЦАП, заземлению (GND), напряжению VDD/2 или выходу другого операционного усилителя. Второй мультиплексор на инвертирующем (–) входе каждого ОУ позволяет подключаться к внешнему выводу микроконтроллера, ползунку резистора, выходу операционного усилителя или выходу ЦАП.

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

Конфигурация и программирование модуля ОУ

Документация микроконтроллеров AVR DB содержит подробные описания всех регистров конфигурации периферийных модулей, включая модуль операционного усилителя. На основе этой информации можно настроить каждый из усилителей в зависимости от потребностей. Но это трудоемкий и утомительный метод. Гораздо лучшим решением является использование среды проектирования IDE и встроенного конфигуратора периферийных устройств. Микроконтроллеры AVR имели свою среду Atmel Studio IDE. После приобретения Atmel компанией Microchip IDE Atmel Studio была переименована в Microchip Studio, но МК AVR можно программировать и отлаживать в знакомой среде MPLAB IDE. Примеры конфигурации модуля OPAMP будут выполнены в среде MPLAB X IDE с установленным последним подключаемым модулем конфигуратора MCC.

Пример конфигурации измерительного усилителя в среде MPLAB X IDE

Начинаем настройку выбрав модуль OPAMP из списка ресурсов устройства. Выбранный модуль появится в списке ресурсов проекта. Окно конфигурации модуля OPAMP имеет 4 вкладки: OPAMP SYSTEM, OP0, OP1 и OP2. На вкладке OPAMP SYSTEM установим:

  • Режим работы: одиночный усилитель, двойной или одиночный усилитель и тройной усилитель. Поскольку в измерительном усилителе используются все три ОУ, то выбираем вариант с тремя операционными усилителями.
  • Конфигурация усилителя: три усилителя используются в тройной каскадной схеме усилителя или через измерительный усилитель. Выбираем по предположению – измерительный усилитель.

Конфигурация вкладки OPAMP SYSTEM для измерительного усилителя показана на рисунке.

Конфигурация вкладки OPAMP SYSTEM с помощью плагина MCC

На следующем шаге надо выбрать источник дифференциального сигнала подаваемого на входы измерительного усилителя. Предположим это будут выводы микроконтроллера, сконфигурированные как аналоговые входы. Во вкладке OP0 есть схема усилителя с усилителем OP0, отмеченным серым цветом, и резисторами R1 и R2, назначенными модулю OP0. Измеряемое напряжение V2 подается на неинвертирующий вход усилителя ОР0. В окне Positive Input MUX выберите источник сигнала в качестве положительного входа для OPn из раскрывающегося списка. Конфигуратор автоматически настроил линию PD0 порта PORTD как первый аналоговый вход дифференциального усилителя.

Источник сигнала дифференциального усилителя и конфигурация усиления

Вся процедура повторяется для второго измерительного входа. Измеряемое напряжение V1 подается на неинвертирующий вход операционного усилителя ОР1. В окне Positive Input MUX выберите Positive input для OPn, и конфигуратор настроит линию PD4 порта PORTD как второй аналоговый вход дифференциального измерительного усилителя.

Правильная конфигурация выходов операционных усилителей МК

Последним шагом будет указание коэффициента усиления в окне System Gain. После такой настройки появляются предупреждения о не совсем корректно настроенных выходах усилителя, подключенных к выводам микроконтроллера. Чтобы все работало корректно нужно заблокировать входной буфер для цифровых сигналов в окне Pin Module конфигуратора MCC.