Когда возникает прерывание, бит глобального разрешения прерываний I сбрасывается (ему присваивается значение 0) и все прерывания запрещаются. Программа пользователя может установить этот бит для разрешения прерываний. Флаг разрешения прерываний I автоматически устанавливается в 1 при выполнении команды выхода из прерывания — RETI.
Для прерываний, вызываемых статическими событиями, например переполнение таймера 0, флаг соответствующего прерывания устанавливается при возникновении события. Если флаг прерывания очищен и присутствует условие возникновения прерывания, флаг не будет установлен, пока не произойдет следующее событие.
Когда программный счетчик устанавливается на текущий вектор прерывания для его обработки, соответствующий флаг, сгенерированный прерыванием, аппаратно сбрасывается. Некоторые флаги прерывания могут быть сброшены записью логической единицы и бит, соответствующий флагу.
Рис. 2.20.
Бит 7 — INT1: запрос внешнего прерывания 1 разрешен. Когда этот бит установлен, а также установлен бит I, разрешается прерывание от внешнего вывода. Биты управления запуском прерывания (ISC11 и ISC10) в регистре управления микроконтроллеров (MCUCR) определяют, по какому событию отрабатывается прерывание — по спадающему или нарастающему фронту или по уровню Активность на выводе приводит к возникновению прерываний, даже если вывод сконфигурирован как выход. При возникновении прерывания выполняется переход по адресу $001 для выполнения подпрограммы обработки прерывания.
Бит 6 — INTO: запрос внешнего прерывания 0 разрешен. Когда этот бит установлен, а также установлен бит I, разрешается прерывание от внешнего вывода. Биты управления запуском прерывания (ISC01 и ISC00) в регистре управления микроконтроллером (MCUCR) определяют, по какому событию отрабатывается прерывание — по спадающему или нарастающему фронту или по уровню Активность на выводе приводит к возникновению прерываний, даже если вывод сконфигурирован как выход. При возникновении прерывания выполняется переход по адресу $001 для выполнения подпрограммы обработки прерывания.
Биты 5…0 — в AT90S2313 эти биты зарезервированы и всегда читаются как 0.
Рис. 2.21.
Бит 7 — INTF1: флаг внешнего прерывания 1. При возникновении на выводе INT1 события, вызывающего прерывание, INTF1 устанавливается в 1. Если установлены бит 1 регистра SREG и бит INT1 в GIMCK, происходит переход на вектор прерывания по адресу $002. Флаг очищается после выполнения обработчика прерывания. Кроме того, флаг можно очистить, записав в него логическую единицу.
Бит 6 — INTF0: флаг внешнего прерывания 0. При возникновении на выводе INTO события, вызывающего прерывание, INTF0 устанавливается в 1. Если установлены бит I регистра SREG и бит INTO в GIMCK, происходит переход на вектор прерывания по адресу $001. Флаг очищается после выполнения обработчика прерывания. Кроме того, флаг можно очистить, записав в него логическую единицу.
Биты 5…0 — в AT90S2313 зарезервированы и всегда читаются как 0.
Рис. 2.22.
Бит 7 — TOIE1: разрешение прерывания по переполнению таймера/счетчика 1. Если установлены этот бит и бит разрешения прерываний в регистре состояния, разрешены прерывания по переполнению таймера/счетчика 1. Соответствующее прерывание (вектор $005) выполняется при переполнении таймера/счетчика 1. В регистре флагов таймеров/счетчиков (TIFR) устанавливается флаг переполнения. Если таймер/счетчик 1 работает в режиме широтно-импульсной модуляции (ШИМ), флаг переполнения устанавливается при изменении направления счета, при значении $0000.
Бит 6 — OCIE1А: разрешение прерывания по совпадению таймера/счетчика 1. Если установлены бит OCIE1А и бит разрешения прерывания в регистре состояния, разрешены прерывания по совпадению таймера/счетчика 1. Прерывание (вектор $004) выполняется при равенстве таймера/счетчика 1 и регистра совпадения. Во флаговом регистре TIFR устанавливается в 1 флаг совпадения.
Биты 5, 4 — в AT90S2313 зарезервированы и всегда читаются как 0.
Бит 3 — TICIE1: разрешение прерывания по входу захвата. Если установлены бит TICIE1 и бит разрешения прерывания в регистре состояния, разрешены прерывания по входу захвата. Соответствующее прерывание (вектор $003) выполняется по сигналу захвата на выводе 11 (PD6/1CP). Во флаговом регистре TIFR устанавливаете» флаг захвата.
Бит 2 — в AT90S2313 зарезервирован и всегда читается как 0.