Бит 1 — TOIEO: разрешение прерывания по переполнению таймера/счетчика 0. Если этот бит установлен в 1 и бит I в регистре состояния установлен в 1, разрешены прерывания по переполнению! таймера/счетчика 0. При возникновении переполнения выполняется переход на соответствующий вектор прерывания ($006). Флаг переполнения (TOVO) во флаговом регистре прерываний (TIFR) таймеров/счетчиков устанавливается в 1.
Бит 0 — в AT90S2313 зарезервирован и всегда читается как 0.
Рис. 2.23.
Бит 7 — TOV1: флаг переполнения таймера/счетчика I. Фла1 TOV1 устанавливается в 1 при возникновении переполнения таймера/счетчика 1. Флаг TOV 1 сбрасывается аппаратно при выполнение соответствующего вектора обработки прерывания. Кроме того, флаг можно сбросить, записав в него логическую единицу. Если установлены. бит I в SREG и бит TOIE1 в Т1МСК, при установке бита TOV1 выполняется прерывание по переполнению таймера/счетчика 1. В режиме ШИМ этот бит устанавливается, когда таймер/счетчик 1 изменяет направление счета при значении $0000.
Бит 6 — OCF1A: флаг выхода совпадения 1 А. Флаг устанавливается в 1 если происходит совпадение значения таймера/счетчика 1 и данных в регистре OCR1A. Флаг очищается аппаратно при выполнении соответствующего вектора прерывания. Кроме того, флаг можно сбросить, записав в него логическую единицу. Если установлены бит I в SREG и бит OCIE1А в TIMCK, при установке бита OCF1А выполняется прерывание.
Биты 5, 4 — в AT90S2313 зарезервированы и всегда читаются как 0.
Бит 3 — ICF1: флаг входа захвата 1. Бит устанавливается в 1 при возникновении события захвата по входу, он индицирует, что значение таймера/счетчика 1 скопировано в регистр захвата по входу ICR1. ICF1 очищается при выполнении соответствующего вектора обработки прерывания. Кроме того, флаг можно очистить, записав в него логическую единицу.
Бит 2 — в AT90S2313 зарезервирован и всегда читается как 0.
Бит 1 — TOV0: флаг переполнения таймера счетчика 1. Флаг TOV0 устанавливается при переполнении таймера/счетчика 0. Флаг сбрасывается аппаратно при выполнении соответствующего вектора прерывания. Кроме того, флаг можно очистить, записав в него логическую единицу. Если установлены бит I в SREG и бит TOIE0 в TIMCK, при установке бита TOV0 выполняется прерывание по переполнению таймера/счетчика 0.
Бит 0 — в AT90S2313 зарезервирован и всегда читается как 0.
Внешние прерывания управляются выводами INT0 и INT1. Обратите внимание на то, что прерывания обрабатываются, даже когда выводы сконфигурированы как выходы. Это позволяет генерировать программные прерывания. Внешние прерывания могут возникать по спадающему или нарастающему фронту, а также по низкому уровню. Это устанавливается в регистре управления процессором MCUCR.
Если внешние прерывания разрешены и сконфигурированы на отработку по уровню, прерывание будет вырабатываться до тех пор, пои вывод удерживается в низком состоянии.
Управление работой внешних прерываний рассмотрено при описании регистра управления процессором MCUCR.
Минимальное время реакции на любое из предусмотренных процессоре, прерываний — 4 периода тактовой частоты. После 4 циклов вызывается программный вектор, обрабатывающий данное прерывание. За эти 4 цикла программный счетчик записывается в ста указатель стека уменьшается на 2. Программный вектор представляет собой относительный переход на подпрограмму обслуживания прерывания, и этот переход занимает 2 периода тактовой частоты. Если прерывание происходит во время выполнения команды, длящейся несколько циклов, перед вызовом прерывания завершаете выполнение этой команды.
Выход из программы обслуживания прерывания занимает 4 периода тактовой частоты. За эти 4 периода из стека восстанавливаете программный счетчик. После выхода из прерывания процессор всегда выполняет еще одну команду, прежде чем обслужить любое отложенное прерывание.
Заметим, что регистр состояния SREG аппаратно не сохраняете процессором как при вызове подпрограмм, так и при обслуживании прерываний. Если программа требует сохранения SREG, оно должно производиться программой пользователя.
Рис. 2.24.
Биты 7, 6 — в AT90S2313 эти биты зарезервированы и всегда читаются как 0.
Бит 5 — SE: разрешение режима Sleep. Этот бит должен быть установлен в 1, чтобы при выполнении команды SLEEP процессор переходил в режим пониженного энергопотребления. Этот бит должен быть установлен в 1 до исполнения команды SLEEP.