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

Рисунок 4.7 - Общий регистр флагов прерываний

General Interrupt Flag Register (GIFR)

Рисунок 4.7 - Общий регистр маски прерываний

General Interrupt Mask Register (GIMSK)

Бит $3B($5B) R/W Нач.знач.                 GIMSK
INT1 INT0 - - - - - -
R/W R/W R R R R R R
               

Бит 7 – INT1 (External Interrupt Request 1 Enable). Разрешение запроса внешнего прерывания 1 (см.рис.4.5, табл.4.1). Биты управления запуском прерывания (ISC11 и ISC10) в регистре управления микроконтроллером (MCUCR) определяют, по какому событию отрабатывается прерывание - по спадающему или нарастающему фронту, или же по уровню. Если вывод INT1 используется для работы с внешним источником прерывания, бит DDD0 в регистре направле­ния данных порта D (DDRD), должен быть сброшен в 0, чтобы вывод INT1 работал как вход.

Бит 6 - INT0 (External Interrupt Request 0 Enable). Разрешение запроса внешнего прерывания 0 (см.рис.4.5, табл.4.1). Биты управления запуском прерывания (ISC01 и ISC00) в регистре управления микроконтроллером (MCUCR) опре­деляют, по какому событию отрабатывается прерывание - по спадающему или нарастающему фронту или же по уровню. Если вывод INT0 используется для работы с внешним источником прерывания, бит DDD2 в регистре направле­ния данных порта D (DDRD), должен быть сброшен в 0, чтобы вывод INT0 работал как вход.

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

Бит $3A($5A) R/W Нач.знач.                 GIFR
INTF1 INTF0 - - - - - -
R/W R/W R R R R R R
               

Бит 7 - INTF1 (External Interrupt Flag1). Флаг внешнего прерывания 1. При возникновении на выводе INT1 события, вызывающего прерывание, INTF1 устанавливается в "1". Если установлены бит I регистра SREG и бит INT1 в GIMSK, происходит переход на вектор прерывания по адресу $002. Флаг очищается после выполнения обработчика прерывания. Кроме того, флаг можно очистить, записав в него логическую единицу.

Бит 6 - INTF0 (External Interrupt Flag1). Флаг внешнего прерывания 0. При возникновении на выводе INT0 события вызывающего прерывание, INTF0 устанавливается в "1". Если установлены бит I регистра SREG и бит INT0 в GIMSK, происходит переход на вектор прерывания по адресу $001. Флаг очищается после выполнения обработчика прерывания. Кроме того, флаг можно очистить, записав в него логическую единицу.

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

4.10.2.3 Timer/Counter Interrupt Mask Register (TIMSK)

Регистр маски прерывания от таймеров/счетчиков

Бит $39($59) R/W Нач.знач.                 TIMSK
OCIE2 TOIE2 TICIE1 OCIE1A OCIE1B TOIE1 - TOIE0
R/W R/W R/W R/W R/W R/W R R/W
               

Бит 7 – OCIE2 (Timer/Counter2 Output Compare Match Interrupt Enable). Разрешение прерывания по совпадению таймера/счетчика 2 (см.рис.4.5, табл.4.1). Прерывание (вектор $003) выполняется при равенстве содержимых таймера/счетчика 1 и регистра совпадения B.

Бит 6 – TOIE2 (Timer/Counter2 Overflow Interrupt Enable). Разрешение прерывания по переполнению таймера/счетчика 2 (см.рис.4.5, табл.4.1). Прерывание (вектор $004) выполняется при переполнении таймера/счетчика 1.

Бит 5 - TICIE1(Timer/Counter1 Input Capture Interrupt Enable). Разрешение прерывания по входу захвата (см.рис.4.5, табл.4.1). Прерывание (вектор $005) выполняется по сигналу захвата на выводе 11 (PD6/ICP).

Бит 4 - OCIE1A(Timer/Counter1 Output CompareA Match Interrupt Enable). Разрешение прерывания по совпадению таймера/счетчика 1 (см.рис.4.5, табл.4.1). Прерывание (вектор $006) выполняется при равенстве содержимого таймера/счетчика 1 и регистра совпадения B.

Бит 3 - OCIE1B (Timer/Counter1 Output CompareB Match Interrupt Enable). Разрешение прерывания по совпадению таймера/счетчика 1 (см.рис.4.5, табл.4.1). Прерывание (вектор $007) выполняется при равенстве таймера/счетчика 1 и регистра совпадения B.

Бит 2 - TOIE1(Timer/Counter1 Overflow Interrupt Enable). Разрешение прерывания по переполнению таймера/счетчика 1 (см.рис.4.5, табл.4.1). Соответствующее прерывание (вектор $008) выполняется при переполнении таймера/счетчика 1. Если таймер/счетчик 1 работает в режиме ШИМ, флаг переполнения устанавливается при изменении направления счета, при значении $0000.

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

Бит 0 - TOIE0 (Timer/Counter0 Overflow Interrupt Enable). Разрешение прерывания по переполнению таймера/счетчика 0 (см.рис.4.5, табл.4.1). При возникновении переполнения выполняется вектор прерывания ($009).

4.10.2.4 Timer/Counter Interrupt Flag Register (TIFR)

Бит $38($58) R/W Нач.знач.                 TIFR
OCF2 TOV2 ICF1 OCF1A OCF1B TOV1 - TOV0
R/W R/W R/W R/W R/W R/W R R/W
               

Рисунок 4.8 - Флаговый регистр прерываний от таймеров/счетчиков

Бит 7 - OCF2 (Output Compare Flag 2). Флаг выхода совпадения 1А (см.рис.4.5). Флаг устанавливается в "1" если происходит совпадение значения таймера/счетчика 2 и данных в регистре OCR2 (Output Compare Register2). Флаг очищается аппаратно при выполнении соответствующего вектора прерывания. Кроме того, флаг можно сбросить, записав в него логическую единицу.

Бит 6 – TOV2 (Timer/Counter2 Overflow Flag). Флаг переполнения таймера счетчика 2 (см.рис.4.5). Флаг TOV2 устанавливается ("1") при переполнении таймера/счетчика 2. Флаг сбрасывается аппаратно при выполнении соответствующего вектора прерывания. Кроме того, флаг можно очистить, записав в него логическую единицу.

Бит 5 - ICF1 (Input Capture Flag 1). Флаг входа захвата 1 (см.рис.4.5). Бит устанавливается в «1» при возникновении события захвата по входу. Он индицирует, что значение таймера/счетчика 1 скопировано в регистр захвата ICR1. Флаг ICF1 очищается при выполнении соответствующего вектора обработки прерывания. Кроме того, флаг можно очистить, записав в него логическую единицу.

Бит 4 - OCF1A (Output Compare Flag 1A). Флаг выхода совпадения 1А (см.рис.4.5). Флаг устанавливается в «1», если происходит совпадение значения таймера/счетчика 1 и данных в регистре OCR1A. Флаг очищается аппаратно при выполнении соответствующего вектора прерывания. Кроме того, флаг можно сбросить, записав в него логическую единицу.

Бит 3 - OCF1B (Output Compare Flag 1B). Флаг выхода совпадения 1B (см.рис.4.5). Флаг устанавливается в «1», если происходит совпадение значения таймера/счетчика 1 и данных в регистре OCR1B. Флаг очищается аппаратно при выполнении соответствующего вектора прерывания. Кроме того, флаг можно сбросить записав в него логическую единицу.

Бит 2 - TOV1 (Timer/Counter1 Overflow Flag). Флаг переполнения таймера/счетчика 1 (см.рис.4.5). Флаг TOV1 устанавливается в «1» при возникновении переполнения таймера/счетчика 1. Флаг TOV1 сбрасывается аппаратно при выполнении соответствующего вектора обработки прерывания. Кроме того, флаг можно сбросить, записав в него логическую единицу. В режиме ШИМ этот бит устанавливается, когда таймер/счетчик 1 изменяет направление счета при значении $0000.

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

Бит 0 - TOV0 (Timer/Counter0 Overflow Flag). Флаг переполнения таймера счетчика 1 (см.рис.4.5). Флаг TOV0 устанавливается в «1» при переполнении таймера/счетчика 0. Флаг сбрасывается аппаратно при выполнении соответствующего вектора прерывания. Кроме того, флаг можно очистить, записав в него логическую единицу.

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


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



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