본문 바로가기

AVR

외부 인터럽트를 이용한 LED 켜고 끄기(이론)

이번에는 외부 인터럽트를 이용하여 LED 동작을 변환 시켜 보았다.

먼저 처음 브레드 보드에서 외부 인터럽트를 시키기 위해 스위치의 포트를 바꿨다.



여기에서 조금 많은 레지스터들이 나와서

데이터 시트와 AVR 라이브러리를 보면서

정식으로 정리를 해 봐야겠다는 생각이 조금 노가다 작업을 했다.

먼저 외부 인터럽트의 레지스터 중 EICRA, EICRB가 있는데 이것은

외부 인터럽트 제어 레지스터로 인터럽트들의 트리거 방식을 설정할 때

사용한다고 하였다.

먼저 EICRA에 대해서 레지스터를 보게 되면


밑의 표는
00 = INT0 ~ INT3의 낮은 레벨에서 인터럽트를 요구
01 = 없음
10 = INT0 ~ INT3의 하강 에지에서 비동기적으로 인터럽트를 요구
11 = INT0 ~ INT3의 상승 에지에서 비동기적으로 인터럽트를 요구
의 내용으로 되어 있었다.




그리고 EICRB에 대해서 레지스터를 보게 되면


밑의 표는
00 = INT4 ~ INT7의 낮은 레벨에서 인터럽트를 요구
01 = INT4 ~ INT7에 논리적인 변화가 있을 때 인터럽트를 요구
10 = INT4 ~ INT7의 하강 에지에서 비동기적으로 인터럽트를 요구
11 = INT4 ~ INT7의 상승 에지에서 비동기적으로 인터럽트를 요구
의 내용으로 되어 있었다.


다음으로 EIMSK라는 외부 인터럽트 마스크 레지스터가 있는데
이 레지스터를 가지고 외부 인터럽트를 사용하는 걸인지 안 할 것인지를
정한다고 이해 했다.


이 레지스터를 설정한 후에 바로 외부 인터럽트가 설정 되는 것이 아니라
SREG 레지스터에서 인터럽트 인에이블 비트가 1로 설정이 되어 있어야 된다고 하여
SREG 레지스터도 한번 알아 보았다.


이 레지스터를 보게 되면 7이라고 적혀 있는 부분인 인터럽트 인에이블 비트 인데 이 비트 값이 1로
설정이 되어 있어야 인터럽트가 가능하다고 하였다.

그리고 EIFR 레지스터는 외부 인터럽트 플래그 레지스터로 외부 인터럽트의 발생여부를 나타내는
레지스터라고 하였다.




'AVR' 카테고리의 다른 글

TEXT LCD 제어 이론  (0) 2009.07.17
외부 인터럽트를 이용한 LED 켜고 끄기(실습)  (0) 2009.07.03
버튼 입력 받아 LED 켜고 끄기  (0) 2009.07.02
LED 켜기  (0) 2009.07.02
AVR Studio 4의 간단한 사용법  (0) 2009.07.01