0126166
Visit Today : 305
This Month : 6589
Your IP Address: 35.173.48.224

atmega128 외부 인터럽트 예제

2 – ISR() 함수는 모든 인터럽트에 대한 일반적인 인터럽트 서비스 루틴입니다. 즉, AVR C 프로그램에서 여러 ISR() 함수를 사용할 수 있습니다. 인수 „INT0_vect” 이 ISR은 외부 인터럽트 0에 대한 것임을 나타냅니다. 일반 인터럽트 플래그 레지스터 – GIFR 우리는 단지 인터럽트 플래그 비트를 지웠다.• 비트 6 – INTF0: 외부 인터럽트 플래그 0 INT0 핀에 가장자리 또는 논리 변경 인터럽트 요청을 트리거하는 경우, INTF0becomes set (하나). SREG의 I 비트와 GICR의 INT0 비트가 설정된 경우 MCUWILL은 해당 인터럽트 벡터로 이동합니다. 인터럽트루틴이 실행되면 플래그가 지워집니다. 또는 논리적 플래그를 작성하여 플래그를 지울 수 있습니다. 이 플래그는 INT0이 레벨 인터럽트로 구성될 때 항상 지워집니다. 핀을 GND에 연결하는 테이스터를 누르면 INT0 인터럽트가 발생하며, 풀업 저항기는 테이스터를 누르지 않을 때 핀을 높게 유지합니다.

모드가 논리적 0으로 설정되면 핀의 값이 0인 경우 인터럽트는 계속 발생합니다. 이 기간 동안 기본 프로그램의 실행이 중지됩니다. Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â 이트€™ 는 마이크로 컨트롤러의 C 코드에 인터럽트 서브 루틴을 포함 하는 조금 까다로운, 초보자를 위한 조금 복잡 한. 따라서 AVR GCC 개발자는 많은 프로그램에서 코드 크기를 단축한 인터럽트와 매크로를 나타내는 몇 가지 기호를 선언했습니다. 기호 목록과 매크로가 온라인 문서에 나열됩니다. 여기서 는 외부 인터럽트 0 및 외부 인터럽트 1에 대한 인터럽트 서브루틴을 작성해야 합니다. 코드는 다음과 같이 보입니다: 외부 인터럽트를 사용하려면 핀을 표준 IO 입력으로 구성해야 합니다(출력으로도 사용할 수 있지만 이 경우 인터럽트는 컨트롤러 자체에서만 만들 수 있음). 인터럽트를 수신하고 외부 인터럽트 구성 레지스터에서 인터럽트를 발생시키는 조건을 지정해야 합니다. 네 가지 가능한 조건이 있습니다 : 인터럽트의 이름을 정의하고 인터럽트 벡터 테이블 (IVT)에 매핑하는 파일의 이름과 같이 내가 남긴 몇 가지 세부 사항이 있습니다. 이 중 어느 것에 대해 질문이 있으시면 아래에 의견을 말하십시오! • 비트 7 – INT1: 외부 인터럽트 요청 1 INT1 비트가 설정되면(1) 상태 레지스터(SREG)의 I 비트가 설정되면 외부 핀 인터럽트가 활성화됩니다. MCU 일반 제어 레지스터(MCUCR)의 인터럽트 감지 제어1 비트 1/0(ISC11 및 ISC10)은 INT1 핀 또는 레벨 감지의 상승 및/또는 하강 엣지에서 외부 인터럽트가 활성화되는지 여부를 정의합니다. 핀에서 활동하면 INT1이 출력으로 구성된 경우에도 인터럽트 요청이 발생합니다.

외부 인터럽트 요청 1의 해당 인터럽트는 INT1인터트 벡터에서 실행됩니다.INT1 또는 INT2를 사용하려면 GCIR.• 비트 6 – INT0: 외부 인터럽트 요청 0 EnableAnd • 비트 5 – INT2 외부 인터럽트 요청 2 활성화. 이제 ISR() 함수를 살펴보면 avr-gcc 컴파일러에 포함된 템플릿입니다. 기본 자습서에서 본 모든 인터럽트를 이 함수에 대한 입력으로 구성할 수 있습니다. 라이브러리는 컨텍스트를 저장하고 ISR이 완료되면 기본 코드로 다시 전환하는 데 주의를 기울입니다. 이것은 C에서 마이크로 컨트롤러를 프로그래밍에 대한 멋진 일이다. 아래 표시된 GICR 레지스터는 INT0 및 INT1 인터럽트를 활성화하는 데 사용됩니다. 이러한 인터럽트는 각각 두 개의 물리적 핀 PD3 및 PD4에 해당합니다. INT0은 낮은 레벨 트리거링과 INT1을 각각 하강 엣지가 인터럽트를 트리거하도록 구성됩니다.