Внешние прерывания

Запросы на прерывания от внешних источников подаются на входы INT0 и INT1. Прерывания обрабатываются даже тогда, когда выводы сконфигурированы как выходы. Это позволяет генерировать программные прерывания. Внешние прерывания могут возникать по спадающему или нарастающему фронту, а также по низкому уровню. Это устанавливается в регистре управления процессором MCUCR (см.п.4.10.5). Если внешние прерывания разрешены и сконфигурированы на отработку по уровню, прерывание будет вырабатываться до тех пор, пока вывод удерживается в низком состоянии.

Время реакции на прерывание

Минимальное время реакции на любое из предусмотренных в процессо­ре прерываний - 4 периода тактовой частоты. После четырех циклов вы­зывается программный вектор, обрабатывающий данное прерывание. За эти 4 цикла содержимое программного счетчика записывается в стек. Так как программный счетчик содержит 10 бит, то под них отводится 2 байта. После записи этих двух байт в стек указатель стека уменьшается на 2.

Программный вектор представляет собой команду безусловного перехода на подпрограмму обслу­живания прерывания. Этот переход занимает 2 периода тактовой частоты. Если прерывание происходит во время выполнения команды, длящейся неско­лько циклов, перед вызовом прерывания завершается выполнение этой команды.

Выход из программы обслуживания прерывания занимает 4 периода ак­товой частоты. За эти 4 периода из стека восстанавливается программный счетчик. После выхода из прерывания процессор всегда выполняет еще од­ну команду, прежде чем обслужить любое отложенное прерывание.

Заметим, что регистр состояния SREG аппаратно не обрабатывается процессором, как при вызове подпрограмм, так и при обслуживании преры­ваний. Если программа требует сохранения SREG, то это должно произво­диться программой пользователя.

MicroController Unit Control Register (MCUCR)

Бит $35($55) R/W Нач.знач.                 MCUCR
- SE SM1 SM0 ISC11 ISC10 ISC01 ISC00
R R R/W R/W R/W R/W R/W R/W
               

Рисунок 4.9 - Регистр управления микроконтроллером – MCUCR

Биты 7 - зарезервирован. В AT90S8535 этот бит зарезервирован и всегда читается как 0.

Бит 6 – SE (Sleep Enable). Разрешение режима Sleep. Этот бит должен быть установлен в 1, чтобы при выполнении команды SLEEP процессор переходил в режим пониженного энергопотребления (Sleep). Для использования режи­ма пониженного энергопотребления этот бит рекомендуется устанавливать в 1 до исполнения команды SLEEP.

Биты 5, 4 - SM1, SM0 (Sleep Mode Select Bits 1 and 0). Режим Sleep. Эти биты выбирают один из доступ­ных режимов пониженного энергопотребления (табл.4.3). Особенности каждого из режимов будут рассмотрены ниже.

Таблица 4.3

Программирование режимов пониженного энергопотребления

SM1 SM0 Sleep Mode Режим Sleep
    Idle Ждущий режим (холостого хода)
    Reserved Зарезервировано
    Power-Down Режим микропотребления
    Power Save Экономичный режим

Биты 3,2 - ISC11, ISC10 (Interrupt Sense Control 1 Bits 1 and 0). Биты управления срабатыванием внешнего прерывания по входу INT1. Внешнее прерывание активируется выводом INT1, если установлен флаг I регистра состояния SREG и установлена соответствующая маска в регистре GIMSK. В табл.4.4 приведена установка битов для задания срабатывания по уровню и фронтам.

Таблица 4.4

Управление срабатыванием прерывания INT1

ISC11 ISC10 Описание
    Запрос прерывания генерируется по низкому уровню на входе INT1
    Зарезервировано
    Запрос на прерывание по спадающему фронту на входе INT1
    Запрос на прерывание по нарастающему фронту на входе INT1

ПРИМЕЧАНИЕ: При изменении битов ISC11/ISC10 прерывание INT1 должно быть запрещено очисткой соответствующего бита в регистре GIMSK. Иначе прерывание может возникнуть во время изменения битов.

Биты 1,0 – ISC01, ISC00 (Interrupt Sense Control 0 Bits 1 and 0). Биты управления срабатыванием внешнего прерывания по входу INT0. Назначение, конфигурирование – см. биты ISC11, ISC10.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: