AVR > 외부 인터럽트 간단 설명

TODAY6,175 TOTAL4,692,250
사이트 이용안내
Login▼/회원가입
최신글보기 질문게시판 기술자료 동영상강좌

아두이노 센서 ATMEGA128 PWM LED 초음파 AVR 블루투스 LCD UART 모터 적외선


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

등록된 댓글이 없습니다.

AVRHOME > AVR > 외부인터럽트 목록

게시물 검색

2022년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
2021년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
2020년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
2019년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
2018년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
Privacy Policy
MCU BASIC ⓒ 2020
모바일버전으로보기