На рис. 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. Система приоритетов для исключений
Бьёрн Страуструп , Ирина Сергеевна Козлова , Бьерн Страуструп , Валерий Федорович Альмухаметов
Программирование, программы, базы данных / Базы данных / Программирование / Учебная и научная литература / Образование и наука / Книги по IT