Рисунок 2
Внутренняя шина адреса
микроконтроллеров семейства 68НС12 позволяет линейно адресовать 64 К памяти. В
этом адресном пространстве располагаются блок ОЗУ, блок ПЗУ (EEPROM, FLASH или
ROM) и блок регистров периферийных устройств и служебных регистров ёмкостью 512
байт. Остальное адресное пространство отводится для работы с внешней памятью.
Распределение адресного пространства между различными блоками памяти зависит от
режима функционирования микроконтроллера (рисунке 3). Пользователь может
изменить положение блоков внутренней памяти в адресном пространстве путём
записи нового значения в специальные регистры, содержащие начальные адреса этих
блоков.
Рисунок 3
Ряд микроконтроллеров семейства (МС68НС12А0,
МС68НС812А4) имеет возможность увеличить адресное пространство в расширенном
режиме до 4 Мб памяти команд и 1 Мб памяти данных. Увеличение объёма адресуемой
памяти осуществляется путём использования окон расширения, расположенных в
стандартном 64-Кб пространстве памяти, и шести дополнительных адресных линий
ADDR21-16. Адресация внешней памяти объёмом свыше 64 Кб осуществляется
посредством механизма страничной трансляции, для чего каждое окно расширения
имеет свой регистр, содержащий адрес текущей страницы. При обращении по адресу,
попадающему в окно расширения, соответствующие разряды этого регистра выводятся
на старшие линии шины адреса ADDR21-16. Для организации банков внешней памяти
наряду со страничной адресацией микроконтроллеры могут формировать сигналы
выборки кристалла CS. Эти сигналы становятся активными при обращении по
адресам, расположенным в определённых разделах адресного пространства. Для
вывода сигналов CS используются линии порта F. Микроконтроллеры семейства
68HC12 могут работать в специальном режиме отладки BDM (Background Debug Mode),
который обеспечивает выполнение основных процедур отладки - просмотр и
модификацию содержимого регистров и ячеек памяти и ряд других функций. Вход в
режим BDM обеспечивается с помощью команды BGND и может быть осуществлён из
любого режима функционирования. Часть команд BDM может выполняться без перевода
микроконтроллера в режим отладки. После перевода микроконтроллера в этот режим
процессор работает под управлением программы-отладчика, хранящейся во
внутреннем ПЗУ, которое отображается на карту памяти только в режиме BDM
(рисунок 3). Отличительные черты BDM для данного семейства: простой набор
команд отладки и использование однопроводного интерфейса для взаимодействия с
системой отладки. Процессор CPU12 реализует ряд прерываний, для каждого из
которых задается 16-разрядный вектор, указывающий адрес входа в соответствующую
процедуру обработки. Таблица векторов прерываний занимает старшие 128 байт адресного
пространства (таблица 2). Старшие шесть позиций таблицы отведены под векторы
начальной загрузки и немаскируемых прерываний, а остальные распределяются между
маскируемыми источниками прерываний. При переходе к обслуживанию прерываний в
стеке сохраняется содержимое регистров PC, Y, X, A, B, CCR, которое
восстанавливается при возврате из подпрограммы обслуживания по команде RTI.
|
Адрес вектора |
Вид прерывания |
Маскирование |
|
$FFFE-F |
Установка в начальное состояние (Reset) |
нет |
|
$FFFC-D |
Прерывание от схемы контроля тактового сигнала |
нет |
|
$FFFA-B |
Прерывание от сторожевого таймера |
нет |
|
$FFF8-9 |
Неправильный код операции |
нет |
|
$FFF4-5 |
Внешний запрос на входе XIRQ |
бит X |
|
Адрес вектора |
Вид прерывания |
Маскирование |
Адрес вектора |
Вид прерывания |
Маскирование |
|
$FFF2-3 |
Внешний запрос на входе IRQ или сигнал на линии порта D |
бит I |
$FFDE-F |
Переполнение таймера |
бит I |
|
$FFF0-1 |
Периодическое прерывание от таймера |
бит I |
$FFDC-D |
Переполнение счётчика импульсов |
бит I |
|
$FFEE-F |
Запрос от таймера (канал 0) |
бит I |
Сигнал на входе счётчика импульсов |
бит I |
|
|
$FFEC-D |
Запрос от таймера (канал 1) |
бит I |
$FFD8-9 |
Запрос от SPI |
бит I |
|
$FFEA-B |
Запрос от таймера (канал 2) |
бит I |
$FFD6-7 |
Запрос от SCI 0 |
бит I |
|
$FFE8-9 |
Запрос от таймера (канал 3) |
бит I |
$FFD4-5 |
Запрос от SCI 1 |
бит I |
|
$FFE6-7 |
Запрос от таймера (канал 4) |
бит I |
$FFD2-3 |
Запрос от АЦП |
бит I |
|
$FFE4-5 |
Запрос от таймера (канал 5) |
бит I |
$FFD0-1 |
Внешний сигнал на линии порта J |
бит I |
|
$FFE2-3 |
Запрос от таймера (канал 6) |
бит I |
$FFCE-F |
Внешний сигнал на линии порта H |
бит I |
|
$FFE0-1 |
Запрос от таймера (канал 7) |
бит I |
$FF80-D |
Зарезервировано |
|
К немаскируемым источникам прерываний относятся: сигнал сброса на входе Reset, прерывание от схемы контроля частоты тактового сигнала, прерывание от сторожевого таймера, попытка выполнить неправильную команду, программное прерывание по команде SWI, внешний сигнал прерывания на входе XIRQ. Эти прерывания перечислены в порядке убывания приоритета их обслуживания. Обращение к одному из первых трёх векторов вызывает выполнение процедуры начальной загрузки микроконтроллера. Обслуживание запроса прерывания XIRQ производится в том случае, если в регистре CCR установлено значение бита X = 0. Разрешение обслуживания маскируемых прерываний осуществляется путём установки в 0 бита I в регистре CCR. К маскируемым источникам прерываний относятся: внешний сигнал прерывания на входе IRQ, прерывания от таймера, прерывания от блока последовательного интерфейса и от АЦП. В отличие от немаскируемых прерываний приоритет их обслуживания можно изменить с помощью специального регистра установки приоритетов. Микроконтроллеры семейства 68HC12 работают на тактовой частоте до 8 МГц и выпускаются в двух модификациях: для работы при напряжении питания 4,5-5,5 и 2,7-3,3 В. Блок фазовой автоподстройки частоты (ФАПЧ), расположенный на кристалле микроконтроллера, позволяет программно задавать частоту системы. Схема контроля тактового сигнала вызывает перезапуск (начальную загрузку) микроконтроллера, если его тактовая частота оказывается ниже 100 КГц. Перезапуск осуществляется также по сигналу сторожевого таймера, контролирующего выполнение программы.
Значительное снижение энергопотребления
микроконтроллеров обеспечивается в режимах ожидания (Wait Mode) и останова
(Stop Mode), в которые микроконтроллер переходит по командам WAIT и STOP
соответственно. В режиме ожидания останавливается работа процессора, но
продолжается функционирование периферийных модулей: таймера, последовательного
интерфейса, АЦП, сторожевого таймера, а также схемы контроля прерываний. Выход
из режима ожидания обеспечивается при поступлении запроса прерывания или
внешнего сигнала начальной загрузки (Reset). В режиме останова полностью
прекращается функционирование процессора и периферийных модулей. При этом
возврат в рабочий режим осуществляется внешними сигналами Reset или IRQ. Кроме
того, для возврата из режимов ожидания и останова можно использовать сигналы
KWD7-0, KWJ7-0, KWH7-0, поступающие на выводы портов D, J, H,
запрограммированные соответствующим образом. В режиме ожидания потребление
мощности составляет 40-50% от мощности, потребляемой в рабочем режиме. В режиме
останова ток питания снижается до нескольких десятков микроампер.
.2 Способы адресации и система команд
Микроконтроллеры семейства 68НС12 являются 16-разрядным развитием 8-разрядного семейства 68HC11. Программный код 68НС12 снизу вверх совместим с кодом 68HC11 на уровне исходного текста. Поэтому разработчики, применяющие в качестве элементной базы представителей этого популярного 8-разрядного семейства, могут без особых проблем перейти на 16-разрядные микроконтроллеры, используя имеющиеся средства программирования для 68HC11 и ранее разработанное программное обеспечение. Процессор CPU12 поддерживает все способы адресации, используемые семейством 68НС11, и реализует 7 дополнительных вариантов индексной адресации. Обеспечиваются следующие способы адресации:
1) регистровая (операнд располагается в одном из регистров процессора);
2) непосредственная (8- или 16-разрядный операнд располагается во втором и третьем байтах команды);
) прямая (8-разрядный адрес операнда задаётся во втором байте команды);
) расширенная (16-разрядный адрес операнда располагается во втором и третьем байтах команды);
) относительная (адрес операнда образуется путём сложения содержимого программного счётчика PC и заданного в команде 8- или 16-разрядного смещения);
) индексная с 5-разрядным смещением (адрес операнда образуется путём сложения содержимого регистра X, Y, SP или PC с 5-разрядным смещением);
) индексная с преддекрементом (перед выборкой операнда содержимое заданного в команде регистра X, Y или SP уменьшается на число от 1 до 8);
) индексная с прединкрементом (перед выборкой операнда содержимое заданного регистра X, Y или SP увеличивается на число от 1 до 8);
) индексная с постдекрементом (после выборки операнда содержимое заданного регистра X, Y или SP уменьшается на число от 1 до 8);
) индексная с постинкрементом (после выборки операнда содержимое заданного регистра X, Y или SP увеличивается на число от 1 до 8);
) индексная со смещением, расположенным в аккумуляторе (адрес операнда образуется путём сложения содержимого заданного регистра X, Y, SP или PC с содержимым одного из аккумуляторов);
) индексная с 9-разрядным смещением (адрес операнда образуется путём сложения содержимого заданного регистра X, Y, SP или PC с 9-разрядным смещением);
) индексная с 16-разрядным смещением (адрес операнда образуется путём сложения содержимого заданного регистра X, Y, SP или PC с 16-разрядным смещением);
) косвенно-индексная с 16-разрядным смещением (адрес операнда располагается в ячейке памяти с адресом, который получается путем сложения содержимого заданного регистра X, Y, SP или PC с 16-разрядным смещением);
) косвенно-индексная со смещением, расположенным в регистре D (адрес операнда располагается в ячейке памяти с адресом, который получается путём сложения содержимого заданного регистра X, Y, SP или PC с содержимым регистра D).
Процессор CPU12 выполняет набор из 208 команд
над операндами, расположенными в регистрах и ячейках памяти. Система команд
CPU12 является расширенным набором команд семейства 68HC11 и включает в себя
команды пересылки данных, команды арифметических и логических операций,
сравнения и сдвигов, битовые команды, команды управления программой и
управления процессором, а также группу дополнительных команд для обработки
табличных данных и реализации 'нечёткой логики'. Группа команд пересылки
включает в себя команды загрузки регистров процессора (LDAA, LDAB, LDD, LDS,
LDX, LDY), сохранения их содержимого в памяти (STAA, STAB, STD, STS, STX, STY)
и команды пересылки и обмена данными между различными регистрами (TAB, TAP,
TBA, TFR, TPA, TSX, TSY, TXS, TYS, EXG, XGDX, XGDY). К этой группе относятся
также команды, выполняющие запись содержимого регистров A, B, C, D в стек
(PSHA, PSHB, PSHX, PSHY) и загрузку этих регистров из стека (PULA, PULB, PULX,
PULY). Команды очистки устанавливают в 0 содержимое регистров-аккумуляторов и
ячеек памяти (CLRA, CLRB, CLR). Дополнительно введены команды MOVB и MOVW,
позволяющие осуществлять пересылку 8- и 16-разрядных данных из памяти в память,
команды LEAS, LEAX, LEAY, выполняющие вычисление эффективного адреса и его
загрузку в регистры SP, X или Y, а также команды для записи содержимого
регистров D, CCR в стек (PSHD, PSHC) и их загрузки из стека (PULD, PULC).
Группа команд арифметических операций позволяет выполнять сложение и вычитание
содержимого двух регистров или регистра и ячейки памяти с учётом или без учёта
признака переноса (ABA, ABX, ABY, ADCA, ADCB, ADDA, ADDB, ADDD, SBA, SBCA,SBCB,
SUBA, SUBB, SUBD), производить коррекцию результата сложения двоично-десятичных
чисел (DAA), выполнять инкремент и декремент содержимого ячейки памяти или
регистра (DEC, DECA, DECB, DES, DEX, DEY, INC, INCA, INCB, INS, INX, INY),
изменять его знак (NEG, NEGA, NEGB). К командам умножения 8х8 (MUL) и деления
16/8 (FDIV, IDIV, IDIVS), имеющимся в микроконтроллерах семейства 68HC11,
добавлены команды 16-разрядного умножения 16x16 (EMUL, EMULS), умножения 16x16
с накоплением (EMACS), деления 32/16 (EDIV, EDIVS) и знакового расширения
(SEX). Команды сравнения выполняют установку признаков N, Z, V, C в регистре
CCR в соответствии с результатом вычитания содержимого двух операндов,
хранящихся в регистрах-аккумуляторах или регистре и ячейке памяти (CBA, CMPA,
CMPB, CPD, CPS, CPX, CPY). Команды тестирования устанавливают значения признаков
N, Z в соответствии с содержимым ячейки памяти или регистра-аккумулятора (TST,
TSTA, TSTB). Команды побитового тестирования устанавливают признаки N, Z в
соответствии с результатом логической операции И над содержимым
регистра-аккумулятора и ячейки памяти (BITA, BITB). Команды логических операций
реализуют побитовые операции И, ИЛИ, Исключающее ИЛИ над содержимым регистра и
ячейки памяти (ANDA, ANDB, ANDCC, EORA, EORB, ORAA, ORAB, ORCC) и
инвертирование содержимого регистра или ячейки памяти (COM, COMA, COMB). Группа
команд сдвига включает команды одноразрядных арифметических, логических и
циклических сдвигов, выполняемых над содержимым регистров-аккумуляторов и
ячейки памяти (ASLA, ASLB, ASLD, ASRA, ASRB, LSRA, LSRB, LSRD, ROLA, ROLB,
RORA, RORB, ASL, ASR, LSR, ROL, ROR). Команды битовых операций обеспечивают
установку в 0 или 1 заданного бита в ячейке памяти (BCLR, BSET) и установку
требуемого значения признаков C, I, V в регистре CCR (CLC, CLI, CLV, SEC, SEI,
SEV). Команды управления программой реализуют условные и безусловные ветвления
(JMP, Bcc, LBcc, BRA, LBRA, BRCLR, BRSET), организацию циклов (DBNE, DBNQ,
IBNE, IBNQ), вызов подпрограмм (JSR) и выход из подпрограммы (RTS) или
процедуры обработки прерывания (RTI). Условиями ветвления могут быть значения
признаков Z (нулевой или ненулевой результат), N (положительный или
отрицательный результат), результаты выполнения команд сравнения операндов со
знаком или без знака (>, >=, <, <=). В эту группу входит также
команда программного прерывания (SWI). Для управления процессором служат
команды, переводящие его в режим ожидания и останова (WAIT, STOP), в режим
отладки (BGND), а также команда отсутствия операций (NOP). В дополнительную
группу команд, реализуемых процессором CPU12, входят команды интерполяции табличных
данных (ETBL, TBL), которые позволяют вычислить значение линейной функции в
заданной промежуточной точке. При обработке табличных данных обычно
используются также команды, позволяющие выбрать минимальное или максимальное из
двух чисел, расположенных в регистре-аккумуляторе и ячейке памяти (EMIND,
EMINM, MINA, MINM, EMAXD, EMAXM, MAXA, MAXM). Процессор CPU12 аппаратно
поддерживает операции 'нечеткой логики', что позволяет эффективно реализовывать
на базе микроконтроллеров семейства HC12 соответствующие системы контроля.
Группа команд 'нечёткой логики' включает четыре команды. Команда MEM производит
фазификацию, выполняя преобразование точных значений входных переменных в
значения лингвистических переменных в соответствии с функциями принадлежности из
базы знаний. Далее с помощью команд REVW и REV проводится непосредственно
обработка полученных значений по заданному алгоритму с учётом или без учёта
весовых коэффициентов правил обработки. С помощью команды WAV осуществляется
дефазификация, в результате которой осуществляется переход от нечётких значений
выходной переменной к точным выходным значениям, обеспечивающим требуемое
управление системой. Команды имеют длину от 1 до 6 байт. Выполнение большинства
команд занимает от 2 до 6 тактов. Большее время выполнения имеют команды
деления (11-12 тактов), умножения с накоплением (13 тактов) и прерывания (8-11
тактов)
.3 Набор периферийных устройств
Из периферийных устройств микроконтроллеры
семейства 68HC12 содержат модули параллельного и последовательного ввода/вывода
данных, таймерный модуль, многоканальный аналого-цифровой преобразователь
(АЦП), модуль формирования сигналов с широтно-импульсной модуляцией (ШИМ).
Процессор CPU12 взаимодействует с этими модулями, обращаясь к их регистрам,
которые после начальной загрузки микроконтроллера расположены в первых 512
позициях адресного пространства (рисунок 3)
.4 Порты ввода/вывода
Микроконтроллеры семейства 68НС12 имеют в своём
составе от 8 до 12 параллельных портов ввода/вывода. Эти порты могут служить
для обмена данными с внешними устройствами или выполнять определённые служебные
функции. Например, при работе микроконтроллера в расширенном режиме порты A, B,
C, D, E служат для организации обмена с внешней памятью. При использовании
порта для ввода/вывода данных направление передачи для каждого отдельного
вывода программируется путём загрузки соответствующего содержимого в регистр
управления этого порта. Выходные буферные каскады портов могут
программироваться на работу со стандартной или повышенной задержкой переключения.
При увеличении задержки переключения достигается снижение потребления мощности
и шумов на линиях. Можно также запрограммировать подключение 'подтягивающих'
резисторов к выводам порта, используемым в качестве входов
.5 Модуль последовательного интерфейса
Для организации последовательного обмена в
состав микроконтроллеров включен модуль последовательного интерфейса, который
состоит из одного или двух блоков асинхронного обмена SCI и блока синхронного
обмена SPI. В состав этого модуля входит 8-разрядный порт S, отдельные линии
которого служат для реализации последовательного обмена, а неиспользуемые линии
могут служить для параллельного ввода/вывода данных. Блок SCI позволяет
осуществлять обмен 8- или 9-разрядными данными по линиям связи с помощью
протокола, совместимого с RS-232. Скорость передачи программируется и может
достигать 38400 бит/c при тактовой частоте 8 МГц. Блок SPI обычно используется
для обмена с периферийными устройствами и другими микроконтроллерами. В
некоторых моделях микроконтроллеров имеются дополнительные модули
последовательного обмена, реализующие протоколы CAN, I2C или J1850 (таблица 1)
.6 Таймерный модуль
.7 Модуль формирования ШИМ-сигналов
В дополнение к возможностям генерации
ШИМ-сигнала с помощью таймерного модуля, в ряде моделей микроконтроллеров
имеется отдельный модуль формирования ШИМ-сигналов, оптимизированный для
применения в системах управления электроприводом. Данный модуль обеспечивает
работу двух выходных каналов с 16-разрядной модуляцией ШИМ-сигналов (65536
значений скважности формируемых импульсов) или четырёх каналов с 8-разрядной
модуляцией (256 значений скважности импульсов). Возможны комбинации сигналов с
16-разрядной и 8-разрядной модуляцией. Каждый из каналов имеет индивидуальный
регистр настройки, что позволяет независимо программировать частоту и
длительность выходных импульсов