Микроконтроллеры XMEGA — новые возможности проверенного решения

№ 3’2008
PDF версия
Эта публикация начинает цикл статей, посвященных микроконтроллерам XMEGA фирмы Atmel. В качестве информационной базы при подготовке цикла использовались оригинальные материалы центра Atmel AVR в Норвегии, впервые представленные на техническом тренинге в сентябре 2007 года. Любые публикации о микроконтроллерах XMEGA были запрещены производителем до официального анонса семейства, который состоялся на выставке “Embedded World” в Нюрнберге в конце февраля 2008 года.

Эта публикация начинает цикл статей, посвященных микроконтроллерам XMEGA фирмы Atmel. В качестве информационной базы при подготовке цикла использовались оригинальные материалы центра Atmel AVR в Норвегии, впервые представленные на техническом тренинге в сентябре 2007 года. Любые публикации о микроконтроллерах XMEGA были запрещены производителем до официального анонса семейства, который состоялся на выставке “Embedded World” в Нюрнберге в конце февраля 2008 года.

Все статьи цикла:

Введение

Зачем компании Atmel понадобилось создавать очередное семейство микроконтроллеров? Прежде всего, фирма намеревается укрепить свое положение на мировом рынке в сегменте недорогих встраиваемых микроконтроллеров общего назначения с минимальным энергопотреблением и высокой производительностью. И, конечно, Atmel хочет добиться активного расширения потенциального рынка приложений для новых микроконтроллеров. Начиная с 1995 года, компания борется за звание № 1 в мире по производству современных универсальных Flash-микроконтроллеров для встраиваемых применений, которые лидируют в удельном энергопотреблении, степени интеграции узлов на кристалле и производительности периферийных модулей. По задумке Atmel, с помощью XMEGA микроконтроллеры Atmel должны занять новую качественную нишу на мировом рынке 8-разрядных микроконтроллеров.

Что же такое XMEGA? Прежде всего — новое микроконтроллерное семейство. Но в своей основе это хорошо знакомые, популярные и признанные AVR. Микроконтроллеры XMEGA будут выпускаться в удобных для пайки современных корпусах QFP с количеством выводов от 44 до 100, иметь объем встроенной Flash-памяти от 16 до 1024 килобайт, работать с производительностью до 32 MIPS. Их серийное производство планируется начать в середине 2008 года.

XMEGA — это AVR! По задумке разработчиков из исследовательского центра AVR в Норвегии, для освоения более продвинутого продукта следующего поколения разработчик не должен изучать что-то совсем новое или подвергать уже однажды написанный код глубоким переделкам. Идея «XMEGA = AVR» означает, прежде всего, программную совместимость с популярными «классическими» семействами AVR — tiny и mega. Сразу отметим, что по цоколевке и расположению выводов на корпусах XMEGA не совместимы с микроконтроллерами tinyAVR и megaAVR.

Новые микроконтроллеры выпускаются для работы в индустриальном температурном диапазоне от –40 до +85 °С, их рабочее напряжение составляет от 1,8 до 3,6 В. Подобно прочим AVR, одна и та же версия кристалла будет представлена в двух исполнениях:

  • с напряжением питания 1,8–2,7 В, тактовыми частотами до 12 МГц и с линиями ввода/вывода, которые устойчивы к уровню напряжения 3,3 В;
  • с напряжением питания 2,7–3,6 В и с тактовыми частотами до 32 МГц.

В дальнейшем, по мере развития семейства XMEGA, компания Atmel планирует выпускать их для работы в автомобильном температурном диапазоне –40…+125 °С, а также сделать линии ввода/вывода в обеих группах устойчивыми к уровню напряжения 5 В.

С точки зрения повышения степени интеграции и «начинки» кристалла, компания Atmel также ввела ряд существенных изменений. Основная идея всех описанных ниже новшеств — радикально уменьшить число необходимых для обеспечения функционирования всего кристалла внешних компонентов и сократить площадь общего решения на плате приложения.

Особенности нового поколения AVR — XMEGA:

  • Пониженное энергопотребление:
    • 2 мкА при работающем сторожевом таймере, блоке контроля питания и часах реального времени (RTC);
    • технология picoPower второго поколения;
    • новый сторожевой таймер (WDT);
    • новый блок контроля питания (Brownout Detection, или BOD).
  • Увеличение производительности:
    • контроллер прямого доступа к памяти (DMA);
    • многоуровневый программируемый контроллер прерываний (PMIC);
    • система обработки событий (Event System);
    • тактовые частоты 32 МГц при 2,7 В и 12 МГц при 1,8 В.
  • Расширенный набор периферии:
    • 12-разрядный АЦП с частотой преобразования до 2 Msps;
    • 12-разрядный ЦАП;
    • многофункциональные 16-разрядные таймеры-счетчики со скоростным ШИМ;
    • многочисленные коммуникационные модули.

Средства поддержки разработок для XMEGA

Как уже отмечалось, XMEGA — это AVR. Поэтому основные средства поддержки разработок, уже хорошо знакомые российским разработчикам, могут использоваться и для работы с XMEGA. Это внутрисхемный программатор AVR ISP2, интегрированная среда AVR Studio (версии 4.14 и выше), широко используемый компилятор фирмы IAR Systems. К сожалению, популярный стартовый набор STK500 не может быть использован для работы с XMEGA. Вместо него компания Atmel разработала и выпустила новый стартовый набор STK600, который будет работать со всеми микроконтроллерами AVR, включая XMEGA. Как обычно, поддерживается программирование и отладка микроконтроллеров по JTAG, для этой цели используется популярный эмулятор JTAGICE2. Отметим, что для XMEGA подойдут только эмуляторы ревизии «В» (выпускаются с февраля 2007 года), которые имеют серийный номер, начинающийся с «В», и на материнской плате которых расположен дополнительный зеленый светодиод. Дело в том, что только такие эмуляторы поддерживают двухпроводной интерфейс PDI (Program and Debug Interface), обеспечивающий отладку и программирование кристаллов XMEGA внутрисхемно.

И программирование, и отладка микроконтроллеров XMEGA могут осуществляться через два физических интерфейса. Основной интерфейс — PDI, который является собственной разработкой Atmel для внешнего программирования и внутрисхемной отладки микроконтроллеров. PDI поддерживает высокоскоростное программирование всех областей энергонезависимой памяти на кристалле XMEGA: Flash, EEPOM, Fuses, Lock-биты и User Signature Row. Он использует линию Reset для тактового сигнала (PDI_CLK) и специальную линию Test для ввода/вывода данных (PDI_DATA). Стандартный JTAG-интерфейс также присутствует в большинстве кристаллов XMEGA и может быть использован для программирования или отладки через 4-проводной интерфейс JTAG. По умолчанию все обращения к блоку отладки предполагают доступ к физическому интерфейсу PDI.

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

Первым в 2008 году корпорация Atmel планирует выпустить микроконтроллер старшего подсемейства А1 в корпусе TQFP100 — ATxmega128A1 с объемом Flash-памяти 128 кбайт. В дальнейшем планируется последовательное расширение номенклатуры кристаллов XMEGA с разными размерами массивов памяти, количеством и ассортиментом периферийных блоков, сниженной стоимостью микроконтроллеров и более дешевыми корпусами с количеством выводов 64 и 44. Это будут подсемейства А3 и А4 соответственно. При этом внутри семейства XMEGA будет использоваться одна и та же таблица адресов периферии для обеспечения полной программной совместимости при переходе к новым кристаллам. Планируемый к выпуску состав подсемейств XMEGA показан на рис. 1.

Планируемый состав семейства XMEGA

Новые особенности XMEGA

Наш экскурс начнем с заявленных планов Atmel по радикальному снижению энергопотребления кристаллов нового микроконтроллерного семейства, так как данный вопрос в современном электронном мире является одним из наиболее приоритетных. Для микроконтроллеров XMEGA будет использоваться технология picoPower второго поколения (о picoPower мы уже писали ранее [1]). Что же входит у Atmel в понятие «второе поколение»?

Во-первых, благодаря ряду улучшений в технологическом процессе изготовления кристаллов значительно снижены токи утечки ячеек памяти Flash и EEPROM в режиме Power Down. Во-вторых, новые аппаратные модули — DMA и особенно Event System — значительно снизят время пребывания центрального процессора в активном режиме, что уменьшит суммарное энергопотребление. И, наконец, оптимизирован ряд сервисных узлов микроконтроллера, которые по «долгу службы» должны постоянно находиться в активном режиме, что также означает непрерывное потребление энергии, пусть даже и небольшое.

  • Сторожевой таймер WDT тактируется от отдельного внутреннего генератора с ультранизким энергопотреблением. Кроме того, WDT сможет работать в так называемом «оконном» режиме, что также сокращает потребление энергии (подробнее работу сторожевого таймера мы рассмотрим далее).
  • Улучшена структура блока контроля питания: повышена точность определения напряжения, и, кроме того, теперь BOD будет сэмплироваться, то есть отслеживать уровень питающего напряжения периодически. При этом период опроса BOD может устанавливать разработчик, чтобы достигнуть оптимального для конечного приложения компромисса между временем реакции узла BOD и его суммарным энергопотреблением.
  • Усовершенствованы часы реального времени. Теперь в состав RTC входит 16-битный таймер, что позволяет обеспечивать «засыпание» микроконтроллера на 18 часов, причем периодичность «пробуждения» также может программироваться.

Все описанные новшества благотворно сказались на энергопотреблении кристаллов XMEGA, особенно в «спящих» режимах. Так, в режиме Power Save при включенном узле RTC, разрешенном BOD и работающем WDT ток потребления микроконтроллера составляет не более 2 мкА.

Система событий, многоуровневый контроллер прерываний, контроллер прямого доступа к памяти

Два новых для AVR периферийных блока — система событий (Event System) и многоуровневый программируемый контроллер прерываний (PMIC) — будут подробно рассмотрены во второй части цикла статей. Сейчас мы лишь отметим их основные особенности.

Система событий XMEGA предназначена для разгрузки центрального процессора. Используя сложную структуру матрицы соединений, периферийные узлы, процессорное ядро и контроллер DMA могут непосредственно обмениваться между собой как служебной, так и командной информацией, а также передавать и принимать данные. В матрице шин организовано до 8 параллельных каналов передачи информации. Допускается независимая работа центрального процессора и DMA. Поддерживается предварительная цифровая фильтрация данных.

Главная изюминка Event System — гибкость в предоставлении прав каждому из подключенных к ней периферийных модулей. Эти модули могут определять, по какому из внешних воздействий может генерироваться событие (точнее, они заранее программируются пользователем), например, при перепаде напряжения на выводе микроконтроллера, при переполнении таймера, завершении цикла преобразования АЦП и т. д. Периферийные модули могут программироваться и на то, каким образом интерпретировать поступающее к ним событие — инкрементировать таймер, выставить выходной сигнал на выводе микросхемы, начать преобразование АЦП и т. д. Система событий разгружает систему прерываний XMEGA в основном за счет уменьшения количества формируемых запросов на прерывание. При этом значительно повышается надежность обработки данных и принятия решений: критичные ко времени или к стабильности выполнения функции теперь становятся более прогнозируемыми, а значит, увеличивается надежность работы всей системы в целом. Также снижается загрузка центрального процессора для обработки различных «несистемных» прерываний, генерируемых периферийными узлами и модулями, в том числе и какими-то внешними событиями.

Впервые в истории AVR компания Atmel предлагает разветвленную систему прерываний для XMEGA. Для PMIC заявлена поддержка 4-уровневого процесса обслуживания — всем запросам на прерывание могут быть присвоены определенные уровни приоритета для обработки. Как всегда, оставлены немаскируемые прерывания, которые жестко связаны с рядом системных функций процессора и имеют наивысший уровень приоритета. В дополнение к нему теперь имеются еще 3 уровня: High (высокий), Medium (средний) и Low (низкий). Для каждого источника запроса на прерывание его приоритет может назначаться из этих трех уровней. При поступлении запроса на обслуживание прерывания с более высоким уровнем приоритета процесс обработки прерывания с более низким уровнем приостанавливается, и процессор начинает обрабатывать более значимый запрос. Запросы на прерывание, которым присвоен статус High, обслуживаются немедленно после поступления, даже если центральный процессор сильно загружен.

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

В микроконтроллеры XMEGA добавлен еще один полезный периферийный модуль — контроллер прямого доступа к памяти (DMA). Его наличие существенно увеличивает производительность кристалла, особенно для задач реального времени. Использование DMA сокращает время обмена данными между памятью и периферией, между отдельными областями памяти, а также между различными периферийными блоками. Центральное процессорное ядро не принимает участия в процессе передачи данных, вся обработка и сопровождение потока лежит на контроллере прямого доступа к памяти.

Контроллер DMA у XMEGA имеет 4 канала, причем приоритет обслуживания и распределения между каналами программируется. Он поддерживает пакетную передачу данных с переменной длиной пакета — 1, 2, 4 или 8 байт в посылке. Общая длина передачи может варьироваться от 1 кбайт до 64 кбайт с возможностью повторения. Допускается формирование запроса на прерывание по окончании процесса передачи данных. Каждый канал DMA может работать как на прием, так и на передачу. Контроллер DMA может получать доступ к внутренней шине данных микроконтроллера только в том случае, если она свободна и центральный процессор ничего на ней не делает. Приоритет доступа к внутренней шине данных распределяет специальный арбитражный узел, аппаратно отнесенный к подсистеме управления памятью данных микроконтроллера. Подробнее работу контроллера DMA рассмотрим в третьей части цикла статей.

Память

На кристалле XMEGA традиционно для AVR присутствует память Flash, EEPROM и SRAM. Все области памяти имеют линейный диапазон адресов и занимают единое пространство на кристалле. Типичная структура, состав и размеры встроенных массивов памяти для семейства XMEGA приведены в таблице.

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

Flash-память состоит из области программы (Application Section) и области загрузчика (Boot Loader Section). Application Section у XMEGA содержит отдельную область для хранения данных со своими битами защиты, которая называется Application Table и используется в качестве энергонезависимого хранилища данных. Основная особенность Application Table заключается в том, что она оптимизирована для представления данных в виде таблиц, чего раньше не было. По задумке Atmel, назначение этой области во Flash-памяти заключается в резервном хранении массивов данных, которые находятся в EEPROM (у всех AVR имеются определенные проблемы с гарантированным сохранением данных в EEPROM в условиях нестабильного, плавающего напряжения питания). Область Application Table можно использовать для безопасной эмуляции EEPROM, сохраняя в ней данные, предназначенные для EEPROM. Если такой потребности нет, то в Application Table можно записывать программный код, увеличивая размер основной области программы.

В Application Section добавлен еще один сегмент, который есть только у XMEGA. Сегмент состоит из двух секций, которые не могут быть стерты посредством программатора и командой Chip Erase. Одна из секций имеет название Calibration and Signature Row и хранит записанные на фабрике значения калибровочных констант (для генераторов, например) и уникальный сериальный номер (Serial Number) кристалла. В нем содержится информация о номере партии микроконтроллеров (LOT ID), номер кремниевой пластины и даже координаты X–Y положения данного кристалла на пластине. Секция доступна для чтения как с помощью программатора, так и из приложения. Вторая секция не имеет специального названия и предназначена для хранения пользовательских данных. Она доступна для чтения-записи как с помощью программатора, так и из программы по специальным командам, но команда Chip Erase не будет оказывать на содержимое этой секции никакого воздействия. Команды SPM при самопрограммировании кристалла тоже не будут оказывать воздействия на калибровочные области Flash-памяти.

Важный вопрос — сохранность данных, размещенных в массиве Flash-памяти. Технологические изменения коснулись и этой сферы. По информации Atmel, срок гарантированного сохранения данных при хранении и работе кристалла при 25 °С составляет 100 лет, а при 85 °С снижается до 25 лет. Естественно, что эти значения рассчитаны на основании измерений процессов старения Flash-ячеек на кристаллах.

Память данных в XMEGA организована в виде несегментированного блока с линейной адресацией (стартовый адрес 0х000000), включая область для хранения энергонезависимых данных EEPROM. Таким образом, логическое пространство памяти данных XMEGA едино. Физически же область данных состоит из области регистров ввода/вывода (I/O Memory, до 4 кбайт), включая 16 регистров общего назначения, внутренней EEPROM (до 4 кбайт), внутренней SRAM и области внешней памяти External Memory (если есть). Отметим, что первые три области памяти будут иметь единую адресную структуру для всех микроконтроллеров XMEGA (одинаковые начальные адреса).

Наибольший интерес в памяти XMEGA с точки зрения обновлений представляет именно блок EEPROM. Во-первых, доступ по записи и чтению к EEPROM теперь осуществляется как побайтно, так и постранично. Во-вторых, адресация EEPROM может осуществляться двояким образом: стандартно (установка по умолчанию) в рамках выделенного адресного пространства с помощью специального набора регистров, либо непосредственной адресацией в коде команды к любой ячейке EEPROM в выделенном сегменте общего адресного пространства памяти данных. И если раньше для чтения-записи необходимо было выполнять определенную и длинную последовательность команд (от 7 до 9 инструкций), то сейчас эти операции выполняются одной командой, как будто данные непосредственно пишутся в ячейку памяти. Помимо удобства в работе, это приводит к уменьшению размера кода и снижению энергопотребления кристалла. Конечно, при этом лишь эмулируется поведение EEPROM как SRAM, потому что физически процессы программирования ячейки EEPROM занимают значительное время (на самом деле данные лишь помещаются в промежуточный буфер, а все остальные процессы протекают скрыто для программиста).

Для организации работы с внешней памятью (External Memory) новые микроконтроллеры имеют до 4 специализированных портов ввода/вывода. Это позволяет XMEGA работать с микросхемами внешней памяти типа SRAM, SDRAM, жидкокристаллическими ЖК-дисплеями и другими внешними устройствами, которые имеют похожий интерфейс доступа. Обслуживанием взаимодействия микроконтроллера с внешней памятью любого типа традиционно занимается контроллер интерфейса внешней шины (EBI). Массив адресов External Memory (если она есть) всегда начинается сразу после блока внутренней SRAM и заканчивается адресом 0xFFFFFF. Для внешней памяти типа SRAM адресное пространство составляет 16 Мбайт. Для ряда микроконтроллеров допускается мультиплексирование шин адреса и данных при организации внешнего интерфейса. Для внешней памяти типа битовой SDRAM адресное пространство составляет 128 Мбит, при этом поддерживаются режимы работы с 4-битными и 8-битными полями данных.

Тактирование

Микроконтроллеры XMEGA могут работать в двух частотных диапазонах: 0–12 МГц при напряжении питания от 1,8 до 2,7 В и 0–32 МГц при напряжении питания от 2,7 до 3,6 В. Они имеют развитую систему тактирования, принцип построения которой показан на рис. 2.

Структура системы тактирования XMEGA

Система тактирования объединяет внутренние и внешние генераторы. Для получения широкого спектра тактовых частот могут использоваться внутренний узел ФАПЧ (PLL) и делители частоты. Доступна опция автоматической калибровки внутренних генераторов во время работы программы. Может быть разрешена работа узла, который определяет пропадание внешнего тактового сигнала. При этом разрешается специальное немаскируемое прерывание, и микроконтроллер переключается на тактирование от внутреннего источника на кристалле.

После сброса XMEGA всегда начинает работать от внутреннего генератора частотой 2 МГц. При этом не используются никакие делители. Для управления временем ожидания стабилизации работы системы тактирования используются два fuse-бита (SUT0 и SUT1), которые устанавливают период ожидания как 1, 4 или 64 мс. Тактирование ядра начинается еще через 6 тактов генератора.

При нормальном функционировании микроконтроллера XMEGA источник системного тактового сигнала и установки предварительных делителей могут изменяться из программы пользователя в любое время. В составе системы тактирования есть также специальный регистр LOCK, с помощью которого установки системы тактирования могут быть зафиксированы из программы пользователя. Когда бит LOCK в этом регистре установлен, содержимое регистров CTRL (отвечает за выбор источника сигнала для системной тактовой частоты) и PSCTRL (отвечает за коэффициент предварительного деления системной тактовой частоты) уже не может быть изменено вплоть до следующего сброса микроконтроллера. Этот важный бит LOCK в свою очередь защищен системным механизмом Configuration Change Protection (CCP), аналогично операциям SPM и LPM. Бит LOCK будет автоматически сброшен только после сброса микроконтроллера.

XMEGA содержит четыре внутренних источника тактовой частоты:

  1. ULP32K: RC-генератор частотой 32 кГц с ультранизким энергопотреблением. Он предназначен для обеспечения системных функций микроконтроллера и не может использоваться в качестве источника основной тактовой частоты. ULP32K отвечает за тактирование сторожевого таймера, часов реального времени, формирование задержки при старте микроконтроллера. Точность частоты этого генератора во всем диапазоне температур и напряжений питания колеблется в пределах 30% и определяется при изготовлении на фабрике.
  2. RC32K: калиброванный RC-генератор частотой 32 кГц, который может использоваться в качестве источника системной тактовой частоты. RC32K также является источником опорного сигнала для процедуры калибровки и для часов реального времени. Значение частоты этого генератора программируется при изготовлении кристаллов, калибровочные значения записываются в калибровочные регистры. Точность фабричной установки частоты составляет 1%.
  3. RC2M: калиброванный RC-генератор частотой 2 МГц, снабженный ФАПЧ (PLL). Именно он по умолчанию используется в качестве источника системной тактовой частоты при запуске микроконтроллера. Точность фабричной установки частоты составляет 2%, при этом во время работы микроконтроллера может осуществляться автоматическая калибровка.
  4. R32M: калиброванный кольцевой генератор частотой 32 МГц, которая изменяется в зависимости от условий производства микроконтроллеров, рабочей температуры и напряжения питания. Точность калибровки при изготовлении кристаллов составляет 2%. Генератор, снабженный PLL, может использоваться в качестве источника системной тактовой частоты. Во время работы микроконтроллера может осуществляться автоматическая калибровка.

Помимо вышеперечисленных генераторов для XMEGA могут традиционно использоваться и другие источники тактирования — внутренний генератор с внешним частотозадающим элементом (кварцевым резонатором) или внешний генератор. Организация работы XMEGA с такими источниками идентична «старшим» кристаллам megaAVR и здесь рассматриваться не будет.

Встроенный узел PLL предназначен для формирования высокой системной тактовой частоты, которая получается умножением входной частоты на программируемый коэффициент, значение которого лежит в пределах от 1 до 31. В качестве источников входной частоты для PLL могут использоваться RC2M, R32M, генератор с внешним кварцем 0,4–16 МГц или внешний тактовый сигнал. Минимальное значение частоты на входе не должно быть ниже 440 кГц. Узел PLL может формировать выходную частоту вплоть до 200 МГц, но это пока не имеет смысла и зарезервировано для будущих разработок, так как максимальная внутренняя периферийная частота таймеров составляет 128 МГц.

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

Источник основной тактовой частоты XMEGA выбирается программно и может быть переключен во время работы микроконтроллера. Встроенная аппаратная логика предотвращает небезопасное переключение системной частоты. Так, невозможно выбрать нестабильный или запрещенный генератор, нельзя запретить источник, уже генерирующий системную тактовую частоту. Доступный по чтению бит статуса в регистре STATUS для каждого генератора позволяет оперативно, из программы, проверить готовность генератора к работе.

Полученный системный тактовый сигнал сначала проходит блок предварительных делителей (рис. 3) с суммарным коэффициентом деления в диапазоне от 1 до 2048, и только потом подается на ядро и периферийные блоки. Гарантируется, что все выходные сигналы производных частот всегда имеют четкое фазовое соответствие с входным сигналом, и что при работе системы не возникает импульсных выбросов или промежуточных частот в моменты программного изменения установок делителей. Новые параметры всегда обновляются по фронту сигнала с наименьшей из генерируемых частот.

Структура модуля формирования тактовых сигналов

Для диагностики сбоев или отказов в работе внешних источников тактового сигнала на кристалле XMEGA есть встроенная аппаратная схема мониторинга. По умолчанию эта опция отключена и может быть разрешена со стороны прикладной программы. Отметим, что снова выключить схему мониторинга можно только путем общего сброса микроконтроллера. Если по каким-то причинам системный тактовый сигнал от внешнего источника пропадает, то микроконтроллер принудительно и безусловно переключается на внутренний генератор RC2M (2 МГц), сбрасывая при этом содержимое регистров CTRL генератора и системной тактовой частоты к значениям по умолчанию. Генерируется флаг соответствующего немаскируемого прерывания, которое должно быть обязательно обслужено, даже если внешний источник не использовался в качестве системной тактовой частоты. В этом случае внешний генератор автоматически блокируется, в то время как системный тактовый сигнал продолжает поступать на микроконтроллер. Мониторинг автоматически запрещается во всех режимах пониженного энергопотребления (внешний источник тактирования останавливается), а при выходе из «спящего» режима — автоматически восстанавливается. Установки схемы мониторинга защищены системным механизмом Configuration Change Protection (CCP).

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

Система тактирования микроконтроллеров XMEGA содержит узел внутренней калибровки. Две встроенные цифровые ФАПЧ (DFLL) могут использоваться для повышения точности внутренних генераторов на RC2M (2 МГц) и R32M (32 МГц). Блок DFLL сравнивает сигнал генератора с более точной частотой для выполнения автоматической калибровки генератора во время работы программы. В качестве таких опорных сигналов могут выступать внутренний калиброванный генератор RC32K (32 кГц), либо генератор RTC, стабилизированный отдельным внешним часовым кварцем. Работа DFLL будет остановлена при переходе в режимы пониженного энергопотребления, которые предполагают остановку генераторов. После «пробуждения» DFLL возобновит работу с калибровочным значением на момент «засыпания». Чтобы вернуть DFLL калибровочные значения по умолчанию, необходимо запретить ее работу перед входом в «спящий» режим и разрешить после выхода из него.

Внутренняя калибровка не обслуживает генератор RC32K. Соответствующий регистр RC32KCAL используется для его оперативной калибровки. После сброса кристалла значение, определенное на фабрике, записывается в этот регистр из секции памяти Calibration and Signature Row. Содержимое этого регистра может быть также изменено из программы пользователя во время работы.

Схема разводки системы тактирования на кристалле XMEGA достаточно сложна, поэтому проще адресовать читателя к описанию на микроконтроллер. Заметим, что не все тактовые сигналы требуются одновременно для работы XMEGA — тактирование для ядра и периферии может быть остановлено с помощью режимов пониженного энергопотребления и регистров снижения мощности. Подробнее об особенностях работы и установках системы тактирования XMEGA можно прочитать в описании на микроконтроллер и в Application Note AVR1003.

Блок обработки аналоговых сигналов

На кристаллы XMEGA интегрированы быстродействующий АЦП последовательных приближений, быстрый ЦАП и развитый узел аналоговых компараторов. Входы и выходы аналоговых блоков выведены на линии портов ввода/вывода PORTA и PORTB. Микроконтроллеры XMEGA могут иметь 1 или 2 восьмиканальных аналоговых порта, или не иметь аналоговых функций вообще (для младших версий кристаллов). Каждый аналоговый порт может иметь 1 блок АЦП, 1 блок ЦАП и 2 аналоговых компаратора. К аналоговым блокам также относятся встроенные в микроконтроллер датчик температуры и точный ИОН, выходное напряжение которого является источником для двух других узлов формирования опорного напряжения внутри кристалла — 1 и 3 В. Точность встроенного ИОН калибруется на фабрике не хуже 1% во всем диапазоне рабочих температур и напряжений питания.

АЦП имеет разрядность 12 бит, скорость преобразования до 2 миллионов выборок в секунду, встроенную калибровку. Запуск АЦП на преобразование может быть реализован по внешнему событию, результаты преобразования могут передаваться через DMA без участия центрального процессора. Входные цепи построены достаточно гибко, допускается как несимметричное, так и дифференциальное включение. На кристалле XMEGA также есть дополнительный промежуточный узел усиления входного аналогового сигнала, который позволяет значительно расширить динамический диапазон входных напряжений преобразования в случае, когда входы АЦП включены в дифференциальном режиме. Коэффициент усиления этого узла может программироваться и принимать ряд целых значений 1, 2, 4, 8, 16, 32 или 64. Встроенный механизм калибровки, который запускается из программы пользователя, позволяет уменьшить аддитивную и мультипликативную составляющие погрешности в конечном результате преобразования.

Наибольший интерес вызывает использование в АЦП так называемых виртуальных каналов. Они используют один и тот же аппаратный узел АЦП для осуществления преобразований, но благодаря специальной архитектуре одновременно и независимо друг от друга может выполняться до четырех преобразований. Результаты преобразования сохраняются в независимых регистрах. Данная опция (виртуальные каналы) может помочь снизить сложность программного обеспечения, так как различные программные модули могут инициировать начало преобразования и считывать результаты независимо друг от друга. Подробнее работу АЦП и виртуальных каналов рассмотрим в третьей части цикла статей.

Разрядность цифро-аналогового преобразователя у XMEGA составляет 12 бит, скорость преобразования — до 1 Мбит/с. ЦАП тактируется сигналом периферийной тактовой частоты, запуск на преобразование могут осуществлять различные периферийные модули, подключенные к системе событий. ЦАП может работать в режиме пониженного потребления энергии — это означает, что он может выключаться между последовательными циклами преобразования. В этом режиме время преобразования может быть больше заявленного, так как при старте каждого нового преобразования будет требоваться некоторое время на приведение ЦАП в состояние готовности. Доступна также опция формирования нулевого выходного напряжения. Как правило, все цифро-аналоговые преобразователи не отличаются достаточной линейностью, когда формируемое выходное напряжение приближается к нулю. Встроенные возможности подстройки нуля и коэффициента усиления позволяют программисту калибровать и усиление, и смещение в ЦАП. Для этого на кристалле XMEGA в структуре ЦАП есть два регистра, в которые можно записывать 7-битные калибровочные данные для обоих параметров. Для достижения наилучших результатов при калибровке рекомендуется использовать одни и те же входные «параметры»: источник опорного напряжения, выходной канал, время преобразования и интервал обновления, что используется при нормальной работе ЦАП. Предел формируемого выходного напряжения определяется выбором источника опорного напряжения (AVCC, встроенный ИОН или внешний ИОН).

Начало преобразований ЦАП инициируется либо записью (нового) цифрового кода во входные регистры ЦАП, либо поступлением события из Event System. Информацию для преобразования во входные регистры можно записывать как из программы, так и через контроллер DMA.

Выход с ЦАП может быть выполнен двумя способами. В первом случае реализуется один постоянный линейный выход на выводе микроконтроллера. Во втором — формируются два независимых выхода на двух выводах микроконтроллера. Это сделано с помощью интегрированного в ЦАП устройства выборки-хранения, которое работает в качестве аналогового демультиплексора. Результат предыдущего преобразования ЦАП удерживается на одном выводе XMEGA, в то время как ЦАП осуществляет текущее преобразование. По окончании преобразования устройство выборки-хранения переключает выход ЦАП на второй вывод микроконтроллера. В результате два образующихся «канала» ЦАП могут работать независимо и выдавать два аналоговых сигнала, различающихся как по амплитуде, так и по частоте. В XMEGA предусмотрены индивидуальные регистры для записи входных данных на преобразование для обоих «каналов».

Линейный выход ЦАП можно подключать внутри кристалла к другим периферийным узлам, например, к входу встроенного АЦП или к входу встроенного аналогового компаратора. Выходы от устройства выборки-хранения не могут быть подключены внутри кристалла. Блок-схема ЦАП приведена на рис. 4.

Блок-схема ЦАП

Для организации корректной работы устройства выборки-хранения в ЦАП необходимо помнить про ряд временных ограничений, которые обязательно должны приниматься во внимание. Эти ограничения связаны с тактированием ЦАП от источника периферийной частоты и могут влиять на периоды заряда-разряда устройства выборки-хранения:

  • Время, необходимое для приведения ЦАП в состояние готовности, определяется как интервал между моментом окончания преобразования в канале А и стартом преобразования в канале В. Этот интервал не должен быть меньше 1 мкс.
  • Время обновления результата ЦАП определяется как временной интервал между последовательными преобразованиями в одном и том же канале ЦАП. Это время не должно быть больше 30 мкс.

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

Модуль аналоговых компараторов (АС) на кристалле XMEGA состоит из двух компараторов и блока мультиплексоров. Блок-схема АС приведена на рис. 5. АС может быть сконфигурирован для формирования запроса на прерывание и события в зависимости от различных комбинаций изменения входных уровней напряжения. Основные параметры компаратора (гистерезис и задержка распространения) могут программироваться. Аналоговые компараторы всегда группируются в пары (обозначаются АС0 и АС1) для каждого аналогового порта XMEGA. Они имеют идентичное поведение, но различные управляющие регистры.

Блок аналоговых компараторов

В качестве входных сигналов для АС могут выступать напряжение на внешних выводах микроконтроллера, источники напряжения внутри кристалла, а также масштабируемые напряжения. Все линии аналогового порта XMEGA могут быть выбраны как входы для АС. При этом к положительному входу компаратора могут быть подключены линии 0, 1, 2, 4 и 6, а к отрицательному — линии 0, 1, 3, 5 и 7. В качестве внутренних источников напряжения могут быть выбраны или выход ЦАП (если есть), или выход встроенного точного ИОН. Что касается масштабируемых входов, то эта особенность АС у XMEGA является наиболее интересной. АС содержит программируемый делитель, который имеет 64 градации для деления напряжения, подаваемого на его вход: напряжение питания микроконтроллера (Vcc), напряжение встроенного ИОН, либо входное аналоговое напряжение, подаваемое на вывод 0 соответствующего аналогового порта. Выбор источника напряжения для деления и коэффициент деления задаются программистом путем записи байта в соответствующий регистр CTRLB.

Многофункциональная линия 0 аналогового порта в микроконтроллерах XMEGA имеет еще одну важную особенность. Как видно из блок-схемы, цифровой выход компаратора АС0 может быть непосредственно подключен к этой линии, сигнализируя о том, что соотношение двух (например, внешних) аналоговых сигналов изменилось. Известно, что в микроконтроллерах с архитектурой AVR логический выход компаратора АС0 или АС1 может быть подключен к входу одного из таймеров-счетчиков внутри кристалла. Если этот таймер-счетчик работает в режиме захвата, то можно измерять длительность аналоговых сигналов или реализовывать АЦП двойного (двухтактного) интегрирования. Но теперь в XMEGA появляется новая дополнительная возможность — построение с помощью встроенного аналогового компаратора внешнего сигма-дельта АЦП, так как в XMEGA мы можем подключать логический выход компаратора еще и на внешний вывод микроконтроллера.

Программист в рамках работы своего приложения может выбирать некий компромисс между быстродействием узла компараторов и его энергопотреблением. Так, если требуется высокая скорость срабатывания, то узел будет потреблять 130 мкА при времени срабатывания 30 нс. Если же высокая скорость не нужна, то АС работает в штатном режиме с временем срабатывания 500 нс, потребляя при этом всего 20 мкА. Есть возможность трехступенчатого программирования гистерезиса: отсутствие гистерезиса (0 мВ), малый гистерезис (±10мВ) или большой гистерезис (±25 мВ). В ряде случаев это помогает избежать излишне частого переключения компаратора в системах с повышенным уровнем шума. Оба описанных параметра АС программируются установками в регистре ACnCTRL, в этом же регистре определяется тип генерации прерывания после появления сигнала на выходе компаратора. Это может быть генерация события или запроса на прерывание по изменению состояния выхода или по фронту (срезу) выходного сигнала компаратора. События будут всегда генерироваться при тех же условиях, при которых будет генерироваться и запрос на прерывание, причем на генерацию события не влияет, разрешены прерывания или нет.

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

И, наконец, рассмотрим режим работы АС в режиме «окна» (Window Mode). Два аналоговых компаратора, принадлежащие одному и тому же аналоговому порту, могут быть программным образом сконфигурированы для работы вWindow Mode. Принцип работы AC в этом режиме показан на рис. 6. Можно задавать различную ширину «окна» и его положение относительно напряжения питания микроконтроллера или «земли». Входное напряжение, которое подвергается анализу, может быть выше «окна», ниже него или попадать точно внутрь «окна». В любом из этих случаев генерируется соответствующее прерывание и событие. Разрешение аналоговому компаратору на работу в этом режиме, а также выбор варианта, по которому генерируется событие или прерывание, осуществляется путем программирования регистра WINCTRL.

«Оконный» режим работы аналоговых компараторов

Таймеры-счетчики, сторожевой таймер и часы реального времени

Все таймеры-счетчики (Т/С) в XMEGA 16-разрядные и имеют одинаковую структуру. Общие функции: формирование интервалов времени, сигналов заданной частоты и сигналов ШИМ, измерение временных параметров цифровых сигналов, синхронизация с системой событий. Совместно с Т/С могут использоваться два внешних модуля расширения — модуль высокого разрешения (Hi-Res) и модуль формирования специализированных частотных сигналов для задач управления электродвигателями (AWeX).

Количество таймеров-счетчиков у разных микроконтроллеров семейства XMEGA составляет от 5 до 8. Блок Т/С состоит из базового счетчика и набора каналов захвата-сравнения. Базовый счетчик может использоваться для подсчета тактовых циклов или событий. Он имеет возможность управления направлением счета и периодом установки временного интервала. Каналы захвата-сравнения могут использоваться совместно с базовым счетчиком для реализации функций сравнения и генерации различных цифровых последовательностей или выполнять функции захвата. Сравнение и захват являются взаимоисключающими операциями, то есть какой-то один таймер-счетчик не может одновременно и генерировать заданную цифровую последовательность на выходе, и осуществлять функцию захвата. Блоки Т/С на кристаллах XMEGA обозначаются T/C0 и T/C1, причем Т/С0 имеет 4 канала захвата-сравнения, в то время как Т/С1 — всего 2 канала. Все таймеры-счетчики для тактирования могут быть присоединены либо к сигналу периферийной тактовой частоты, либо к системе событий.

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

Сторожевой таймер (WDT) предназначен для постоянного мониторинга корректного исполнения программного потока, делая возможным восстановление системы в случае сбоев. WDT работает постоянно, если его работа разрешена системой. Если WDT не сбрасывается из программы в течение предустановленного периода времени, то инициируется общий сброс микроконтроллера. Периодический сброс сторожевого таймера осуществляется путем выполнения команды WDR (Watchdog Timer Reset) в ходе выполнения основной программы приложения. Это — стандартный режим. Всего в микроконтроллерах XMEGA для стандартного тайм-аута WDT определены 11 возможных значений, которые могут быть выбраны пользователем в интервале от 8 мс до 8 с. Сторожевой таймер может быть сброшен в любое время в течение этого периода. Значение «по умолчанию» определяется fuse-битами.

Сторожевой таймер также может работать и в режиме «окна» (Window Mode). Здесь пользователь может самостоятельно определить временной слот, в течение которого WDT должен быть сброшен для нормального функционирования системы. Если WDT сбрасывается слишком рано или слишком поздно, то это считается ошибкой и генерируется системный сброс процессора. В режиме «окна» WDT использует два различных периода тайм-аута — закрытый (closed, TOWDTW) и открытый (normal, TOWDT). Закрытый период тайм-аута определяет продолжительность от 8 мс до 8 с, в течение которого WDT не должен сбрасываться пользователем, в противном случае генерируется системный сброс. Открытый период тайм-аута также лежит в пределах от 8 мс до 8 с, но в течение этого периода сторожевой таймер может (и должен!) быть сброшен. Открытый период всегда следует за закрытым периодом, поэтому общее время продолжительности тайм-аута будет складываться из времен обоих тайм-аутов — закрытого и открытого. Значение закрытого периода по умолчанию определяется fuse-битами. В качестве иллюстрации на рис. 7, 8 приведено сравнение стандартного и «оконного» режимов работы сторожевого таймера в микроконтроллерах XMEGA.

Стандартный режим работы сторожевого таймера
«Оконный» режим работы сторожевого таймера

Сторожевой таймер, если разрешен, будет работать во всех энергосберегающих режимах. Он тактируется сигналом с частотой 1 кГц, которая получается делением частоты выходного сигнала внутреннего генератора ULP32К. Так как этот генератор работает независимо от центрального ядра, то WDT будет продолжать функционировать и вызовет системный сброс микроконтроллера, даже если по каким-то причинам пропадет основной тактовый сигнал. Благодаря сверхнизкому энергопотреблению точность формирования частоты генератором ULP32K не слишком высока (см. описание на микроконтроллер), поэтому точное значение периода тайм-аута может варьироваться от микроконтроллера к микроконтроллеру. При разработке приложения с использованием WDT подобный разброс значений должен обязательно учитываться.

Сторожевой таймер снабжен механизмом защиты от непреднамеренного изменения его установок. Можно использовать специальный бит Change Enable (CEN), без установки которого невозможно поменять содержимое управляющих регистров WDT. Можно также использовать fuse-бит WDT Lock. Если установить этот бит, то содержимое управляющего регистра сторожевого таймера уже нельзя будет переписать, и, следовательно, станет невозможно запретить работу WDT из приложения пользователя. После системного сброса WDT начинает работу в cконфигурированном режиме. Интересно отметить, что при установленном fuse-бите, когда WDT работает в «оконном» режиме, периоды тайм-аута не могут быть изменены, но сам «оконный» режим может быть разрешен или запрещен.

Часы реального времени (RTC) функционируют в режимах пониженного энергопотребления, пробуждая кристалл через регулярные интервалы времени. Блок-схема RTC в микроконтроллерах XMEGA показана на рис. 9. В основе лежит 16-битный счетчик, который считает импульсы опорной частоты и выдает событие или запрос на прерывание по переполнению или по достижению заданного значения. Опорная частота (базовый вариант) получается при помощи точного внешнего часового кварца 32,768 кГц, причем дизайн счетчика на кристалле оптимизирован для максимально низкого энергопотребления.

Блок-схема часов реального времени

Опорная частота для RTC может составлять и 1,024 кГц. В этом случае она получается внутренним делением частоты 32 кГц от одного из трех источников: генератора на внешнем часовом кварце 32 кГц (как в базовом варианте), внутреннего генератора RC32K (32 кГц) или генератора ULP32K, который входит в состав сторожевого таймера и имеет минимальное энергопотребление. В состав RTC также входит программируемый делитель (на 7 фиксированных значений) для понижения частоты сигнала перед подачей его на основной счетчик. Это позволяет получить максимальное время ожидания более 18 часов.

Существует два пути для формирования запроса на прерывание и события — по сравнению или по переполнению (рис. 9). В первом случае счетчик RTC продолжает считать дальше, а во втором — обнуляется при достижении значения, записанного в регистр Period.

Модули последовательных коммуникаций

Микроконтроллеры XMEGA снабжены богатым арсеналом аппаратных модулей для организации последовательного обмена данными с внешним миром: SPI, TWI и USART, причем USART также может работать и в режиме аппаратной поддержки IrDA. Количество и состав периферийных коммуникационных блоков XMEGA варьируется от подсемейства к подсемейству. Так, USART может быть от 5 до 8 модулей, а SPI и TWI — до 4. Первое подсемейство XMEGA (А1) имеет 8 модулей USART и по 4 модуля SPI и TWI. Самое «маленькое» подсемейство (А3) будет иметь 5 блоков USART, 4 блока SPI и 2 блока TWI.

Аппаратная реализация коммуникационных интерфейсов TWI и SPI, а также организация работы с ними у микроконтроллеров XMEGA идентичны «старшим» кристаллам megaAVR и в цикле статей рассматриваться не будут.

Универсальный синхронный-асинхронный последовательный приемопередатчик (USART) в микроконтроллерах XMEGA поддерживает полнодуплексный обмен в асинхронном и тактируемом синхронном режимах. Он может быть сконфигурирован в режим эмуляции SPI Master, при этом поддерживаются все 4 режима работы SPI (Mode 0, 1, 2 и 3) и есть возможность выбора порядка передачи данных: первым передается LSB или MSB. Когда USART установлен в режим эмуляции SPI Master, вся специальная встроенная логика USART запрещена. Активными остаются буферы приема и передачи, сдвиговые регистры и генератор скорости передачи. Управление внешними выводами и формирование запросов на прерывание идентичны для обоих режимов. Обмен данными USART фреймирован, формат кадра может специфицироваться пользователем. USART буферизован на прием и на передачу. Различные вектора прерываний для индикации завершения приема или передачи обеспечивают гибкое управление обменом данными посредством прерываний. Также может быть разрешена работа схемы формирования и контроля бита четности. Подробнее структуру и работу USART целесообразно смотреть в описании на микроконтроллер.

Рассмотрим подробнее новый интересный режим работы у USART в микроконтроллерах XMEGA — физическую поддержку IrDA (имеется в виду физическая модуляция-демодуляция сигнала на скоростях обмена до 115,2 кбод). Поддерживаются три схемы модуляции: 3/16 периода скорости обмена данными, фиксированная длительность импульсов (программируется, 8 бит), запрещение модуляции импульса.

Напомним основы IrDA. Байт, который требуется передать, посылается в USART из CPU, USART добавляет старт/стоп биты и передает байт последовательно, начиная с LSB. Логический «0» (вспышка света) передается одиночным ИК-импульсом длиной от 1,6 мс до 3/16 периода передачи битовой ячейки, а логическая «1» передается как отсутствие ИК-импульса. Отсюда следует, что минимальное энергопотребление гарантируется при фиксированной длине импульса 1,6 мс. По окончании кодирования битов необходимо пропустить ток через ИК-светодиод, чтобы выработать световой импульс требуемой интенсивности. При приеме ИК-импульсы поступают на PIN-диод, который преобразует их в импульсы тока. Они затем усиливаются, фильтруются и сравниваются с пороговым уровнем для преобразования в логические уровни.

Всего в XMEGA есть один доступный модуль IrDA, который может быть присоединен к любому из блоков USART (рис. 10). В режиме IrDA сигналы между USART и выводами RX/TX коммутируются, как показано на рис. 10. Для приема можно запрограммировать минимальную длительность импульса, которая будет интерпретироваться как логический «0». Все более короткие импульсы будут декодироваться в логическую «1» (отсутствие импульса).

Работа USART в режиме эмуляции IrDA

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

В качестве входа для приемника IrDA можно также выбрать канал системы событий. Это автоматически запретит RX-вход с вывода микроконтроллера. Система событий имеет цифровой входной фильтр (DIF) на каналах событий, что может быть использовано для фильтрации. Подробнее мы рассмотрим это во второй части цикла статей, когда будем описывать работу Event System.

Аппаратные устройства шифрования

В состав микроконтроллеров XMEGA введены аппаратные средства обеспечения защиты информации. В качестве реализованных стандартов компания Atmel выбрала два широко распространенных стандарта шифрования — AES и DES. У XMEGA шифрование по стандарту DES (поддержка DES и triple-DES) реализуется выполнением специальной команды DES, входящей в состав системы команд процессорного ядра. Команда DES короткая, она исполняется за один период основной тактовой частоты. Для шифрования требуется поместить 8-байтный ключ и 8-байтный блок данных в регистровый файл, а затем последовательно выполнить команду DES 16 раз для шифрования или дешифровки блока данных. Криптомодуль AES шифрует и дешифрует блоки данных размером 128 бит с использованием 128-битного ключа. И ключ, и данные должны быть записаны в модуль до начала выполнения цикла команд кодирования-декодирования. Длительность процесса обработки блока составляет 375 периодов периферийной тактовой частоты, после чего данные можно использовать по назначению.

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

Микроконтроллеры XMEGA поддерживают 5 режимов пониженного энергопотребления, как и все современные «базовые» микроконтроллеры AVR.

  • Режим холостого хода (Idle), в котором прекращает работу только процессорное ядро и фиксируется содержимое памяти программ. Все периферийные модули продолжают функционирование в обычном режиме, включая контроллер DMA и систему событий. Все разрешенные системы тактирования также продолжают работать. В режиме Idle разбудить процессорное ядро может любой периферийный блок, причем ядро начинает работу сразу же, без задержки.
  • Режим микропотребления (Power Down), в котором сохраняется содержимое регистрового файла, но останавливается работа системы тактирования. Выход из Power Down возможен по общему сбросу микроконтроллера, по разрешенному внешнему прерыванию, по совпадению адреса в блоке двухпроводного последовательного интерфейса TWI. Сторожевой таймер также может разрешить выход из режима микропотребления (при условии, что он сам разрешен).
  • Режим сохранения энергии (Power Save), который идентичен Power Down, но в котором еще допускается независимая работа RTC. Все прочие генераторы запрещены. Выход из режима Power Save осуществляется при тех же условиях, что и для Power Down, и дополнительно может происходить по сигналу от RTC.
  • Основной режим ожидания (Standby). Идентичен режиму Power Down, но здесь работа тактового генератора не прекращается. Это гарантирует быстрый выход микроконтроллера из режима ожидания.
  • Дополнительный режим ожидания (Extended Standby). Идентичен режиму Power Save, но здесь работа тактового генератора тоже не прекращается. Это гарантирует быстрый выход микроконтроллера из режима ожидания.

После выхода из режимов пониженного энергопотребления центральное процессорное ядро блокируется в тактировании на 4 такта генератора перед началом выполнения программы. Это время задержки будет присутствовать всегда. Но общее время выхода будет также зависеть от источника тактового сигнала, его состояния и конкретного режима пониженного энергопотребления. Так, задержка старта для любого из внутренних RC-генераторов составляет 6 тактов, а для внешних генераторов определяется конфигурацией битов XOSCSEL[3:0] в управляющем регистре XOSCCTRL.

Микроконтроллеры XMEGA имеют примечательную архитектурную особенность, позволяющую значительно снизить энергопотребление всего кристалла как в активном режиме, так и в режиме холостого хода Idle. Новые регистры PRR (Power Reduction Register) позволяют индивидуально останавливать тактирование для периферийных блоков путем установки в PRR конкретного бита, соответствующего определенному периферийному блоку. При этом текущее состояние этого блока «замораживается» и соответствующие регистры ввода/вывода не могут быть записаны или прочитаны. Ресурсы, ассоциированные с этим блоком и занятые этим блоком, тоже будут оставаться недоступными, поэтому в большинстве случаев имеет смысл запретить работу периферийного блока до прекращения подачи тактовой частоты. Возобновление тактирования узла приводит к полному восстановлению его состояния на момент «заморозки». В других режимах пониженного энергопотребления использование регистров PRR не требуется, так как сигнал периферийной тактовой частоты отсутствует, и тактирование периферии не осуществляется.

Отметим, что не все микроконтроллеры XMEGA имеют набор периферийных модулей, полностью ассоциированный с битами в регистрах PRR. Может случиться, что для каких-то блоков на кристалле в регистрах нет соответствующих битов остановки тактирования. В таких случаях установка бита в PRR не будет иметь никакого эффекта.

Конфигурируемые порты ввода/вывода

Отличительной чертой построения портов ввода/вывода у AVR традиционно является наличие трех битов для каждого физического вывода микросхемы: бит данных (OUTx), бит управления направлением передачи данных (DIRx) и бит для отображения логического уровня сигнала на физическом выводе микросхемы (INx). Такое решение позволяет полностью контролировать процесс ввода/вывода и операции «чтение–модификация–запись», что особенно актуально при работе микроконтроллера в условиях внешних электрических помех.

Это удачное решение было оставлено для новых микроконтроллеров XMEGA, был также сохранен весь базовый набор регистров. Но, тем не менее, для XMEGA сделан ряд усовершенствований. Например, порт ввода/вывода теперь можно программно установить в одну из шести возможных конфигураций. С целью более эффективного битового управления линиями портов ввода/вывода для OUTx и DIRx добавлены функции «установить» — SET, «сбросить» — CLR и «переключить» — TGL. Для этого разработчикам XMEGA пришлось ввести дополнительные наборы регистров для OUT (OUTSET, OUTCLR, OUTTGL) и DIR (DIRSET, DIRCLR, DIRTGL). Но главная особенность портов ввода/вывода — так называемые виртуальные регистры.

Идея введения виртуальных регистров возникла из потребности обеспечить удобное и простое управление отдельными линиями всех портов ввода/вывода XMEGA. Виртуальные регистры позволяют стандартным регистрам порта, которые расположены в адресном пространстве расширенной области ввода/вывода, быть отображенными на «базовое» для AVR адресное пространство I/O памяти. Когда такое отображение осуществляется, запись в виртуальный регистр будет эквивалентна записи в реальный регистр порта. Это позволяет использовать специфические команды раздела I/O памяти (с адресами 0x00–0x1F) для манипулирования битами, а также специфические команды I/O памяти IN и OUT (в диапазоне адресов 0x00–0x3F) для тех регистров порта, которые у XMEGA находятся в расширенной области I/O памяти. Всего у микроконтроллеров XMEGA есть 4 виртуальных порта, поэтому одновременно может быть отображено до 4 портов ввода/вывода. Отображаемые регистры — IN, OUT, DIR и INTFLAGS.

Заключение

Отметив свое десятилетие в 2006 году, платформа AVR 8-bit RISC остается популярной во всем мире и продолжает активно развиваться благодаря постоянному совершенствованию технологии Atmel, появлению новых версий микроконтроллеров и совершенствованию средств поддержки разработок — как аппаратных, так и программных. Появление нового, более современного и мощного семейства AVR еще раз доказывает, что эта платформа реально претендует на лидерство в сегменте современных высокопроизводительных 8-разрядных микроконтроллеров универсального назначения, действительно перекрывая многочисленные потребности разнообразных конечных приложений. И, как всегда, выход XMEGA на рынок будет поддержан наличием качественного и доступного инструментального программного обеспечения, примерами программ, квалифицированной технической поддержкой специалистов центра AVR корпорации Atmel в Норвегии.

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

Продолжение следует

Литература

  1. Курилин А. Микроконтроллеры AVR: что нового? // Компоненты и технологии. 2006. № 1.
  2. XMEGA Training Data // Atmel AVR Distributor Training — Atmel Norway, September 2007.
  3. XMEGA Hands-On Session // Atmel AVR Distributor Training — Atmel Norway, September 2007.

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *