Предлагаемый к ознакомлению материал составлен на основе цикла статей к.т.н. Игоря Кривченко и к.т.н. Елены Ламберт «Микроконтроллеры XMEGA – новые возможности проверенного решения», опубликованных в журнале «Компоненты и Технологии» №№3, 4 и 5 за 2008 год. Статьи были любезно предоставлены фирмой «Эфо».
Статьи были доработаны в связи с сегодняшним состоянием линейки Xmega.
Введение.
В качестве информационной базы при подготовке цикла использовались оригинальные материалы центра 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.
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 МГц и с линиями ввода/вывода, которые устойчивы к уровню напряжения 5 В.
С точки зрения повышения степени интеграции и «начинки» кристалла, компания Atmel также ввела ряд существенных изменений. Основная идея всех нижеописанных новшеств – радикально уменьшить число необходимых для обеспечения системного функционирования всего кристалла внешних компонентов и сократить площадь общего решения на плате приложения.
Особенности нового поколения AVR XMEGA:
– пониженное энергопотребление:
– 2 мкА при работающем сторожевом таймере, блоке контроля питания и часах реального времени (RTC);
– технология picoPower второго поколения;
– новый сторожевой таймер (WDT);
– новый блок контроля питания (Brown-out 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, ЕЕРОМ, Fuses, Lock-биты и User Signature Row. Он использует линию Reset для тактового сигнала (PDI_CLK) и специальную линию Test для ввода/вывода данных (PDI_DATA). Стандартный JTAG-интерфейс также присутствует в большинстве кристаллов XMEGA и может быть использован для программирования или отладки через 4-х проводной интерфейс JTAG. По умолчанию все обращения к блоку отладки предполагают доступ к физическому интерфейсу PDI.
Также Atmel выпускает оценочные платы под общим названием AVR Xplained, предназначенные для разработки и отладки программного кода под Xmega различных семейств.
Семейства микроконтроллеров Xmega.
Первыми были выпущены микроконтроллеры старшего подсемейства А1 в корпусе TQFP100 – ATxmega128A1 с объемом Flash-памяти 128 кБ. После чего было проведено последовательное расширение номенклатуры кристаллов XMEGA с разными размерами массивов памяти, количеством и ассортиментом периферийных блоков, сниженной стоимостью микроконтроллеров и более дешевыми корпусами с количеством выводов 64 и 44. Это были подсемейства A3 и А4 соответственно. При этом внутри семейства XMEGA используется одна и та же таблица адресов периферии для обеспечения полной программной совместимости при переходе к новым кристаллам. Состав подсемейств XMEGA показан на рисунке.
На сегодняшний день помимо семейства A выпущены семейства B, С и D. Семейство A является прототипом других семейств в плане тестового введения новых модулей в линейку Xmega. Так, проведя тестовое добавление драйвера сегментного ЖКИ в подсемейство A3 (контроллер ATxmega128A3B), Atmel выпустил семейство B. После добавления модуля USB (ATxmega128A1U) вышло семейство C. Семейство D является урезанной версией семейства A, из которого был убран Crypto Engine.
Новые особенности Xmega.
Наш экскурс начнем с заявленных планов Atmel по радикальному снижению энергопотребления кристаллов нового микроконтроллерного семейства, так как данный вопрос в современном электронном мире является одним из наиболее приоритетных. Для микроконтроллеров XMEGA используется технология picoPower второго поколения. Что же входит у 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 приведены в таблице.
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 организована в виде несегментированного блока с линейной адресацией (стартовый адрес 0x000000), включая область для хранения энергонезависимых данных 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, жидкокристаллическими LCD дисплеями и другими внешними устройствами, которые имеют похожий интерфейс доступа. Обслуживанием взаимодействия микроконтроллера с внешней памятью любого типа традиционно занимается контроллер интерфейса внешней шины (External Bus Interface – неприличная для нашего слуха аббревиатура EBI). Массив адресов External Memory (если она есть) всегда начинается сразу после блока внутренней SRAM и заканчивается адресом OxFFFFFF. Для внешней памяти типа SRAM адресное пространство составляет 16 Мб. Для ряда микроконтроллеров допускается мультиплексирование шин адреса и данных при организации внешнего интерфейса. Для внешней памяти типа битовой SDRAM адресное пространство составляет 128 Мбит, при этом поддерживаются режимы работы с 4-битными и 8-битными полями данных.
Тактирование.
Микроконтроллеры XMEGA могут работать в двух частотных диапазонах: 0 – 12 МГц при напряжении питания от 1.8 до 2.7 В и 0 – 32 МГц при напряжении питания от 2.7 до 3.6 В. Они имеют развитую систему тактирования, принцип построения которой показан на рисунке.
Система тактирования объединяет внутренние и внешние генераторы. Для получения широкого спектра тактовых частот могут использоваться внутренний узел ФАПЧ (PLL) и делители частоты. Доступна опция автоматической калибровки внутренних генераторов во время работы программы. Может быть разрешена работа узла, который определяет пропадание внешнего тактового сигнала. При этом разрешается специальное немаскируемое прерывание, и микроконтроллер переключается на тактирование от внутреннего источника на кристалле.
После сброса XMEGA всегда начинает работать от внутреннего генератора частотой 2 МГц. При этом не используются никакие делители. Для управления временем ожидания стабилизации работы системы тактирования используются два fuse-бита (SUT0 и SUT1), которые устанавливают период ожидания как 1, 4 или 64 мс. Тактирование ядра начинается еще через 6 тактов генератора.
При нормальном функционировании микроконтроллера XMEGA источник системного тактового сигнала и установки предварительных делителей могут изменяться из программы пользователя в любое время. В составе системы тактирования есть также специальный регистр LOCK, с помощью которого установки системы тактирования могут быть зафиксированы из программы пользователя. Когда бит LOCK в этом регистре установлен, содержимое регистров CTRL (отвечает за выбор источника сигнала для системной тактовой частоты) и PSCTRL (отвечает за коэффициент предварительного деления системной тактовой частоты) уже не может быть изменено вплоть до следующего сброса микроконтроллера. Этот важный бит LOCK в свою очередь защищён системным механизмом Configuration Change Protection (ССР), аналогично операциям 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 для каждого генератора позволяет оперативно, из программы, проверить готовность генератора к работе.
Полученный системный тактовый сигнал сначала проходит блок предварительных делителей (рисунок) с суммарным коэффициентом деления в диапазоне от 1 до 2048, и только потом подается на ядро и периферийные блоки. Гарантируется, что все выходные сигналы производных частот всегда имеют четкое фазовое соответствие с входным сигналом, и что при работе системы не возникает импульсных выбросов или промежуточных частот в моменты программного изменения установок делителей. Новые параметры всегда обновляются по фронту сигнала с наименьшей из генерируемых частот.
Для диагностики сбоев или отказов в работе внешних источников тактового сигнала на кристалле XMEGA есть встроенная аппаратная схема мониторинга. По умолчанию эта опция отключена и может быть разрешена со стороны прикладной программы. Отметим, что снова выключить схему мониторинга можно только путем общего сброса микроконтроллера. Если по каким-то причинам системный тактовый сигнал от внешнего источника пропадает, то микроконтроллер принудительно и безусловно переключается на внутренний генератор RC2M (2 МГц), сбрасывая при этом содержимое регистров CTRL генератора и системной тактовой частоты к значениям по умолчанию. Генерируется флаг соответствующего немаскируемого прерывания, которое должно быть обязательно обслужено, даже если внешний источник не использовался в качестве системной тактовой частоты. В этом случае внешний генератор автоматически блокируется, в то время как системный тактовый сигнал продолжает поступать на микроконтроллер. Мониторинг автоматически запрещается во всех режимах пониженного энергопотребления (внешний источник тактирования останавливается), а при выходе из «спящего» режима — автоматически восстанавливается. Установки схемы мониторинга защищены системным механизмом Configuration Change Protection (ССР).
Отметим, что если используется внешний источник тактирования и аппаратный мониторинг включён, то частота этого внешнего источника должна быть не ниже 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 предусмотрены индивидуальные регистры для записи входных данных на преобразование для обоих «каналов».
Линейный выход ЦАП можно подключать внутри кристалла к другим периферийным узлам, например, к входу встроенного АЦП или к входу встроенного аналогового компаратора. Выходы от устройства выборки-хранения не могут быть подключены внутри кристалла. Блок-схема ЦАП приведена на рисунке.
Для организации корректной работы устройства выборки-хранения в ЦАП необходимо помнить про ряд временных ограничений, которые обязательно должны приниматься во внимание. Эти ограничения связаны с тактированием ЦАП от источника периферийной частоты и могут влиять на периоды заряда-разряда устройства выборки-хранения:
– время, необходимое для приведения ЦАП в состояние готовности, определяется как интервал между моментом окончания преобразования в канале А и стартом преобразования в канале В. Этот интервал не должен быть меньше 1мкс;
– время обновления результата ЦАП определяется как временной интервал между последовательными преобразованиями в одном и том же канале ЦАП. Это время не должно быть больше 30 мкс.
Если не учитывать данные ограничения, то точность преобразования может ухудшиться. Отметим, что все сказанное применимо только к режиму работы ЦАП на два выхода через встроенное устройство выборки-хранения.
Модуль аналоговых компараторов (АС) на кристалле XMEGA состоит из двух компараторов и блока мультиплексоров. Блок-схема АС приведена на рисунке. АС может быть сконфигурирован для формирования запроса на прерывание и события в зависимости от различных комбинаций изменения входных уровней напряжения. Основные параметры компаратора (гистерезис и задержка распространения) могут программироваться. Аналоговые компараторы всегда группируются в пары (обозначаются АСО и АС1) для каждого аналогового порта XMEGA. Они имеют идентичное поведение, но различные управляющие регистры.
В качестве входных сигналов для АС могут выступать напряжение на внешних выводах микроконтроллера, источники напряжения внутри кристалла, а также масштабируемые напряжения. Все линии аналогового порта XMEGA могут быть выбраны как входы для АС. При этом к положительному входу компаратора могут быть подключены линии 0,1,2,4 и 6, а к отрицательному — линии 0,1,3,5 и 7. В качестве внутренних источников напряжения могут быть выбраны или выход ЦАП (если есть), или выход встроенного точного ИОН. Что касается масштабируемых входов, то эта особенность АС у XMEGA является наиболее интересной. АС содержит программируемый делитель, который имеет 64 градации для деления напряжения, подаваемого на его вход: напряжение питания микроконтроллера (Vcc), напряжение встроенного ИОН, либо входное аналоговое напряжение, подаваемое на вывод 0 соответствующего аналогового порта. Выбор источника напряжения для деления и коэффициент деления задаются программистом путем записи байта в соответствующий регистр CTRLB.
Многофункциональная линия 0 аналогового порта в микроконтроллерах XMEGA имеет еще одну важную особенность. Как видно из блок-схемы, цифровой выход компаратора AC0 может быть непосредственно подключен к этой линии, сигнализируя о том, что соотношение двух (например, внешних) аналоговых сигналов изменилось. Известно, что в микроконтроллерах с архитектурой AVR логический выход компаратора АСО или АС1 может быть подключен к входу одного из таймеров/счетчиков внутри кристалла. Если этот таймер/счетчик работает в режиме захвата, то можно измерять длительность аналоговых сигналов или реализовывать АЦП двойного (двухтактного) интегрирования. Но теперь в XMEGA появляется новая дополнительная возможность — построение с помощью встроенного аналогового компаратора внешнего сигма-дельта АЦП, так как в XMEGA мы можем подключать логический выход компаратора еще и на внешний вывод микроконтроллера.
Программист в рамках работы своего приложения может выбирать некий компромисс между быстродействием узла компараторов и его энергопотреблением. Так, если требуется высокая скорость срабатывания, то узел будет потреблять 130 мкА при времени срабатывания 30нс. Если же высокая скорость не нужна, то АС работает в штатном режиме с временем срабатывания 500нс, потребляя при этом всего 20 мкА. Есть возможность трехступенчатого программирования гистерезиса: отсутствие гистерезиса (0 мВ), малый гистерезис (±10мВ) или большой гистерезис (±25 мВ). В ряде случаев это помогает избежать излишне частого переключения компаратора в системах с повышенным уровнем шума. Оба описанных параметра АС программируются установками в регистре ACnCTRL, в этом же регистре определяется тип генерации прерывания после появления сигнала на выходе компаратора. Это может быть генерация события или запроса на прерывание по изменению состояния выхода или по фронту (срезу) выходного сигнала компаратора. События будут всегда генерироваться при тех же условиях, при которых будет генерироваться и запрос на прерывание, причем на генерацию события не влияет, разрешены прерывания или нет.
Перед началом преобразования аналоговый компаратор должен быть полностью инициализирован. АС работает постоянно, результат преобразования доступен как программно, так и аппаратно через систему событий.
И, наконец, рассмотрим режим работы АС в режиме «окна» (Window Mode). Два аналоговых компаратора, принадлежащие одному и тому же аналоговому порту, могут быть программным образом сконфигурированы для работы в Window Mode. Принцип работы АС в этом режиме показан на рисунке. Можно задавать различную ширину «окна» и его положение относительно напряжения питания микроконтроллера или «земли». Входное напряжение, которое подвергается анализу, может быть выше «окна», ниже него или попадать точно внутрь «окна». В любом из этих случаев генерируется соответствующее прерывание и событие. Разрешение аналоговому компаратору на работу в этом режиме, а также выбор варианта, по которому генерируется событие (прерывание), осуществляется путем программирования регистра WINCTRL.
Таймеры/счетчики, сторожевой таймер и часы реального времени.
Все таймеры/счетчики (Т/С) в XMEGA 16-разрядные и имеют одинаковую структуру. Общие функции: формирование интервалов времени, сигналов заданной частоты и сигналов ШИМ, измерение временных параметров цифровых сигналов, синхронизация с системой событий. Совместно с Т/С могут использоваться два внешних модуля расширения — модуль высокого разрешения (Hi-Res) и модуль формирования специализированных частотных сигналов для задач управления электродвигателями (AWeX).
Количество таймеров/счетчиков у разных микроконтроллеров семейства XMEGA составляет от 5 до 8. Блок Т/С состоит из базового счетчика и набора каналов захвата/сравнения. Базовый счетчик может использоваться для подсчета тактовых циклов или событий. Он имеет возможность управления направлением счета и периодом установки временного интервала. Каналы захвата/сравнения могут использоваться совместно с базовым счетчиком для реализации функций сравнения и генерации различных цифровых последовательностей или выполнять функции захвата. Сравнение и захват являются взаимоисключающими операциями, то есть какой-то один таймер/счетчик не может одновременно и генерировать заданную цифровую последовательность на выходе, и осуществлять функцию захвата. Блоки Т/С на кристаллах XMEGA обозначаются ТСО и ТС1, причем Т/СО имеет 4 канала захвата/сравнения, в то время как Т/С1 — всего 2 канала. Все таймеры/счетчики для тактирования могут быть присоединены либо к сигналу периферийной тактовой частоты, либо к системе событий.
Сторожевой таймер (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 — битами. В качестве иллюстрации на рисунке приведено сравнение стандартного и «оконного» режимов работы сторожевого таймера в микроконтроллерах XMEGA.
Сторожевой таймер, если разрешен, будет работать во всех энергосберегающих режимах. Он тактируется сигналом с частотой 1 кГц, которая получается делением частоты выходного сигнала внутреннего генератора ULP32K. Так как этот генератор работает независимо от центрального ядра, то WDT будет продолжать функционировать и вызовет системный сброс микроконтроллера, даже если по каким-то причинам пропадет основной тактовый сигнал. Благодаря сверхнизкому энергопотреблению точность формирования частоты генератором ULP32K не слишком высока (см. описание на микроконтроллер), поэтому точное значение периода тайм-аута может варьироваться от микроконтроллера к микроконтроллеру. При разработке приложения с использованием WDT подобный разброс значений должен обязательно учитываться.
Сторожевой таймер снабжен механизмом защиты от непреднамеренного изменения его установок. Можно использовать специальный бит Change Enable (CEN), без установки которого невозможно поменять содержимое управляющих регистров WDT. Можно также использовать fuse-бит WDT Lock. Если установить этот бит, то содержимое управляющего регистра сторожевого таймера уже нельзя будет переписать, и, следовательно, станет невозможно запретить работу WDT из приложения пользователя. После системного сброса WDT начинает работу в сконфигурированном режиме. Интересно отметить, что при установленном fuse-бите, когда WDT работает в «оконном» режиме, периоды таймаута не могут быть изменены, но сам «оконный» режим может быть разрешен или запрещен.
Часы реального времени (RTC) функционируют в режимах пониженного энергопотребления, пробуждая кристалл через регулярные интервалы времени. Блок-схема RTC в микроконтроллерах XMEGA показана на рисунке. В основе лежит 16-битный счетчик, который считает импульсы опорной частоты и выдает событие или запрос на прерывание по переполнению или по достижении заданного значения. Опорная частота (базовый вариант) получается при помощи точного внешнего часового кварца 32,768 кГц, причем дизайн счетчика на кристалле оптимизирован для максимально низкого энергопотребления.
Опорная частота для RTC может составлять и 1,024 кГц. В этом случае она получается внутренним делением частоты 32 кГц от одного из трех источников: генератора на внешнем часовом кварце 32 кГц (как в базовом варианте), внутреннего генератора RC32K (32 кГц) или генератора ULP32K, который входит в состав сторожевого таймера и имеет минимальное энергопотребление. В состав RTC также входит программируемый делитель (на 7 фиксированных значений) для понижения частоты сигнала перед подачей его на основной счетчик. Это позволяет получить максимальное время ожидания более 18 часов.
Существуют два пути для формирования запроса на прерывание и события — по сравнению или по переполнению. В первом случае счетчик RTC продолжает считать дальше, а во втором — обнуляется при достижении значения, записанного в регистр Period.
Обсуждение на форуме: https://phreaker.ru/forum/showthread.php?t=690
Продолжение: Знакомство с XMEGA. Часть 2
Материалы подготовил CivicDriver