Конспект лекций по курсам "Проектирование центральных и периферийных устройств ЭВС", "Микропроцессоры и ЭВМ в микросистемах". Лукьяненко Е.Б. - 57 стр.

UptoLike

Составители: 

2.21. Обработка внешних прерываний
В микроконтроллере ATtiny 2313 имеется два внешних прерывания: INT0
(порт PD2) и INT1 (порт PD3). Порты должны быть сконфигурированы как входы
(с подтяжкой или без нее).
За обработку внешних прерываний отвечает регистр GIMSK (General Interrupt
Mask Register). Он разрешает или запрещает внешние прерывания INT0 и INT1.
О состоянии прерывания сигнализирует его флаг. Флаги для внешних преры-
ваний находятся в регистре флагов EIFR (External Interrupt Flag Register).
Если возникает прерывание, то в регистре флагов прерываний устанавливает-
ся в 1 соответствующий флаг.
Прерывания могут стать активными только тогда, когда в регистре состояния
SREG установлен в 1 разряд общего разрешения прерываний I (7-й разряд). Те-
перь, если наступает прерывание, то выполнение программы ответвляется по со-
ответствующему адресу, а разряд общего разрешения прерываний I сбрасывается
в 0, чем дальнейшие прерывания блокируются. Если требует прервать подпро-
грамму другим прерыванием, то после входа в подпрограмму обработки прерыва-
ния надо установить программно флаг I в логическую 1 (команда SEI).
Вместе с входом в подпрограмму обработки прерывания аппаратно сбрасыва-
ется также и соответствующий флаг, вызвавший прерывание.
2.21.1. Регистр GIMSK
Разрешения на внешние прерывания вырабатываются через регистр GIMSK.
Регистр GIMSK
7 6 5 4 3 2 1 0
INT1 INT0 PCIE - - - - -
Если разряд INT1 установлен в логическую 1, то внешнее прерывание 1 будет
разрешено, пока будет установлен разряд I в регистре SREG. Будет ли прерыва-
ние вызываться по фронту сигнала или по уровню логического 0 определяют раз-
ряды ISC11, ISC10 в регистре MCUCR. Действие этих разрядов приведено в та-
блице 14.
Табл. 14
ISC11 ISC10 Пояснение
0 0 Прерывание INT1 по уров-
ню логического 0
0 1 -
1 0 Прерывание INT1 по нарас-
тающему фронту
1 1 Прерывание INT1 по спада-
ющему фронту
57