Защелкивание прерываний

Процессор ADSP-21000 реагирует на прерывание в три этапа, каждый из которых занимает один цикл: синхронизация и защелкивание, распознавание, переход по вектору прерывания (рис. 5.1).

Время
PC n-1 N NOP NOP V
DADDR N n+1 -> NOP n+2 -> NOP V v+1
FADDR n+1 n+2 v v+1 v+2
  произошло прерывание распознавание n+1 проталкивается в стек ПС, чтение первой команды обработчика    

Рис. 5.1. Обработка прерывания

32-разрядный регистр IRPTL защелкивает (фиксирует) прерывания, генерируемые внешним или внутренним событием. Этот регистр содержит все текущие обрабатываемые и ожидающие обработки прерывания. Поля регистра IRPTL (табл.5.1) соответствуют адресам расположения обработчиков прерывания в памяти.

Таблица 5.1

Бит Адрес обработчика Имя Функция
  0x00 зарезервировано для эмуляции
  0x08 RSTI сброс (только для чтения)
  0x10 зарезервировано
  0x18 SOVFI переполнение стека состояний или цикла или наполненность стека программного секвенсора
  0x20 TMZHI прерывание от таймера высокого приоритета
  0x28 IRQ3I есть сигнал по линии IRQ 3
  0x30 IRQ2I есть сигнал по линии IRQ 2
  0x38 IRQ1I есть сигнал по линии IRQ 1
  0x40 IRQ0I есть сигнал по линии IRQ 0
  0x48 зарезервировано
  0x50 зарезервировано
  0x58 CB7I переполнение кругового буфера 7
  0x60 CB15I переполнение кругового буфера 15
  0x68 зарезервировано
  0x70 TMZLI прерывание от таймера низкого приоритета
  0x78 FIXI переполнение при операциях с ФЗ
  0x80 FLT0I переполнение при операциях с ПЗ
  0x88 FLIUI потеря значимости при операциях с ПЗ
  0x90 FLTII некорректная операция с ПЗ
19-23 0x98 – 0xB8 — - — зарезервировано
24-31 0xC0 – 0xF8 SFT0I – SFT7I пользовательские прерывания 0 – 7

Биты прерывания в IRPTL расположены в порядке убывания приоритета. Этот приоритет определяет, какое прерывание обслуживается первым, если два прерывания происходят в одном цикле. Если прерывание инициируется установкой бита в регистре STKY (при выполнении арифметических операций, переполнении стеков, переполнении кругового буфера), программа обработки прерывания должна очищать соответствующий бит STKY, чтобы не произошел повторный вызов прерывания.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: