BASIC4MCU | AVR | 외부인터럽트 | 외부 인터럽트 간단 설명
페이지 정보
작성자 키트 작성일2017-08-29 09:14 조회5,576회 댓글0건본문
128은
포트D 하위 4비트가 INT0~3
포트E 상위 4비트가 INT4~7
입력이므로 DDRx는 입력으로 설정 되어야 합니다.
리셋 후 디폴트 입력이므로 따로 설정 하지 않아도 됩니다.
외부에 풀업 저항을 사용 하지 않는다면 내부 풀업저항(30k정도)이라도 사용 해야 합니다.
PORTD=0x0F;
PORTE=0xF0;
//---------
#include <avr/interrupt.h>
코드비젼은 인터럽트를 위한 별도의 헤더파일 선언이 필요 없지만AVRStudio는 위 헤더파일을 선언 해줘야 합니다.
//---------
ISR(INT0_vect){}
ISR(INT1_vect){}
ISR(INT2_vect){}
ISR(INT3_vect){}
ISR(INT4_vect){}
ISR(INT5_vect){}
ISR(INT6_vect){}
ISR(INT7_vect){}AVRStudio용 인터럽트 함수입니다.
8개 모두 함수를 만들어 놓고 쓰지 않아도 됩니다.
외부 인터럽트 사용 하지 않아도 상관 없습니다.
interrupt [EXT_INT0] void ext_int0_isr(void){}
interrupt [EXT_INT1] void ext_int1_isr(void){}
코드비젼용 인터럽트 함수입니다.0과1만 적었지만 숫자만 바꾸면 되므로 생략 했습니다.
//---------
EICRA=0xAA; EICRB=0xAA; // 폴링에지
EICRA=0xFF; EICRB=0xFF; // 라이징에지
EICRA=0x00; EICRB=0x00; // 로우레벨 (리셋 디폴트값)
인터럽트 1개에 두개의 비트씩이므로 EICRA,EICRB 두개의 레지스터가 필요 합니다.
인터럽트 1개만 사용 하더라도 모두 설정 해도 됩니다.
AVRStudio와 코드비젼 동일한 설정입니다.
//---------
EIFR=0xFF;
인터럽트를 허가 하기전에 인터럽트 플래그를 크리어 시켜줍니다.
외부인터럽트 1개만 사용 하더라도 8개의 인터럽트 플래그를 크리어 시켜도 됩니다.
//---------
EIMSK=0x03;
제일 중요한 설정입니다.
개별 외부 인터럽트 허가 설정용 레지스터입니다.
사용할 인터럽트에 해당하는 비트만 1로 설정 해서 이네이블 시킵니다.
//---------
#asm("sei")
sei();
전체 인터럽트 이네이블입니다.
위가 코드비젼용 아래가 AVRStudio용
SREG=0x80;
이렇게 설정 해도 됩니다.
댓글 0
조회수 5,576등록된 댓글이 없습니다.