На рис. 4.17 приведен формат таблицы векторов прерываний для МК B32. В первой колонке приведены адреса двух ячеек памяти, в которых должен располагаться двухбайтовый адрес начала подпрограммы прерывания или сброса. Во второй колонке указан источник события исключения, подпрограмма обслуживания которого должна начинаться с адреса, записанного в соответствующих ячейках памяти. Если, например, на входе внешнего запроса
Рис. 4.18. Формат регистра INTCR
Внимательный читатель должен был заметить, что адреса ячеек памяти, в которых располагаются вектора исключений, находятся в защищенной области памяти. Эту область памяти невозможно стереть и затем занести в нее новые вектора. Для того чтобы программист в процессе отладки все-таки имел возможность использования подсистемы прерывания с произвольными векторами входа в подпрограммы, в отладочном режиме работы МК семейства 68HC12/HCS12 используют дополнительную таблицу векторов, которая располагается в незащищенной области памяти. Соответствие адресов таблиц векторов прерывания в отладочном и пользовательском режиме работы приведено на рис. 4.19. На рис. 4.19 представлены альтернативные адреса размещения векторов прерываний для МК MC68HC912B32. В других моделях МК альтернативная таблица может располагаться в области ОЗУ, поскольку она предназначена только для целей отладки.
Адреса вектора | Источник исключения | Адрес передачи управления |
---|---|---|
$FFC0–$FFCF | зарезервирован | $F7C0–$F7CF |
$FFD0 | Модуль BDLC | $F7D0 |
$FFD2 | Модуль ATD | $F7D2 |
$FFD4 | зарезервирован | $F7D4 |
$FFD6 | Контроллер SCI | $F7D6 |
$FFD8 | Контроллер SPI | $F7D8 |
$FFDA | Событие на входе счетчика внешних событий | $F7DA |
$FFDC | Переполнение счетчика внешних событий | $F7DC |
$FFDE | Переполнение счетчика таймера | $F7DE |
$FFE0 | Канал 7 таймера | $F7E0 |
$FFE2 | Канал 6 таймера | $F7E2 |
$FFE4 | Канал 5 таймера | $F7E4 |
$FFE6 | Канал 4 таймера | $F7E6 |
$FFE8 | Канал 3 таймера | $F7E8 |
$FFEA | Канал 2 таймера | $F7EA |
$FFEC | Канал 1 таймера | $F7EC |
$FFEE | Канал 0 таймера | $F7EE |
$FFF0 | Метки реального времени RTI | $F7F0 |
$FFF2 | Внешнее прерывание IRQ | $F7F2 |
$FFF4 | Внешнее прерывание XIRQ | $F7F4 |
$FFF6 | Программное прерывание SWI | $F7F6 |
$FFF8 | Сброс по несуществующему коду команды | $F7F8 |
$FFFA | COP | $F7FA |
$FFFC | Сброс от системы тактирования | $F7FC |
$FFFE | Внешний сброс | $F7FE |
Рис. 4.19. Таблица адресов, которым передается управление исключениями в пользовательском и отладочном режимах работы МК
4.10.4. Система приоритетов для исключений