EICRB (External Interrupt Control Resister B)
EICRB 레지스터는 외부 인터럽트 7, 6, 5, 4 동작에 관한 설정을 하는 레지스터이다.
• BIT 7 - Interrupt Sense Control7 1 - 외부 인터럽트 7의 트리거 방식을 설정 • BIT 6 - Interrupt Sense Control7 0 - 외부 인터럽트 7의 트리거 방식을 설정 • BIT 5 - Interrupt Sense Control6 1 - 외부 인터럽트 6의 트리거 방식을 설정 • BIT 4 - Interrupt Sense Control6 0 - 외부 인터럽트 6의 트리거 방식을 설정 • BIT 3 - Interrupt Sense Control5 1 - 외부 인터럽트 5의 트리거 방식을 설정 • BIT 2 - Interrupt Sense Control5 0 - 외부 인터럽트 5의 트리거 방식을 설정 • BIT 1 - Interrupt Sense Control4 1 - 외부 인터럽트 4의 트리거 방식을 설정 • BIT 0 - Interrupt Sense Control4 0 - 외부 인터럽트 4의 트리거 방식을 설정 |
ISC는 인터럽트를 어떤 시점에서 잡을 것인지를 결정한다. 외부 인터럽트의 변화는 HIGH, LOW의 레벨 변화 및 HIGH ➡ LOW 또는 LOW ➡ HIGH의 엣지 변화로 입력된다. 이것은 입력의 변화가 인터럽트를 발생하지를 결정하는 비트이다.
번호 | ISCn1 | ISCn0 | 설명 |
1 | 0 | 0 | INTn 핀의 LOW 레벨 입력이 인터럽트를 트리거 |
2 | 0 | 1 | INTn 핀의 상승 혹은 하강 엣지가 인터럽트를 트리거 |
3 | 1 | 0 | INTn 핀의 Falling Edge가 인터럽트를 비동기적으로 트리거 |
4 | 1 | 1 | INTn 핀의 Rising Edge가 인터럽트를 비동기적으로 트리거 |
EIMSK (External Interrupt Mask Resister)
EIMSK 레지스터는 INT7 ~0 을 개별적으로 허용하는 레지스터이다. 세트를 하면, 인터럽트가 허용되고 클리어하면, 인터럽트가 금지된다. 단, EIMSK로 인터럽트를 허용하더라도 SREG의 I 비트가 세트되어야만 허용이 가능하다.
이 레지스터에의 비트에 “1”을 쓰고, SREG 레지스터의 I 비트가 “1”로 설정 되어 있으면 외부 인터럽트는 enable된다. EICRA와 EICRB 레지스터의 ISCn1과 ISCn0의 비트를 설정함으로써 에지 또는 레벨 방식을 선택할 수 있다.
EIFR (External Interrupt Flag Resister)
EIFR 레지스터는 INT7 ~ 0 핀에 인터럽트 신호가 입력되어 해당 인터럽트가 발생 (트리거)했음을 표시하는 레지스터이다. 이 비트는 인터럽트 처리가 시작되고 나서 서비스 루틴으로 점프하게 되면 클리어된다.
INT0~INT7 핀에 에지 또는 논리적인 변화에서 트리거 되어 인터럽트가 요구되면, INTF0~INTF7 비트는 “1”로 셋 된다. SREG 레지스터의 I 비트와 EIMSK 레지스터 의 INT0~INT7 비트가 “1”로 설정되어 있으면, MCU는 해당하는 인터럽트 벡터로 점프한다. 인터럽트 서비스 루틴 (ISR)이 실행되면 INTF0~INTF7 비트는 자동으로 “0”으로 클리어 되고, 이 INTF0~INTF7 비트에 논리적으로 “1”을 쓰면 클리어가 되며 INT0~INT7이 레벨 인터럽트로 설정되면 INTF0~INTF7 비트는 자동으로 클리어 된다.
'Embedded System > AVR' 카테고리의 다른 글
[AVR] FND (Flexible Numeric Device) (0) | 2022.06.14 |
---|---|
[AVR] 타이머 오버플로우 인터럽트 (0) | 2022.06.10 |
[AVR] 인터럽트 (Interrupt) (2) (0) | 2022.06.09 |
[AVR] 인터럽트 (Interrupt) (1) (0) | 2022.06.09 |
[AVR] CTC 비교매치 모드 인터럽트 (0) | 2022.06.09 |