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

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

Шрифт:

• Прерывание от модулей контроллеров последовательного ввода/вывода SCI и SPI. Каждый модуль последовательного ввода/вывода формирует целую группу запросов на прерывание: при завершении передачи слова, при приеме слова, при обнаружении различного рода нарушений в протоколе передачи информации.

• Прерывание от модуля АЦП. Модуль аналого-цифрового преобразователя формирует запрос на прерывание, когда процесс оцифровки очередного сигнала завершен, и двоичный код сигнала может быть считан в память МК.

• Прерывание при выходе МК из энергосберегающих режимов. Это прерывание позволяет вывести МК из состояния STOP или WAIT, в котором он находился с целью снижения потребляемой энергии. Такие прерывания очень полезны при объединении нескольких МК в информационную сеть. Мы рассмотрим этот тип прерывания более подробно в следующем параграфе.

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

1. Каковы различия между прерыванием и сбросом? 

Ответ: И прерывание, и сброс МК вызывают принудительный останов выполнения текущей прикладной программы. Поэтому эти два состояния МК характеризуют общим термином «исключение». Сброс МК обычно вызывается нарушениями в работе узлов МК или ошибках при исполнении прикладной программы. Когда такие неисправности возникают, состояние сброса переводит МК в некоторое начальное состояние, из которого и аппаратные средства и программа могут начать правильное функционирование. Таким образом, возникшая не фатальная неисправность будет устранена. В отличие от сброса, запросы на прерывание генерируются при штатной работе микропроцессорной системы. Они используются для организации работы системы в реальном времени. Запросы могут генерироваться встроенными в МК периферийными модулями или внешними сигналами. В отличие от сброса, при обслуживании запроса на прерывание выполняется специальная подпрограмма прерывания.

2. Каково различие между маскируемыми и немаскируемыми прерываниями?

Ответ: Немаскируемое прерывание не может быть запрещено программистом. Напротив, маскируемое прерывание может быть многократно разрешено и запрещено в ходе исполнения прикладной программы.

3. Каково различие между прерываниями по входам

 и
?

Ответ: И

, и
 являются входами МК для подключения внешних источников запросов на прерывания. Но прерывания по входу 
— маскируемые, а по входу
— немаскируемые.

4. Как организовать подсистему прерывания с несколькими внешними запросами для МК семейства 68HC12/HCS12, используя лишь один вход внешнего прерывания

.

Ответ: Вход внешнего прерывания

обладает низким активным уровнем сигнала. Это означает, что если сигнал на этом входе изменил свое значение с 1 на 0, то в МК генерируется запрос на прерывание. Множество сигналов запросов на прерывание следует объединить по И. Кроме того, каждый из этих сигналов следует подключить к отдельному входу порта МК. Тогда, если все сигналы запросов находятся в неактивном состоянии, на выходе элемента формируется И высокий логический уровень, и вход
также в находится в неактивном состоянии. Если же на одном из входов запросов устанавливается низкий логический уровень, то на входе
 формируется активный уровень запроса, в результате по истечении некоторого времени МК переходит к выполнению подпрограммы прерывания. В этой подпрограмме МК опрашивает последовательно все линии порта, к которым подключены сигналы внешних запросов с целью определения, какой из сигналов вызвал прерывание. Далее МК переходит на подпрограмму обслуживания именно этого запроса. Схема подключения сигналов запросов к МК по предложенному способу приведена на рис. 4.16.

4.10.3. Вектора исключений

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

В МК семейства 68HC12/HCS12 начальные адреса подпрограмм прерывания и начального запуска располагаются в специальной области памяти, которая называется таблицей векторов прерывания. Таблица векторов прерывания размещается в последних 128 ячейках резидентной линейно адресуемой Flash памяти программ. Это означает, что независимо от того, каким реальным объемом резидентного ПЗУ обладает конкретная модель МК, имеет или не имеет этот МК страничную адресацию памяти программ, таблица векторов прерывания будет помещена в адресном пространстве $FF80…$FFFF. Причем, не все 128 ячеек памяти могут быть заняты векторами исключений. Объем таблицы векторов определяется числом источников прерываний и сброса в конкретной модели МК.

Адреса вектора Источник исключения Глобальная маска в регистре CCR Биты разрешения прерывания в регистрах специальных функций Значение регистра HPRIO для установления наивысшего уровня приоритета
Регистр Бит
$FFFE, $FFFF Внешний сброс нет нет нет —
$FFFC, $FFFD Сброс от системы тактирования нет COPCTL CME, FCME —
$FFFA, $FFFB COP нет нет COP rate selected —
$FFF8, $FFF9 Сброс по несуществующему коду команды нет нет нет —
$FFF6, $FFF7 Программное прерывание SWI нет нет нет —
$FFF4, $FFF5 Внешнее прерывание XIRQ X нет нет —
$FFF2, $FFF3 Внешнее прерывание IRQ I INTCR IRQEN $F2
$FFF0, $FFF1 Метки реального времени RTI I RTICTL RTIE $F0
$FFEE, $FFEF Канал 0 таймера I TMSK1 C0I $EE
$FFEC, $FFED Канал 1 таймера I TMSK1  C1I $EC
$FFEA, $FFEB Канал 2 таймера I TMSK1 C2I $EA
$FFE8, $FFE9 Канал 3 таймера I TMSK1 C3I $E8
$FFE6, $FFE7 Канал 4 таймера I TMSK1 C4I $E6
$FFE4, $FFE5 Канал 5 таймера I TMSK1 C5I $E4
$FFE2, $FFE3 Канал 6 таймера I TMSK1 C6I $E2
$FFE0, $FFE1 Канал 7 таймера I TMSK1 C7I $E0
$FFDE, $FFDF Переполнение счетчика таймера I TMSK1 TOI $DE
$FFDC, $FFDD Переполнение счетчика внешних событий I PACTL PAOVI $DC
$FFDA, $FFDB Событие на входе счетчика внешних событий I PACTL PAI $DA
$FFD8, $FFD9 Контроллер SPI I SP0CR1 SPIE $D8
$FFD6, $FFD7 Контроллер SCI I SP0CR2 TIE, TCIE, RIE, ILIE $D6
$FFD4, $FFD5 зарезервирован I — — $D4
$FFD2, $FFD3 Модуль ATD I ATDCTL2 ASCIE $D2
$FFD0, $FFD1 Модуль BDLC I BCR1 IE $D0
$FF80, $FFC1 зарезервирован I — — $80–$C0
$FFC2, $FFC9 зарезервирован I — — $C2–$C8
$FFCA, $FFCB Переполнение счетчика внешних событий B I PBCTL PBOVI $CA
$FFCC, $FFCD Переполнение счетчика I MCCTL MCZI $CC
$FFCE, $FFCF зарезервирован I — — $CE

Рис. 4.17. Таблица векторов сброса и прерывания для МК MC68HC912B32

На рис. 4.17 приведен формат таблицы векторов прерываний для МК B32. В первой колонке приведены адреса двух ячеек памяти, в которых должен располагаться двухбайтовый адрес начала подпрограммы прерывания или сброса. Во второй колонке указан источник события исключения, подпрограмма обслуживания которого должна начинаться с адреса, записанного в соответствующих ячейках памяти. Если, например, на входе внешнего запроса

будет установлен низкий логический уровень, и МК перейдет к обслуживанию прерывания поэтому запросу, то аппаратные средства МК считают 16-разрядный код из ячеек памяти с адресами $FFF2, $FFF3 и передадут его в счетчик адреса PC центрального процессора. Так начнет исполняться подпрограмма прерывания по внешнему запросу
. В третьей колонке таблицы рис. 4.17 указан бит глобальной маски для каждого источника исключения. Обратите внимание, что все источники сброса и программное прерывание по команде SWI невозможно запретить под управлением программы. Остальные прерывания могут быть запрещены либо X–, либо I-битом в регистре признаков CCR центрального процессора. Причем установленный в 1 бит I запрещает сразу все прерывания, напротив которых он упомянут в таблице. Поэтому этот бит и носит название глобальной маски прерывания. В колонках 4 и 5 приведены имена регистров специальных функций и битов этих регистров, которые являются битами разрешения для соответствующих запросов на прерывание. Эти биты позволяют разрешить или запретить прерывание только от одного источника запроса. Для того чтобы запрос на прерывание поступил в центральный процессор, необходимо, чтобы глобальная маска прерывания I была сброшена, и бит разрешения соответствующего прерывания был установлен в 1. Например, с помощью таблицы рис. 4.17 можно получить справку о том, что прерывание по внешнему запросу
будет разрешено, если бит разрешения внешнего прерывания IRQEN в регистре управления прерываниями INTCR будет установлен в 1, а бит глобальной маски прерывания I в 0. Формат регистра управления внешним прерыванием INTCR приведен на рис. 4.18. Последняя колонка таблицы рис. 4.17 содержит шестнадцатеричный код, который необходимо загрузить в регистр HPRIO для того, чтобы назначить соответствующему запросу наивысший уровень приоритета.

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

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

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

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

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