Скачиваний:
25
Добавлен:
01.05.2014
Размер:
2.09 Mб
Скачать

3. Система прерываний

Все прерывания микроконтроллера MC68HC11E9 делятся на маскируемые или I-прерывания, которые могут быть запрещены установкой в 1 бита I в регистре признаков CCR, и немаскируемые, обработка которых производится независимо от состояния бита I. К I-прерываниям относятся 14 внутренних прерываний (прерывания от последовательного интерфейса связи SCI, последовательного периферийного интерфейса SPI и 12 прерываний от подсистемы таймера), а также внешнее прерывание по входу IRQ. Все внутренние прерывания помимо бита I могут быть замаскированы локально посредством регистров управления соответствующих подсистем. К немаскируемым прерываниям относятся внешнее прерывание по входу XIRQ (может быть замаскировано только в течение первых 64 E-циклов после сброса установкой бита X=1 в регистре CCR, в остальное время запись в этот бит игнорируется), программное прерывание по команде SWI, прерывание по неверному коду операции, прерывание по переполнению Watchdog-таймера, прерывание от монитора тактовой частоты и прерывание по системному сбросу.

При возникновении внешнего или внутреннего прерывания после завершения текущей команды бит I автоматически устанавливается в единицу (для прерываний XIRQ также устанавливается в 1 бит X), в стеке сохраняется содержимое регистров микроконтроллера и текущее значение счетчика команд, как показано на рис.3.1, а затем в счетчик команд заносится значение соответствующего вектора прерываний. По команде RTI биты I и X восстанавливаются в исходное состояние, из стека извлекается содержимое регистров на момент прерывания и выполнение прерванной программы продолжается.

СТЕК

SP

PCL

SP до предоставления прерывания

SP-1

PCH

SP-2

IYL

SP-3

IYH

SP-4

IXL

SP-5

IXH

SP-6

ACCA

SP-7

ACCB

SP-8

CCR

SP-9

SP после предоставления прерывания

Рис.3.1

В табл.3.1 приведены все источники прерываний, адреса соответствующих им векторов и указаны регистры, с помощью которых соответствующие прерывания могут быть замаскированы локально. В режиме загрузки вектора прерываний инициализируются значениями, приведенными в колонке "Адрес обработчика в режиме загрузки". Разместив по этим адресам команды перехода к собственным обработчикам прерываний можно реализовать обработку прерываний в режиме загрузки.

Векторы прерываний

Таблица 3.1

Адрес вектора

Адрес обработчика

в режиме загрузки

Источник прерывания

Общая маска

Регистр

локальной маски

$FFC0,C1

-

Зарезервировано

-

-

.

.

.

.

.

.

$FFD4,D5

-

Зарезервировано

-

-

$FFD6,D7

$00C4

SCI

Бит I

SCCR2

$FFD8,D9

$00C7

SPI

Бит I

SPCR

$FFDA,DB

$00CA

Активный фронт счетчика импульсов

Бит I

TMSK2

$FFDC,DD

$00CD

Переполнение счетчика импульсов

Бит I

TMSK2

$FFDE,DF

$00D0

Переполнение таймера

Бит I

TMSK2

$FFE0,E1

$00D3

Выходное сравнение 5

Бит I

TMSK1

$FFE2,E3

$00D6

Выходное сравнение 4

Бит I

TMSK1

$FFE4,E5

$00D9

Выходное сравнение 3

Бит I

TMSK1

$FFE6,E7

$00DC

Выходное сравнение 2

Бит I

TMSK1

$FFE8,E9

$00DF

Выходное сравнение 1

Бит I

TMSK1

$FFEA,EB

$00E2

Входной захват 3

Бит I

TMSK1

$FFEC,ED

$00E5

Входной захват 2

Бит I

TMSK1

$FFEE,EF

$00E8

Входной захват 1

Бит I

TMSK1

$FFF0,F1

$00EB

Прерывание реального времени

Бит I

TMSK2

$FFF2,F3

$00EE

IRQ/параллельный ввод-вывод

Бит I

Нет/PIOC

$FFF4,F5

$00F1

XIRQ

Бит X

Нет

$FFF6,F7

$00F4

SWI

Нет

Нет

$FFF8,F9

$00F7

Неверный код операции

Нет

Нет

$FFFA,FB

$00FA

RESET Watchdog-таймера

Нет

CONFIG

$FFFC,FD

$00FD

RESET монитора тактовой частоты

Нет

OPTION

$FFFE,FF

$BF40

RESET

Нет

Нет

Соседние файлы в папке Материалы по микроконтроллерам