Стивен Барретт - Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С
- Название:Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С
- Автор:
- Жанр:
- Издательство:Издательский дом «ДМК-пресс»
- Год:2007
- Город:Москва
- ISBN:5-9706-0034-2
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Стивен Барретт - Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С краткое содержание
В книге последовательно рассматриваются все этапы создания встраиваемых систем на микроконтроллерах с применением современных технологий проектирования. Задумав эту книгу, авторы поставили перед собой задачу научить читателя искусству создания реальных устройств управления на однокристальных микроконтроллерах.
Издание содержит материал, охватывающий все вопросы проектирования, включает множество заданий для самостоятельной работы, примеры программирования, примеры аппаратных решений и эксперименты по исследованию работы различных подсистем микроконтроллеров.
Данная книга является прекрасным учебным пособием для студентов старших курсов технических университетов, которые предполагают связать свою профессиональную деятельность с проектированием и внедрением встраиваемых микропроцессорных систем. Книга также будет полезна разработчикам радиоэлектронной аппаратуры на микроконтроллерах.
Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
Адреса вектора | Источник исключения | Адрес передачи управления |
---|---|---|
$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.
Интервал:
Закладка: