ATMEGA -간단한 실험-

ATMEGA 128A 인터럽트

창창호 2023. 4. 21. 19:42

외부인터럽트

PPT 참고 ( 0일때 X 1일때 O, HIGH LOW 이런거만 보면 됨)

  • SREG - 7비트 1로 만들기
  • EIMSK - EICRA or EICRAB 중 ON 된 것 중 1이 들어간것만 생각
  • EICRA - INT(숫자)만큼 묶어서 적기
  • EICRAB - INT(숫자)만큼 묶어서 적기

예시

volatile int state = 0;   // 현재 LED의 상태

ISR(INT0_vect)   # 인터럽트
{
    state = (state + 1)%2;  // LED 상태 전환
}

void INIT_PORT(void)
{
    DDRC = 0x01;                     
    PORTC = 0x00;
    DDRD = 0x00;
}

void INIT_INT0(void)
{
    EIMSK |= (1 << INT0);
    EICRA |= (1<<ISC01);
    sei();
}

int main(void)
{
    INIT_PORT();
    INIT_INT0();

    while(1)
    {
        if(state == 1)
        {
            PORTC = 0x01;
        }
        else
        {
        PORTC = 0x00;
        }
    }
    return 0;
}