'ATmega128 외부인터럽트 핀'에 해당되는 글 1건

  1. 2014.08.25 마이크로프로세서 ATmega128 AVR 의 외부 인터럽트
생활, 정보2014. 8. 25. 22:30

ATmega128 프로세서의 외부 인터럽트를 알아보기

ATmega128에서 외부 인터럽트는 INT0부터 INT7까지 CPU외부의 핀을 통해 입력되는 신호에 의해서

발생되는 외부 인터럽트를  말합니다. 외부 인터럽트는 이 핀들을 출력으로 설정하더라도 발생될수

있습니다. 외부 인터럽트 INT0~INT7은 에지 트리거(하강 또는 상승에지) 또는 레벨 트리거 LOW레벨

에 의해 인터럽트가 발생할수 있으며, 레지스터 EICRA와 EICRB에 의해 설정됩니다.

포트 D의 하위 4핀 : INT0~INT3과 포트E의 상위 4핀(INT4~INT7)를 이용합니다.

인터럽트 제어 레지스터

EICRA(External Interrupt Control Register) : 외부 인터럽트 제어 레지스터 A

INT0~INT3의 외부 인터럽트 트리거 방식을 설정합니다.

 ISCn1

ISCn0 

인터럽트 트리거 방식 

 0

0

INTn 핀의 레벨L레벨 신호 입력에 의해 인터럽트 트리거

 0

1

reserved

 1

0

INTn 핀의 하강 에지에서 인터럽트 트리거

 1

1

INTn 핀의 상승 에지에서 인터럽트 트리거

 

 → EICRB(External Interrupt Control Register) : 외부 인터럽트 제어 레지스터 B

INT4~INT7의 외부 인터럽트 트리거 방식을 설정합니다.

 ISCn1

ISCn0 

인터럽트 트리거 방식 

 0

0

INTn 핀의 레벨L레벨 신호 입력에 의해 인터럽트 트리거

 0

1

INTn 핀의 논리값의 변화에 의해 인터럽트 트리거

 1

0

INTn 핀의 하강 에지에서 인터럽트 트리거

 1

1

INTn 핀의 상승 에지에서 인터럽트 트리거

 

EIMSK(External Interrupt Mask Register) :외부 인터럽트 마스크 레지스터

외부인터럽트 INT0~INT7를 개별적으로 허용하는 레지스터로 1로 설정하면 인터럽트 허용, 0으로

설정하면 인터럽트가 허용이 안된다 SREG레지스터의 I-q비트가 1이고 EIMSK레지스터의 INT0~INT7

비트가 1이면 인터럽트는 인에이블(Enable) 상태가 됩니다. 

INT7~INT0 :외부인터럽트 인에이블 비트로서 1로 설정하면 해당 인터럽트 허용, 0으로 설정하면

인터럽트 금지 해당 비트가 1로 설정된 상태에서 SREG레지스터의 I비트를 1로 설정하면 해당 외

부 인터럽트가 인에이블 상태가 됩니다.

 

EIFR(External Interrupt Flag Register) 외부 인터럽트 플레그 레지스터 INT4~INT7핀에 인터럽트

신호가 입력되어 해당 인터럽트가 트리거 되었음을 표시하는데 사용됩니다. 

INTF7~INTF0 외부인터럽트 플레그 비트로 에지 트리거나 레벨 값 변화 인터럽트가 발생하면 INTF

비트가 1로 세트되며, 인터럽트 루틴이 실행되면 플레그는 클리어됩니다. 또한 플레그에 1을 써

주면 클리어 됩니다.

 

SREG(Status Register) 상태 레지스터로 SREG레지스터는 산술 연산 결과에 따른 상태 플레그

비트와 전체 인터럽트를 제어하는 인에이블 비트를 가진다. 1로 셋되어야 인터럽트 가능해지며

인터럽트가 발생하면 I비트는 클리어되고 RETI명령에 의해 1로 셋트되어 집니다. 

비트7 [I] 전역 인터럽트 인에이블 비트로 이비트느 전체 인터럽트를 인에이블 이나 디세이블 시킬

수 있는 비트로 이 비트를 1로 셋트 해야지만 인터럽트가 사용가능해 지며 인터럽트가 발생하면

I 비트는 클리어 되고 RETI명령에 의해 1로 세트 되어 집니다.

Posted by it is