Обобщенная структурная схема
Микроконтроллеры семейства AVR имеют единую базовую структуру. Обобщенная структурная схема микроконтроллера (МК) изображена на рис. 1.VCC OND
В состав микроконтроллера входят:
■ генератор тактового сигнала (GCK);
■ процессор (CPU);
■ постоянное запоминающее устройство для хранения программы, выполненное по технологии Flash, (FlashROM);
■ оперативное запоминающее устройство статического типа для хранения данных (SRAM);
■ постоянное запоминающее устройство для хранения данных, выполненное по технологии EEPROM, (EEPROM);
■ набор периферийных устройств для ввода и вывода данных и управляющих сигналов и выполнения других функций.
В микроконтроллерах тина t11, t12. t15, 1200 и t28 запоминающее устройство SRAM отсутствует. В микроконтроллерах типа t1l и t28 отсутствует также запоминающее устройство EEPROM.
К микроконтроллерам типа 8515 и тЮЗ может быть подключено внешнее запоминающее устройство для храпения данных (ERAM). Команды программы хранятся только во внутреннем запоминающем устройстве FlashROM.
Выводы VCC и GND предназначены для подключения источника напряжения питания микроконтроллера. Уровень напряжения всех сигналов в микроконтроллере отсчитывается относительно уровня на шине GND, принимаемого за 0В. Допустимые значения напряжения питания у микроконтроллеров разных типов и вариантов указаны в приложении П1 в табл. П1.3. Другие выводы микроконтроллеров разных типов указаны в приложении П2. Функции этих выводов описываются при рассмотрении устройств, в работе которых они используются.
В состав процессора (CPU) входят:
■ счетчик команд (PC);
■ арифметико-логическое устройство (ALU);
■ блок регистров общего назначения (GPR, General Purpose Registers) и другие элементы, не показанные на схеме рис. 1.
Кроме регистров общего назначения в микроконтроллере имеются регистры специальных функций, которые в семействе AVR называются регистрами ввода-вывода (I/О Registers, IOR). С участием этих регистров осуществляются:
■ управление работой микроконтроллера и отдельных его устройств;
■ определение состояния микроконтроллера и отдельных его устройств;
■ ввод данных в микроконтроллер и отдельные его устройства и вывод данных и выполняются другие функции.
Структура микроконтроллера
Таблица 1
Тип МК | Flash (байт) | ISP | SRAM (байт) | EEPROM (байт) | ERAM | IOR | P | I/O | ALT | SPI | UART | TWSI | T/C0 | T/C1 | T/C2 | ADC | AC | PHM | IU | Тип МК |
t11 | 1K | A | + | t11 | ||||||||||||||||
t12 | 1K | + | A | + | t12 | |||||||||||||||
t15 | 1K | + | A | B | + | t15 | ||||||||||||||
2K | + | A | ||||||||||||||||||
2K | + | A | ||||||||||||||||||
1K | + | A | + | |||||||||||||||||
2K | + | + | A | D | + | |||||||||||||||
t28 | 2K | A | + | + | t28 | |||||||||||||||
4K | + | + | + | A | D | + | ||||||||||||||
8K | + | + | + | + | A | E | + | |||||||||||||
8K | + | + | + | A | E | C | + | |||||||||||||
m163 | 16K | + | + | + | + | A | E | C | + | m163 | ||||||||||
m103 | 128K | + | 4K | + | + | + | C | E | B | + | m103 |
Для нумерации регистров ввода-вывода используются номера от О до 63 (от $00 до $3F, где $ — указатель шестнадцатеричного кода). Каждому регистру присвоено имя, связанное с выполняемой этим регистром функцией. Микроконтроллеры разных типов имеют разный состав регистров ввода-вывода, при этом регистры с одинаковыми номерами могут иметь разные имена. Число регистров ввода-вывода у микроконтроллеров разных типов указано в табл. 1.1, в колонке IOR. Имена и номера регистров ввода-вывода у микроконтроллеров разных типов приведены в приложении П4. Функции, выполняемые регистрами ввода-вывода, описываются при рассмотрении устройств, в работе которых они участвуют.
Работа некоторых устройств микроконтроллера зависит от состояния дополнительных однобитовых запоминающих элементов — установочных битов (Fuse Bits). Исходные значения установочных битов записываются на заводе-изготовителе. Значение установочного бита может быть изменено только при программировании микроконтроллера. В приложении П6 перечислены установочные биты в микроконтроллерах разных типов и указаны их исходные значения. Функции установочных битов рассматриваются при описании устройств, работа которых зависит от их значения.
Генератор тактового сигнала
Микроконтроллеры семейства AVR являются устройствами синхронного типа. Действия, выполняемые в микроконтроллере, привязаны к импульсам тактового сигнала. Микроконтроллеры имеют полностью статическую структуру и могут работать при тактовой частоте от 0 Гц. Максимальные значения тактовой частоты у микроконтроллеров разных типов и вариантов указана в приложении П1, в таблице Ш.З.
В качестве генератора тактового сигнала (GCK) используются:
■ внутренний генератор с внешним кварцевым или керамическим резонатором (XTAL);
■ внутренний RC-генератор (IRC);
■ внутренний генератор с внешней RC-цепочкой (ERC);
■ внешний генератор (ЕХТ).
Генераторы тактового сигнала, используемые в микроконтроллерах разных типов, указаны в табл. 2.
У микроконтроллеров, имеющих внутренний генератор с внешним резонатором (XTAL), резонатор подключается к выводам XTAL1 и XTAL2, которые через конденсаторы малой емкости (20—30 пФ) соединяются с тиной GND. Тактовая частота определяется рабочей частотой резонатора. У микроконтроллера типа t28 при нулевом значении установочного бита INTCAP подключение выводов XTAL1 и XTAL2 к шине GND выполняется через внутренние конденсаторы емкостью 50 пФ.
Таблица 2
Тип | ТипМК | ||||||||||||
GCK | П1 | t12 | t15 | t28 | m163 | m103 | |||||||
XTAL | + | + | + | + | + | + | + | + | + | + | +* | ||
IRC | + | +* | +* | + | + | +* | +* | ||||||
ERC | + | + | + | + | |||||||||
ЕХТ | + | + | + | + | + | + | + | + | + | + | + | + | |
* — возможно изменение частоты программными средствами |
У микроконтроллеров типа t1l и tl2 в качестве выводов XTAL1 и XTAL2 используются выводы РВЗ и РВ4.
Внешний генератор (ЕХТ) подключается к выводу XTAL1, при этом вывод XTAL2 остается неподключенным. У микроконтроллера типа 2343, не имеющего выводов XTAL, внешний генератор подключается к выводу РВЗ.
В генераторах с RC-цепочкой тактовая частота определяется параметрами цепочки, но изменяется в значительных пределах при изменении напряжения питания микроконтроллера.
В микроконтроллерах типа 2343 и 1200 внутренний RC-генератор (IRC) используется при нулевом значении установочного бита RCEN.
В микроконтроллерах типа t1l, tl2, t28 и ml63 выбор генератора для работы определяется комбинацией значений установочных битов CKSEL. У микроконтроллеров типа t1l таких битов три (CKSEL2 — 0), у микроконтроллеров остальных типов — четыре (CKSEL3 — 0).
В табл. 3 приведены числа, двоичные коды которых являются комбинацией значений установочных битов CKSEL при выборе типа генератора. Биту CKSEL0 соответствует младший разряд двоичного кода.
Таблица 3
Тип GCK | CKSEL2 — 0 | CKSEL3 — 0 |
XTAL | 6,7 | 8—15 |
IRC | 2—4 | |
ERC | 5—7 | |
ЕХТ | 0,1 |
В микроконтроллерах, имеющих внутренний генератор с внешней RC-цепочкой (ERC), резистор (3—100 кОм) подключается между выводом XTAL1 и шиной VCC, а конденсатор (не менее 20 пФ) — между выводом XTAL1 и шиной GND.
В микроконтроллерах типа t12, t15, t28 и m163 при использовании внутреннего RC-генератора тактовая частота может изменяться программными средствами путем изменения кода, записываемого в регистр OSCCAL. При записи кода $00 тактовая частота имеет наименьшее значение, при записи кода SFF — наибольшее значение.
В микроконтроллере типа ml03 программными средствами может изменяться тактовая частота генератора с кварцевым резонатором.
Значение тактовой частоты FCk определяется по формуле
где Fq — рабочая частота кварцевого резонатора; (XDIV.6 — 0) — число, двоичный код которого записан в младших семи разрядах регистра XDIV (№ $ЗС). Изменение тактовой частоты возможно при XDIV.7 = 1.
Процессор
Процессор (CPU) формирует адрес очередной команды, выбирает команду из памяти и организует ее выполнение. Код команды имеет формат "слово" (16 бит) или "два слова". Система команд микроконтроллеров семейства AVR рассматривается в главе 2.
В состав процессора кроме счетчика команд (PC), арифметико-логического устройства (ALU) и блока регистров общего назначения (GPR),изображенных на структурной схеме рис. 1, входят:
■ регистр состояния микроконтроллера SREG;
■ регистр-указатель стека SP или SPL и SPH
и другие элементы, далее не рассматриваемые.
В счетчике команд адрес очередной команды формируется путем добавления 1 к числу, код которого хранится в счетчике команд. При пуске и перезапуске микроконтроллера в счетчик команд заносится код числа 0 и первая команда выбирается из FlashROM по адресу 0.
В арифметико-логическом устройстве (ALU) выполняются арифметические и логические операции. Операнды поступают из регистров общего назначения (GPR). При выполнении одноместных операций результат записывается в регистр, из которого поступил операнд. При выполнении двухместных операций результат записывается в регистр, из которого поступил первый операнд.
Блок регистров общего назначения (GPR) содержит 32 восьмиразрядных регистра, которым присвоены имена R0, R1,..., R31. В некоторых операциях в ALU могут участвовать лишь регистры со старшими номерами (от R16 до R31). Регистры с именами от R24 до R31 могут образовывать пары, используемые для хранения слов, при этом регистр с четным номером хранит младший байт, а регистр с нечетным номером — старший байт.
Паре регистров R26, R27 присвоено имя X, паре регистров R28, R29 — имя Y, паре регистров R30, R31 — имя Z. Эти пары регистров используются для хранения адресов при обращениях к памяти с косвенной адресацией.
Регистр состояния микроконтроллера SREG (№ $3F) содержит восемь разрядов (SREG.7, SREG.6,.... SREG.0).
Разряд SREG, 7 (I) используется для разрешения/запрещения прерываний. При I = 0 все прерывания запрещены. При 1=1 любое прерывание может быть разрешено.
Разряд SREG.6 (Т) используется для хранения бита при выполнении операций с битами.
Остальные разряды регистра SREG используются для хранения признаков результатов арифметических и логических операций, выполняемых в ALU. Назначение этих разрядов рассматривается при описании системы команд микроконтроллера.
Регистр-указатель стека SP(№ $3D) хранит и формирует адрес при обращении к стеку типа LIFO. В микроконтроллерах типа t1l, 112, 115, 1200 и t28 в качестве стека используется специальное запоминающее устройство (аппаратный стек). Этот стек используется только для хранения адресов возврата при прерываниях и обращениях к подпрограммам. В системе команд отсутствуют команды обращения к стеку.
В микроконтроллерах других типов в качестве стека используется выделяемая пользователем область в SRAM. В системе команд есть команды для обращению к стеку. Запись байтов в стек выполняется в порядке уменьшения адресов в SRAM. При пуске и перезапуске микроконтроллера в регистр-указатель стека заносится код числа 0. Для нормальной работы стека в регистр-указатель необходимо занести другой начальный адрес. В микроконтроллерах с большой емкостью SRAM регистр-указатель состоит из двух регистров — SPL и SPH (№№ $3D и $ЗЕ).