Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МПС для АТП (ЛЕК).doc
Скачиваний:
33
Добавлен:
26.09.2019
Размер:
2.38 Mб
Скачать

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

Процессор TMS320C2х имеет 3 внешних маскируемых пользователем прерывания (INT2 - INT0), которые могут использоваться внешними устройствами. Внутренние прерывания генерируются последовательным портом (RINT и XINT), таймером (TINT) и командой программного прерывания (TRAP). Прерывания имеют приоритет, причем сброс имеет самый высокий приоритет, а прерывание от передатчика и последовательного порта имеет самый низкий приоритет.

Таблица 3-5. Размещение векторов прерывания и приоритет прерываний.

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

Размещение в памяти

Приоритет

Функции

*RS

0

1 (высший)

Внешний сигнал сброса

*INT0

2

2

Внешнее прерывание #0

*INT1

4

3

Внешнее прерывание #1

*INT2

6

4

Внешнее прерывание #2

8-23

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

TINT

24

5

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

RINT

26

6

Прерывание по приему от последовательного порта

XINT

28

7 (низший)

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

TRAP

30

N/A

Адрес команды TRAP

Когда появляется сигнал прерывания, он (кроме *RS) записывается в соответствующий бит 6-разрядного регистра флагов прерываний (IFR). Каждое прерывание хранится до тех пор, пока оно не будет обработано, и сбрасывается сигналом *IACK (подтверждение прерывания) или сигналом *RS (сброса). Не предусмотрены никакие команды для чтения или записи в регистр IFR.

Процессор TMS320C2х имеет адресуемый регистр масок прерываний (IMR) для маскирования внешних и внутренних прерываний. Структура регистра показана на рис. 3-19. Единичное значение бита в разрядах 5 - 0 регистра IMR разрешает соответствующее прерывание, при условии, что INTM = 0. Регистр IMR адресуется при операциях чтения или записи, но не может считываться, используя команду BLKD. При считывании содержимого регистра IMR не используемые биты (15 - 6) будут считываться как единицы. Младшие 6 бит используются для записи или чтения из регистра IMR. Заметим, что сигнал *RS не представляется в IMR, и поэтому регистр IMR не влияет на сброс.

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

XINT

RINT

TINT

*INT2

*INT1

*INT0

15

6

5

4

3

2

1

0

Рис. 10.6. Регистр маски прерываний (IMR).

Бит INTM (режима прерываний), который является битом 9 регистра состояния ST0, разрешает или блокирует все маскируемые прерывания. Нулевое значение данного бита разрешает все немаскированные прерывания, а единичное значение данного бита блокирует эти прерывания. Бит INTM устанавливается в 1 сигналом *IACK (подтверждения прерывания), командой DINT или сбросом. Этот бит сбрасывается в нулевое состояние командой EINT. Заметим, что данный бит не изменяет содержимое регистров IMR и IFR.

Процессор TMS320C2х имеет встроенный механизм для защиты многоцикловых команд. Если сигнал прерывания генерируется во время выполнения многоцикловой команды, прерывание не обрабатывается до тех пор, пока команда не будет выполнена. К таким командам также относятся команды, которые становятся многоцикловыми с помощью сигнала готовности READY.

Кроме того, процессор также не разрешает обрабатывать сигналы прерывания, когда команда повторяется при помощи команд RPT или RPTK. Прерывание хранится в регистре IFR до тех пор, пока счетчик повторений (RPTC) не установится в нулевое состояние, и лишь после этого обрабатывается сигнал прерывания. Заметим, что если даже сигнал прерывания будет снят во время выполнения процессором TMS320C2х команд в режиме повторения, сигнал прерывания все же будет зафиксирован регистром IFR и будет сохраняться в нем до тех пор, пока RPTC не установится в нулевое состояние.

Если линия сигнала *HOLD и линия прерывания становятся активными во время многоцикловой команды или режима повторения, сигнал *HOLD берет управление процессором в конце команды или цикла. Когда сигнал *HOLD снимается, происходит обработка прерывания.

Сигналы прерывания не могут обрабатываться между командой EINT и следующей за ней командой. Например, если прерывание происходит во время выполнения команды EINT, устройство всегда завершит выполнение команды EINT, а также следующей команды, прежде чем будет обрабатывать задержанное прерывание. Это обеспечивает выполнение команды RET прежде, чем обрабатывается следующее прерывание, в предположении, что команда RET следует за командой EINT. Состояние процессора при получении сигнала прерывания может быть сохранено и восстановлено.