fl
"РЛ" - НАЧИНАЮЩИМ
/
Глава 15. Прерывания
Настала пора познакомиться с системой, без которой
создание многих устройств было бы практически невозмож-
ным - системой
прерываний.
Ранее я упоминал о том, что
прерывание - это приостановка работы основной програм-
мы в ответ на определенное событие, выполнение специаль-
ной подпрограммы-обработчика этого события, и продолже-
ние работы основной программы с прерванного места. Те-
перь мы познакомимся с аппаратными средствами, реали-
зующими эту систему в микроконтроллере, а так же с прин-
ципом программной реализации обработчиков прерываний.
Событием, вызывающим прерывание, может быть уста-
новка определенных битов в некоторых определенных реги-
страх специальных функций. Биты эти называются флагами
запроса прерывания, и могут устанавливаться аппаратно
внутренними устройствами (например, таймерами), про-
граммно (например, командами SETB), а также при поступ-
лении определенного внешнего сигнала на линию Р3.2, РЗ.З
или Р1.1. Говорят, что устройство, порождающее установку
флага запроса прерывания, является источником прерыва-
ния или источником запроса прерывания. Всего в микрокон-
троллере AT89S8252 предусмотрено? источников прерыва-
ьмй: 3 внешних источника, 3 таймера и один общий источник
от последовательных интерфейсов UART и SPI. Условие, при
котором формируется тот или иной запрос прерывания, оп-
ределяется режимом работы соответствующего устройства,
и рассматривать их мы будем по мере изучения внутренних
устройств микроконтроллера.
Устройство управления микроконтроллера реализует
обработку поступившего запроса следующим образом: пос-
ле обнаружения возникновения запроса прерывания снача-
ла завершается выполнение текущей команды, затем в стек
заносится адрес следующей команды и выполняется искус-
ственно вызванная команда LCALL на специальный адрес,
называемый
вектором прерывания,
т.е. адрес обработчика
прерывания. Обработчик прерывания-это обычная подпрог-
рамма, только завершается она командой RETI, командой
возврата из прерывания.
Для того, чтобы микроконтроллер среагировал на тот или
иной запрос, мало просто установить соответствующий флаг
запроса, необходимо соблюсти еще несколько условий. Ус-
ловия зти задаются при помощи двух регистров специаль-
ных функций, называемых регистром разрешения прерыва-
ний IE и регистром приоритетов прерываний IP.
Регистр IE определяет, какие запросы прерываний будут
обрабатываться, а какие нет. Делается это при помощи ус-
тановки соответствующих битов этого регистра (таблица 13).
Флаг ЕА, если он установлен, разрешает обработку всех
прерываний. Если этот влаг сброшен, будут проигнорирова-
ны любые запросы.
Флаг ЕТ2 разрешает (если установлен) или запрещает
(если сброшен) обработку запросов от таймера №2.
Флаг ES управляет обработкой запросов от последова-
тельных интерфейсов UART и SPI.
Таблица 13. Регистр IE
Разряд
7
6
5
4
3
2
1
0
Флаг
ЕА
-
ЕТ2
ES
ЕТ1
ЕХ1
ЕТО
EX0
Флаг ЕТ1 управляет обработкой запросов оттаймера №1
(и при определенных обстоятельствах, от таймера №0), а
флаг ЕТО - от таймера №0.
Флаг ЕХ1 управляет обработкой запросов от внешнего
входа INT1 (линия РЗ.З), а ЕХО - от внешнего входа INTO
(линия Р3.2).
Флаг IE.6 не задействован в системе прерываний, не ре-
комендуется использовать этот флаг (опрашивать или изме-
нять) в своих программах (это общее требование для всех
незадейстдованных ресурсов микроконтроллера, будь то
флаги регистров или отсутствующие ячейки памяти).
После сброса регистр IE содержит нулевое значение,
т.е. все прерывания запрещены.
В микроконтроллерах семейства MCS51 реализована
система прерываний
с двухуровневыми приоритетами.
Что
зто означает? .Дело, в том, что все внутренние устройства
микроконтроллера работают параллельно и независимо друг
от друга, поэтому возможна ситуация, когда сначала посту-
пает запрос от одного, а потом, еще до завершения обработ-
чика первого прерывания, поступает запрос от другого уст-
ройства. Большинство микроконтроллеров иных семейств в
этом случае поступают просто: пока первый обработчик пре-
рывания не завершится, никакое иное прерывание не будет
обслужено, и только после завершежя работы первого,
воз-
можно,
будет обработан второй запрос. В семействе MCS51
все реализовано иначе, намного гибче и эффективнее. Каж-
дому запросу присвоен определенный
приоритет,
т.е. при-
знак важности, и во время работы обработчика менее при-
оритетного запроса может быть выполнен вызов обработчи-
ка более приоритетного запроса, но не наоборот. Это позво-
ляет обеспечить гарантированную обработку важных с точ-
ки зрения программиста событий за счет замедления реак-
ции на менее важные. Кстати, если вдруг запросы поступят
в устройство управления одновременно, то первым будет выз-
ван обработчик более приоритетного, а менее приоритетный
запрос будет отложен. Его вызов произойдет только после
того, как завершится обработка более приоритетного и бу-
дет выполнена одна команда основной, прерванной програм-
мы. Это, с одной стороны, гарантирует, что основная про-
грамма будет выполняться всегда (хотя, возможно, и очень
медленно), даже если запросы прерывания следуют друг за
другом с большой частотой, но, с другой стороны, создает
ситуацию, при которой наименее ^приоритетный запрос ни-
когда не будет обслужен (зто может произойти, если до за-
вершения одного более приоритетного обработчика посту-
пит другой более приоритетный запрос, за ним - снова пер-
вый и
Т.Д.).
Приоритеты у запросов делятся на 2 вида:
фиксирован-
ный
и
пользовательский
или
назначаемый.
Фиксированный
уровень приоритета совпадает с номером бита соответству-
ющего флага в регистре IP - чем меньше номер бита, тем
выше приоритет. То еесть наивысший фиксированный при-
оритет у внешнего запроса INTO, а наименьший - у запро-
са от таймера №2. Однако вы можете изменить порядок
Таблица 14. Регистр IP
Разряд
7
6
5
4
3
2
1
0
Флаг
-
-
РТ2
PS
РТ1
РХ1
РТ0
РХ0
44
I) Родиолюбитель - 0 7 /2 0 0 7
предыдущая страница 44 Радиолюбитель 2007-07 читать онлайн следующая страница 46 Радиолюбитель 2007-07 читать онлайн Домой Выключить/включить текст