Вход/Регистрация
Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С
вернуться

Пак Дэниэл Дж.

Шрифт:

Рис. 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. Система приоритетов для исключений

Среди представленного множества событий, которые могут вызвать исключения, ряд событий обладают большей значимостью для системы, чем другие. В микропроцессорной технике значимость события характеризуют термином «приоритет». События большей значимости обладают более высоким приоритетом. Рассматривая множество исключений для 68HC12/HCS12, можно отметить, что все немаскируемые источники исключений по умолчанию наделены более высоким приоритетом, нежели маскируемые. Поэтому, если в один и тот же момент времени поступят два запроса, то первым будет обслужен немаскируемый запрос, который обладает более высоким приоритетом. Затем будет выполнена подпрограмма обслуживания запроса с низшим приоритетом, в нашем случае этот запрос маскируемый.

Немаскируемые запросы исключений также ранжируются по приоритету. В приведенном ниже списке приоритет событий снижается с увеличением номера записи:

1. Внешний сброс по входу

или сброс по нарастанию напряжения питания POR;

2. Сброс по монитору системы тактирования;

3. Сброс по переполнению сторожевого таймера COP;

4. Программное прерывание SWI;

5. Немаскируемое прерывание по входу

.

Очередность приоритетов маскируемых прерываний отображена на рис. 4.17. Чем выше строка источника события в таблице векторов, тем выше его приоритет. Однако приоритет маскируемого прерывания может быть повышен посредством записи соответствующей комбинации битов в регистр уровня приоритета HPRIO. Код, который следует записать в регистр HPRIO для назначения выбранному источнику запросов наивысшего приоритета среди маскируемых прерываний, приведен в последней колонке таблицы рис. 4.17. Следует помнить, что изменение кода в регистре HPRIO возможно только при единичном значении глобальной маски прерываний I, т.е. когда маскируемые прерывания запрещены. После повышения уровня прерывания какого либо запроса остальные источники запросов сохраняют приведенное в таблице векторов прерываний рис. 4.17 распределение приоритетов.

Вопросы для самопроверки

1. Какой код должен быть записан в регистр HPRIO, чтобы приоритет прерывания от аналого-цифрового преобразователя стал наивысшим среди маскируемых прерываний?

Ответ: Код $D2 следует записать в регистр уровня приоритета HPRIO.

2. Приведите запись выражения на Си, которое реализует действие вопроса 1.

Ответ: HPRIO = 0xD2

3. Как изменятся приоритеты немаскируемых и маскируемых исключений после изменения приоритета прерывания от модуля АЦП в результате действий вопроса 1 или 2?

Ответ: Приоритеты немаскируемых исключений останутся без изменения. Приоритеты все маскируемых прерываний, кроме АЦП, понизятся на один уровень, но при этом по отношению друг к другу их приоритеты не изменятся.

4. Какие действия должен предпринять программист, чтобы после начального запуска МК присвоить входу

наивысший приоритет среди маскируемых прерываний?

Ответ: Никаких. В соответствие с таблицей приоритетов на рис. 4.17 вход

автоматически имеет наивысший приоритет среди маскируемых запросов.

4.10.5. Регистры подсистемы прерывания

Два регистра специальных функций используются для задания режимов подсистемы прерывания:

• INTCR — регистр управления внешним прерыванием по входу

;

• HPRIO — регистр уровня приоритета.

Формат регистра INTCR приведен на рис. 4.18. Для того чтобы разрешить прерывание по входу

, необходимо командой CLI сбросить глобальную маску прерывания I в регистре признаков CCR центрального процессора и установить в 1 бит разрешения внешнего прерывания IRQEN в регистре INTCR (бит 6). Бит 7 регистра INTCR, именуемый IRQE, конфигурирует линию 
на прием запроса при низком уровне сигнала (при IRQE = 0) или только по перепаду сигнала с 1 на 0 (при IRQE = 1). В первом случае, если активный низкий уровень на входе
установлен и поддерживается внешним устройством после завершения исполнения подпрограммы прерывания, МК воспримет такую ситуацию как новый запрос и снова перейдет к исполнению подпрограммы прерывания. Так будет продолжаться до тех пор, пока на входе внешнего прерывания
не установится логическая 1. Во втором случае, когда внешнее событие фиксируется только по перепаду сигнала 
из 1 в 0, в аналогичных условиях будет распознан только один запрос на прерывание, соответственно и подпрограмма прерывания будет исполнена только один раз.

Рис. 4.20. Формат регистра HPRIO

Регистр уровня приоритета HPRIO предназначается для изменения уровня приоритета одного из источников маскируемых прерываний. Формат регистра HPRIO приведен на рис. 4.20. Если в регистр записать число, которое указано в правой колонке таблицы рис. 4.17, то соответствующий запрос получит наивысший приоритет среди группы маскируемых прерываний. В состоянии сброса МК регистр HPRIO устанавливается в $F2, что соответствует наивысшему уровню приоритета для запроса от внешнего устройства по входу

, что и отражено в таблице векторов рис. 4.17.

  • Читать дальше
  • 1
  • ...
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: