335
AVR XMEGA A
Оглавление
1
Про данное руководство 18
1.1
Рекомендации по чтению руководства 18
1.2
Ресурсы 18
1.3
Рекомендовано для прочтения 18
2
Обзор 19
2.1
Функциональная схема 20
3
ЦПУ AVR 21
3.1
Отличительные особенности 21
3.2
Обзор 21
3.3 Обзор
архитектуры 21
3.4
Арифметико-логическое устройство 22
3.4.1
Аппаратное умножающее устройство 22
3.5
Программный поток 23
3.6
Временная диаграмма выполнения
инструкций 23
3.7
Регистр статуса 24
3.8 Стек
и указатель стека 24
3.9
Регистровый файл 25
3.9.1
Регистры X, Y и Z 25
3.10
Регистры RAMP и расширенной косвенной
адресации 26
3.10.1
Регистры RAMPX, RAMPY и RAMPZ 26
3.10.2
Регистр RAMPD 26
3.10.3
Регистр расширенной косвенной адресации
EIND 26
3.11
Доступ к 16-битным регистрам 27
3.11.1 Доступ
к 24- и 32-битным регистрам 27
3.12
Защита от изменения конфигурации 27
3.12.1
Последовательность записи защищенных
регистров ввода-вывода 27
3.12.2
Последовательность выполнения защищенных
инструкций SPM/LPM 28
3.13
Fuse-биты для блокировки изменений 28
3.14
Описание регистров 28
3.14.1
Регистр защиты от изменения конфигурации
CCP 28
3.15
Краткий обзор регистров 28
4
Запоминающие устройства 30
4.1
Отличительные особенности 30
4.2
Обзор 30
4.3
Flash-память программ 31
4.3.1 Сектор
прикладной программы 31
4.3.2 Сектор
таблицы приложения 31
4.3.3
Загрузочный сектор 32
4.3.4
Сигнатурный код производителя и ячейки
калибровки 32
4.4 Fuse-
и Lock-биты 32
4.5 Память
данных 33
4.6
Внутреннее SRAM 33
4.7
EEPROM 33
4.7.1 Доступ
к EEPROM в пространстве памяти данных 33
4.8 Память
ввода-вывода 33
4.8.1
Регистры ввода-вывода общего назначения 34
4.9
Внешняя память 34
4.10
Память данных и арбитраж шины 34
4.10.1 Шинный
приоритет 34
4.11
Временные характеристики доступа к
памяти 34
4.12
Идентификация микроконтроллера 35
4.13
Отключение порта JTAG 35
4.14
Защита памяти ввода-вывода 35
4.15
Описание регистров контроллера NVM
энергонезависимой памяти 35
4.16
Описание регистров — Fuse- и Lock-биты 36
4.16.1
FUSEBYTE0 — конфигурационный байт 0
энергонезависимой памяти — JTAG-идентификатор
пользователя 36
4.17
Описание регистров — сигнатурный код
производителя 36
4.17.1
RCOSC2M — регистр калибровочного значения
внутреннего генератора частоты 2 МГц 36
4.18
Описание регистров — память ввода-вывода
общего назначения 36
4.18.1 GPIORn
— регистр ввода-вывода n общего
назначения 36
4.19
Описание регистров внешней памяти 36
4.20
Описание регистров управления МК 36
4.20.1 DEVID0
— регистр 0 идентификатора МК 36
4.21 Обзор
регистров контроллера энергонезависимой
памяти 36
4.22 Обзор
регистров Fuse- и Lock-бит 37
4.23 Обзор
регистров кода сигнатуры производителя 37
4.24 Обзор
регистров ввода-вывода общего
назначения 38
4.25 Обзор
регистров управления микроконтроллером 39
4.26
Векторы прерываний контроллера
энергонезависимой памяти 39
5
Контроллер прямого доступа к памяти
(DMA-контроллер) 40
5.1
Отличительные особенности 40
5.2
Обзор 40
5.3
Транзакция DMA 41
5.3.1
Передача блока и повтор 41
5.3.2
Передача пакета 41
5.4 Запуск
передачи 41
5.5
Адресация 42
5.6
Приоритеты каналов 42
5.7
Двойная буферизация 42
5.8
Передача буферов 42
5.9
Обнаружение ошибок 42
5.10
Программный сброс 42
5.11
Защита 43
5.12
Прерывания 43
5.13
Описание регистров DMA-контроллера 43
5.13.1 CTRL —
регистр управления DMA 43
5.13.2
INTFLAGS — регистр статуса прерываний DMA 44
5.13.3 STATUS
— Регистр статуса DMA 44
5.13.4 TEMPH
— старший байт временного регистра
DMTEMP 44
5.13.5 TEMPL
— младший байт временного регистра
DMTEMP 45
5.14
Описание регистров DMA-канала 45
5.14.1 CTRLA
— регистр А управления DMA-каналом 45
5.14.2 CTRLB
— регистр B управления DMA-каналом 46
5.14.3
ADDRCTRL — регистр управления адресом
DMA-канала 47
5.14.4
TRIGSRC — источник запуска DMA-канала 48
5.14.5
TRFCNTH — старший регистр счетчика байт
при передаче блока по DMA-каналу 49
5.14.6
TRFCNTL — младший регистр счетчика байт
при передаче блока по DMA-каналу 50
5.14.7 REPCNT
— регистр счетчика повторов в DMA-канале 50
5.14.8
SRCADDR2 — регистр 2 адреса источника
DMA-канала 50
5.14.9
SRCADDR1 — регистр 1 адреса источника
DMA-канала 50
5.14.10
SRCADDR0 — регистр 0 адреса источника
DMA-канала 50
5.14.11
DESTADDR2 — регистр 2 адреса получателя
DMA-канала 51
5.14.12
DESTADDR1 — регистр 1 адреса получателя
DMA-канала 51
5.14.13
DESTADDR0 — регистр 0 адреса получателя
DMA-канала 51
Соседние файлы в папке Архитектура ЭВМ
- #
- #
- #
- #
- #
- #
-
Contents
-
Table of Contents
-
Bookmarks
Quick Links
Features
•
High-performance, Low-power AVR 8/16-bit XMEGA Microcontroller
•
Non-volatile Program and Data Memories
– 64K — 256K Bytes of In-System Self-Programmable Flash
– 4K — 8K Boot Code Section with Independent Lock Bits
– 2K — 4K Bytes EEPROM
– 4K — 16K Bytes Internal SRAM
External Bus Interface for up to 16M bytes SRAM
External Bus Interface for up to 128M Bytes SDRAM
•
Peripheral Features
– Four-channel DMA Controller with support for external requests
– Eight-channel Event System
– Seven 16-bit Timer/Counters
Four Timer/Counters with 4 Output Compare or Input Capture channels
Three Timer/Counters with 2 Output Compare or Input Capture channels
High Resolution Extensions on all Timer/Counters
Advanced Waveform Extension on one Timer/Counter
– Seven USARTs
IrDA Extension on 1 USART
– AES and DES Crypto Engine
– Two Two-wire Interfaces with dual address match(I
– Three SPI (Serial Peripheral Interfaces)
– 16-bit Real Time Counter with Separate Oscillator
– Two Eight-channel, 12-bit, 2 Msps Analog to Digital Converters
– One Two-channel, 12-bit, 1 Msps Digital to Analog Converter
– Four Analog Comparators with Window compare function
– External Interrupts on all General Purpose I/O pins
– Programmable Watchdog Timer with Separate On-chip Ultra Low Power Oscillator
•
Special Microcontroller Features
– Power-on Reset and Programmable Brown-out Detection
– Internal and External Clock Options with PLL
– Programmable Multi-level Interrupt Controller
– Sleep Modes: Idle, Power-down, Standby, Power-save, Extended Standby
– Advanced Programming, Test and Debugging Interfaces
JTAG (IEEE 1149.1 Compliant) Interface for test, debug and programming
PDI (Program and Debug Interface) for programming, test and debugging
•
I/O and Packages
– 50 Programmable I/O Lines
– 64-lead TQFP
– 64-pad MLF
•
Operating Voltage
– 1.6 – 3.6V
•
Speed performance
– 0 – 12 MHz @ 1.6 – 3.6V
– 0 – 32 MHz @ 2.7 – 3.6V
Typical Applications
•
Industrial control
•
Factory automation
•
Building control
•
Board control
•
White Goods
•
•
Climate control
•
•
ZigBee
•
•
Motor control
•
•
Networking
•
•
Optical
2
C and SMBus compatible)
Hand-held battery applications
Power tools
HVAC
Metering
Medical Applications
8/16-bit
XMEGA A3
Microcontroller
ATxmega256A3
ATxmega192A3
ATxmega128A3
ATxmega64A3
Preliminary
8068C–AVR–06/08
Summary of Contents for Atmel XMEGA A3 series
Предлагаемый к ознакомлению материал составлен на основе цикла статей к.т.н. Игоря Кривченко и к.т.н. Елены Ламберт «Микроконтроллеры 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
AVR XMEGA A
Оглавление
В данном
документе приводится подробное описание
всех встроенных в AVR-микроконтроллеры
XMEGA A модулей и УВВ. Всех их особенности
задокументированы на функциональном
уровне и описаны по общей методике.
Рассматриваемые в данном руководстве
модули и УВВ могут не входить в состав
некоторых микроконтроллеров XMEGA A.
Специфическую
для каждого микроконтроллера информацию,
как, например, характеристические
данные, размеры памяти, доступные модули
и УВВ, а также их абсолютные адреса в
памяти необходимо искать в документации
на интересующий микроконтроллер.
Если в
микроконтроллер входит несколько
одинаковых УВВ, как, например, порт
ввода-вывода (ПВВ), каждый из них будет
иметь собственное наименование.
Применительно к ПВВ такими наименованиями
будут PORTA, PORTB и т.д. Наименования регистров
и их бит уникальны для каждого конкретного
модуля и УВВ.
Более
подробные примеры использования модулей
и УВВ с кодами программ можно найти
среди рекомендаций по применению
микроконтроллеров XMEGA A, доступные по
ссылке: http://www.atmel.com/avr.
Каждый
из разделов руководства посвящен
описанию отдельных модулей и УВВ. В
начале раздела обязательно приводится
краткий перечень наиболее важных
особенностей и обзор возможностей
модуля. В остальной же части раздела
приводится более детальное описание
особенностей и функциональных
возможностей.
В
подразделах, посвященных описанию
регистров, приводится наименование
каждого отдельного бита/флага и его
назначение. Здесь так же можно найти
подробности по настройке модуля и
активизации его различных функций. Если
в настройке модуля принимают участие
несколько бит, они собираются в битовую
группу. Возможности конфигурации битовых
групп приводятся в отдельных таблицах
вместе с групповой настройкой и кратким
описанием. Групповая настройка ссылается
на наименования настроек, которые
определены в Си и ассемблерных заголовочных
файлах и исходных кодах рекомендаций
по применению.
В
подразделах, посвященных краткому
обзору регистров, приводятся таблицы
с перечнем регистров для каждого модуля
и их адресами в памяти. Аналогичным
образом, в подразделах, посвященных
краткому описанию векторов прерываний,
приводится таблица с векторами прерываний
каждого модуля и их адреса смещения.
Широкий
выбор инструментальных средств для
проектирования, рекомендаций по
применению и документации доступен для
скачивания по ссылке http://www.atmel.com/avr.
-
Документация
на микроконтроллеры XMEGA A -
Рекомендации
по применениям XMEGA A
В данном
руководстве приводится только общие
описания модулей и УВВ. Специфическая
информация по микроконтроллерам XMEGA A
приводится в документации на них. Порядок
использования модулей МК XMEGA A с примерами
кодов программ содержится в рекомендациях
по применению.
Новичкам
рекомендуется для прочтения рекомендации
по применению AVR1000 — руководство по
быстрому освоению программирования МК
XMEGA на языке Си, а также AVR1900 — руководство
по быстрому освоению ATxmega128A1.
XMEGA A —
семейство экономичных, высокопроизводительных
и с обширным набором УВВ 8/16-битные КМОП
микроконтроллеров, выполненных по
улучшенной RISC-архитектуре AVR. МК XMEGA A
выполняют большинство своих инструкций
за один цикл синхронизации. Благодаря
этому, производительность МК близка к
1MIPS/МГц, а разработчики получают
возможность оптимизировать соотношение
энергопотребления и производительности.
ЦПУ AVR
сочетают обширный набор инструкций и
32 рабочих регистра общего назначения.
Все 32 регистра напрямую подключены к
арифметико-логическому устройству
(ALU), что позволяет осуществлять одной
инструкции доступ к двум разным рабочим
регистрам, а также выполнять такую
инструкцию за один цикл синхронизации.
В конечном счете, данная архитектура
отличается более эффективным кодом
программы и позволяет достичь
производительности во много раз
превышающей производительность обычных
микроконтроллеров с одним аккумулятором
или CISC-микроконтроллеров.
Микроконтроллеры
XMEGA A интегрируют следующие ресурсы:
внутрисистемно-программируемая
Flash-память с возможностями чтения во
время записи, внутренние EEPROM и SRAM,
четырехканальный DMA-контроллер,
восьмиканальная система событий и
программируемый многоуровневый
контроллер прерываний, до 78 линий
ввода-вывода общего назначения, 16- или
32-битный счетчик реального времени
(RTC), до 8 универсальных 16-битных
таймеров-счетчиков с режимами сравнения
и возможностями широтно-импульсной
модуляции (ШИМ), до восьми интерфейсов
USART, до четырех I2C- и SMBUS-совместимых
интерфейсов TWI, до четырех интерфейсов
SPI, ускорители криптографических
алгоритмов AES и DES, до двух 8-канальных
12-битных аналогово-цифровых преобразователей
(АЦП, ADC) с опциональным дифференциальным
входным усилительным каскадом с
программируемым усилением, до двух
2-канальных 12-битных цифро-аналоговых
преобразователей (ЦАП, DAC), до четырех
аналоговых компараторов с оконным
режимом, программируемый сторожевой
таймер с отдельным внутренним генератором,
точные внутренние генераторы с функциями
фазовой автоподстройки частоты (ФАПЧ,
PLL) и предделения частоты, а также
программируемый супервизор питания
(BOD).
Кроме
того, в МК входят два интерфейса, которые
могут использоваться для программирования
МК и доступа к встроенной отладочной
системе: 2-проводной быстродействующий
интерфейс PDI и IEEE 1149.1-совместимый
интерфейс JTAG.
МК XMEGA
A поддерживают пять программно-выбираемых
экономичных режима работы. В режиме
IDLE останавливается ЦПУ, но, при этом,
продолжают работать SRAM, DMA-контроллер,
система событий, контроллер прерываний
и все УВВ. В режиме POWER-DOWN сберегается
содержимое SRAM и регистров, а все прочие
функции, вследствие остановки генераторов,
прекращают работу до следующего
прерывания модуля TWI, прерывания по
изменению состояния выводов или сброса
МК. В режиме POWER-SAVE, продолжает работу
асинхронный счетчик реального времени,
оставляя активной функцию счета времени,
а остальная часть МК бездействует. В
режиме STANDBY, отключены все ресурсы МК,
кроме кварцевого генератора. Использование
этого режима полезно в случаях, когда
в сочетании с малым энергопотреблением
необходимо добиться очень малых задержек
возобновления нормального функционирования
МК.
В режиме
EXTENDED STANDBY, остаются в работе и основной
генератор, и асинхронный таймер. Добиться
дальнейшего снижения энергопотребления
можно путем отключения синхронизации
неиспользуемых УВВ в активном режиме
работы, а также в режиме IDLE.
Микроконтроллеры
выпускаются с использованием разработанной
Atmel технологии высокоплотной
энергонезависимой памяти. Программирование
Flash-памяти можно выполнить внутрисистемно
посредством интерфейса PDI или JTAG.
Программирование Flash-памяти можно также
выполнить под управлением исполняемой
ядром AVR программы загрузчика, которая
для приема кода программы может
использовать любой из интерфейсов.
Программа загрузчика хранится в
загрузочном секторе Flash-памяти и
продолжает выполняться даже во время
обновления сектора прикладной программы
Flash-памяти, таким образом, добиваясь
истинной поддержки возможности чтения
во время записи. Благодаря сочетанию
8/16-битного ЦПУ RISC и внутрисистемно-самопрограммируемой
Flash-памяти, микроконтроллеры XMEGA A являются
универсальным и выгодным в ценовом
плане инструментом для решения многих
задач встраиваемого управления.
Микроконтроллеры
XMEGA A поддерживаются полным набором
программных и аппаратных средств для
проектирования, в т.ч. Си-компиляторы,
макро-ассемблеры, программные
отладчики/симуляторы, программаторы и
оценочные наборы.
Рисунок 2.1. Функциональная схема
микроконтроллеров XMEGA A
-
8/16-битное
высокопроизводительное RISC ЦПУ AVR -
138
инструкций -
Аппаратное
умножающее устройство -
32
8-битных регистра, напрямую подключенные
к ALU -
Стек
в оперативной памяти -
Указатель
стека доступен в пространстве памяти
ввода-вывода -
Прямая
адресация до 16 Мбайт памяти программ
и 16 Мбайт памяти данных -
Полная
поддержка 16/24-битного доступа к
16/24-битным регистрам ввода-вывода -
Эффективная
поддержка 8-, 16- и 32-битных арифметических
инструкций -
Защита
от изменения настроек критических
функций системы
Микроконтроллеры
XMEGA выполнены на основе 8/16-битного ЦПУ
AVR. Основной функцией ЦПУ является
гарантирование корректности выполнения
программы. ЦПУ имеет возможности доступа
к запоминающим устройствам, выполнения
вычислений и управления УВВ. Механизм
обработки прерываний более детально
описан в отдельном разделе 12 «Прерывания
и программируемый многоуровневый
контроллер прерываний».
В целях
достижения максимальной производительности
и параллелизма у МК AVR используется
Гарвардская архитектура с отдельными
памятью и шинами программ и данных.
Инструкции, хранящиеся в памяти программ,
выполняются на одноуровневом конвейере.
Это означает, что во время выполнения
одной инструкции выполняется
предварительная выборка из памяти
программ следующей инструкции. Данная
концепция делает возможным выполнение
по одной инструкции за каждый цикл
синхронизации. Перечень и краткое
описание всех инструкций AVR можно найти
в разделе 32 «Краткое описание набора
инструкций». Подробное описание
набора инструкций AVR можно найти по
ссылке http://www.atmel.com/avr.
Рисунок 3.1. Архитектура AVR
Арифметико-логическое
устройство (АЛУ, ALU) выполняет арифметические
и логические операции между регистрами
или между константой и регистром. В АЛУ
также могут выполняться операции над
одним регистром.
По
завершении арифметических операций
обновляется регистр статуса, в котором
отражается информация о результате
операции.
АЛУ
напрямую подключено к регистровому
файлу, который состоит из 32 8-битных
рабочих регистров общего назначения.
Данные регистры предоставляют ALU
возможность одноциклового доступа при
выполнении операций между регистрами
или между регистром и константой. Шесть
из этих 32 регистров могут использоваться,
как три 16-битных указателя адреса. Их
можно использовать для адресации в
пространствах памяти данных и памяти
программ с возможностями автоматического
вычисления адресов.
Пространства
памяти являются полностью линейными и
регулярными. Пространство памяти данных
и пространство памяти программ полностью
независимы.
Пространство
памяти данных разделяется на регистры
ввода-вывода и SRAM. Кроме того, через
пространство памяти данных можно
получить доступ к EEPROM.
Все
регистры статуса и управления УВВ
расположены в младших 4 килобайтах
адресов памяти данных. Данное пространство
называется пространством памяти
ввода/вывода. К младшим 64 адресам можно
адресоваться напрямую или как к ячейкам
памяти данных по адресам 0x00…0x3F. Остальная
часть называется пространством
расширенной памяти ввода-вывода и
расположена по адресам 0x40…0x1FFF. Доступ
к этим регистрам ввода-вывода выполняется
по их адресам в пространстве памяти
данных с использованием инструкций
чтения (LD/LDS/LDD) и записи (ST/STS/STD).
В SRAM
могут сберегаться только данные, а код
программы не может выполняться из него.
Доступ к данным в SRAM можно осуществить
с использованием пяти различных режимов
адресации, поддерживаемых архитектурой
AVR. Начальным адресом SRAM является 0x2000.
Адреса
в памяти данных от 0x1000 до 0x1FFF зарезервированы
для отображения в ней EEPROM.
Память
программ разделена на два сектора:
сектор прикладной программы и загрузочный
сектор. У каждого из секторов имеются
отдельные биты защиты (Lock-биты) для
блокировки записи и чтения/записи.
Программа в загрузочном секторе с
использованием инструкции SPM имеет
возможность программирования сектора
прикладной программы. Еще один, третий,
сектор находится внутри сектора
прикладной программы. Он называется
сектором таблицы приложения и имеет
отдельные биты защиты от записи и
чтения/записи. Сектор таблицы приложения
может использоваться для энергонезависимого
хранения данных или кода программы.
Арифметико-логическое
устройство (АЛУ, ALU) выполняет арифметические
и логические операции между регистрами
или между константой и регистром. Им
также могут выполняться операции над
одним регистром. АЛУ напрямую подключено
ко всем 32 регистрам общего назначения.
При выполнении типичной одноцикловой
операции в АЛУ, два операнда берутся из
регистрового файла, затем, над ними
выполняется операция, а результат
возвращается обратно в регистровый
файл.