Таблица 4.4
Таблица 4.3
MicroController Unit Control Register (MCUCR)
Время реакции на прерывание
Минимальное время реакции на любое из предусмотренных в процессоре прерываний - 4 периода тактовой частоты. После четырех циклов вызывается программный вектор, обрабатывающий данное прерывание. За эти 4 цикла содержимое программного счетчика записывается в стек. Так как программный счетчик содержит 10 бит, то под них отводится 2 байта. После записи этих двух байт в стек указатель стека уменьшается на 2.
Программный вектор представляет собой команду безусловного перехода на подпрограмму обслуживания прерывания. Этот переход занимает 2 периода тактовой частоты. Если прерывание происходит во время выполнения команды, длящейся несколько циклов, перед вызовом прерывания завершается выполнение этой команды.
Выход из программы обслуживания прерывания занимает 4 периода актовой частоты. За эти 4 периода из стека восстанавливается программный счетчик. После выхода из прерывания процессор всегда выполняет еще одну команду, прежде чем обслужить любое отложенное прерывание.
|
|
Заметим, что регистр состояния SREG аппаратно не обрабатывается процессором, как при вызове подпрограмм, так и при обслуживании прерываний. Если программа требует сохранения SREG, то это должно производиться программой пользователя.
Бит $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). Особенности каждого из режимов будут рассмотрены ниже.
Программирование режимов пониженного энергопотребления
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 приведена установка битов для задания срабатывания по уровню и фронтам.
|
|
Управление срабатыванием прерывания 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.
Для запуска режима пониженного энергопотребления должен быть установлен в «1» бит SE регистра MCUCR, и исполнена команда SLEEP. Если во время нахождения в режиме пониженного потребления происходит одно из разрешенных прерываний, процессор начинает работать, исполняет подпрограмму обработки прерывания и продолжает выполнение программы с команды, следующей за SLEEP. Содержимое регистрового файла и памяти ввода/вывода не изменяется. Если в режиме пониженного потребления происходит сброс, процессор начинает выполнение программы с вектора сброса.
Если используется прерывание по уровню, для вывода из режима Power Down, низкий уровень должен удерживаться на время, достаточное для запуска генератора тактовых импульсов - 16 мс. Иначе флаг прерывания может сброситься в «0» до того как процессор начнет работу.