Скачиваний:
144
Добавлен:
21.02.2014
Размер:
1.47 Mб
Скачать

9.2 Прерывания.

При возникновении внешнего или внутреннего прерывания, оно не обрабатывается до тех пор, пока не будет закончено выполнение текущей команды. Прерывание ожидает обработки до полного выполнения команды. После завершения текущей команды немаскируемое прерывание может быть обработано в соответствии с аппаратно установленным приоритетом, однако приоритет прерывания, связанного с битом I может быть динамически установлен в самую высокую позицию в иерархии прерываний (см. 9.2.5 Регистр наивысшего приоритета I - прерывания).

Семнадцать аппаратных прерываний и одно программное прерывание (включая все прерывания сброса) могут генерироваться различными источниками прерываний. Эти прерывание можно разделить на две категории: маскируемые и немаскируемые. В MC68HC11E9 пятнадцать прерываний могут быть замаскированы битом I регистра условий. Дополнительно к этому, все встроенные источники прерываний можно маскировать специальными управляющими битами.

Программное прерывание (команда SWI) является скорее немаскируемой командой, чем маскируемым источником прерывания. Прерывание по неверному коду команды - это немаскируемое прерывание. Последний источник прерывания, внешний вход XIRQ/, рассматривается как источник немаскируемого прерывания, потому что будучи однажды разрешенным это прерывание не может быть запрещено программно; однако оно маскируется в течение сброса и при получении сигнала на выводе XIRQ/. В таблицах 9-2, 9-3 и 9-4 приведен список всех прерываний, расположение в памяти их векторов, а также условий их возникновения и управляющих битов, которые маскируют эти прерывания по отдельности. Ниже обсуждаются различные типы прерываний. На рисунке 9-4 представлен порядок сохранения в стеке регистров при возникновении прерывания.

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

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

Маска регистра CC

Локальная маска

$FFC0,C1

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

-

-

.

.

.

.

$FFD4,D5

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

-

-

$FFD6,D7

Система SCI

Бит I

см. таблицу 9-3

$FFD8,D9

Завершение передачи SCI

Бит I

SPIE

$FFDA,DB

Входной фронт счетчика импульсов

Бит I

PAII

$FFDC,DD

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

Бит I

PAOVI

$FFDE,DF

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

Бит I

TOI

$FFE0,E1

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

Бит I

OC5I

$FFE2,E3

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

Бит I

OC4I

$FFE4,E5

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

Бит I

OC3I

$FFE6,E7

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

Бит I

OC2I

$FFE8,E9

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

Бит I

OC1I

$FFEA,EB

Входной захват 3 таймера

Бит I

IC3I

$FFEC,ED

Входной захват 2 таймера

Бит I

IC2I

$FFEE,EF

Входной захват 1 таймера

Бит I

IC1I

$FFF0,F1

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

Бит I

RTI

$FFF2,F3

IRQ/ (Внешний вывод или параллельный ввод/вывод)

Бит I

см. таблицу 9-4

$FFF4,F5

XIRQ/ вывод (псевдо-немаскируемое прерывание)

Бит X

Нет

$FFF6,F7

SWI

Нет

Нет

$FFF8,F9

Прерывание по неверному коду команды

Нет

Нет

$FFFA,FB

Сброс, вызываемый системой слежения

Нет

NOCOP

$FFFC,FD

Сброс, вызываемый тактовым монитором системы слежения

Нет

CME

$FFFE,FF

RESET

Нет

Нет

Таблица 9-2. Назначение векторов прерываний.

Причина прерывания

Локальная маска

Регистр принимаемых данных полон

RIE

Приемник переполнен

RIE

Обнаружена свободная линия

ILIE

Регистр передаваемых данных пуст

TIE

Передача завершена

TCIE

Таблица 9-3. Прерывания последовательного интерфейса связи.

Причина прерывания

Локальная маска

Внешний вывод

Нет

Квитирование параллельного ввода/вывода.

STAI

Таблица 9-4. Прерывания по IRQ/.

СТЕК

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 после прерывания

Рисунок 9-4. Порядок заполнения стека при обслуживании прерывания.

Соседние файлы в папке МС68НС11Е9