Запросы на прерывания от внешних источников подаются на входы 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.