Главная > AVR > Знакомство с XMEGA. Часть 1

Знакомство с XMEGA. Часть 1

12 июня 2012

Предлагаемый к ознакомлению материал составлен на основе цикла статей к.т.н. Игоря Кривченко и к.т.н. Елены Ламберт «Микроконтроллеры 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% и определяется при изготовлении на фабрике.

  1. 2.  RC32K: калиброванный RC-генератор частотой 32 кГц, который может исполь­зоваться в качестве источника систем­ной тактовой частоты. RC32K также является источником опорного сигнала для процедуры калибровки и для часов реального времени. Значение частоты этого генератора программируется при изготовлении кристаллов, калибровоч­ные значения записываются в калибро­вочные регистры. Точность фабричной установки частоты составляет 1%.
  2. 3.  RC2M: калиброванный RC-генератор частотой 2 МГц, снабженный ФАПЧ (PLL). Именно он по умолчанию используется в качестве источника системной тактовой частоты при запуске микроконтроллера. Точность фабричной установки частоты составляет 2%, при этом во время работы микроконтроллера может осущест­вляться автоматическая калибровка.
  3. 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.

 

 

Обсуждение на форуме: http://phreakerclub.com/forum/showthread.php?t=690

Продолжение:  Знакомство с XMEGA. Часть 2

Материалы подготовил CivicDriver

 

Categories: AVR Tags:
Комментирование отключено.
Яндекс.Метрика