13.7. Прерывания порта
У каждого порта имеется два вектора прерываний. Источником запуска этих прерываний может служить любая линия порта. Перед использованием прерываний порта, вначале необходимо разрешить их работу. Источниками прерываний можно выбрать одно из нескольких контролируемых на входах условий. Конкретный перечень доступных для выбора условий зависит от того, какой, синхронный или асинхронный, контроль входов используется.
Когда используется синхронный контроль, доступны для выбора все варианты контролируемых условий. Для генерации прерывания по обнаружению фронта необходимо, чтобы в течение цикла синхронизации УВВ была выполнена одна выборка изменившегося уровня линии.
Когда же используется асинхронный контроль, полная поддержка всех контролируемых условий предусмотрена только на линии 2 каждого порта. Это означает, что линия 2 способна обнаружить фронт входного сигнала и сгенерировать запрос на прерывание. Возможности других линий по обнаружению контролируемых условий в асинхронном режиме являются ограниченными. Ограничения проявляются в том, что для обнаружения фронта необходимо, чтобы измененное состояние линии сохранилось до момента возобновления работы МК и восстановления его синхронизации. Если же во время запуска МК состояние линии вернется к исходному, то процедура возобновления работы МК продолжится, но запрос на прерывание генерироваться не будет.
Возможность обнаружения низкого уровня поддерживается на всех линиях, независимо от того, активна или нет синхронизация УВВ. Если линия настроена на обнаружение низкого уровня, то запуск прерывания будет инициироваться до тех пор, пока она будет находиться в низком состоянии. Когда МК работает в активном режиме, генерация прерывания по обнаружению низкого уровня произойдет только в том случае, если низкий уровень сохранится до момента завершения выполнения текущей инструкции. Если же МК работает в экономичном режиме, то для генерации прерывания низкий уровень должен сохраняться на линии до момента завершения запуска МК. Если это условие не выполнится, т.е. низкий уровень исчезнет в процессе запуска МК, то процесс возобновления работы продолжится, но прерывание генерироваться не будет.
В таблицах 13.1…13.3 подытожена информация о том, по каким условиям могут генерироваться прерывания при различных настройках функции контроля входа.
Таблица 13.1. Поддержка условий генерации прерываний при синхронном контроле входа
Контролируемое условие |
Поддержка |
Описание прерывания |
Нарастающий фронт |
Есть |
Всегда запускается при обнаружении условия |
Падающий фронт |
Есть |
Всегда запускается при обнаружении условия |
Оба фронта |
Есть |
Всегда запускается при обнаружении условия |
Низкий уровень |
Есть |
Запускается, только если низкий уровень сохраняется неизменным |
Таблица 13.2. Поддержка условий генерации прерываний при полнофункциональном асинхронном контроле входа
Контролируемое условие |
Поддержка |
Описание прерывания |
Нарастающий фронт |
Есть |
Всегда запускается при обнаружении условия |
Падающий фронт |
Есть |
Всегда запускается при обнаружении условия |
Оба фронта |
Есть |
Всегда запускается при обнаружении условия |
Низкий уровень |
Есть |
Запускается, только если низкий уровень сохраняется неизменным |
Таблица 13.3. Поддержка условий генерации прерываний при ограниченном по функциональности асинхронном контроле входа
Контролируемое условие |
Поддержка |
Описание прерывания |
Нарастающий фронт |
Нет |
- |
Падающий фронт |
Нет |
- |
Оба фронта |
Есть |
Запускается, только если измененный уровень сохраняется неизменным |
Низкий уровень |
Есть |
Запускается, только если низкий уровень сохраняется неизменным |
|