3. Page 3
Interrupt
Interrupt
1. ~(sb/sth) (with sth) (말, 행동을) 방해하다[중단시키다/가로막다]
Interrupt ?
- 실행중인 프로그램을 일시 중단하고 다른 프로그램을 끼워 넣어 실행시키는 것
Polling ?
- 특정 주기를 가지고 그 주기 마다 처리를 위한 시그널이 들어 왔는지 확인 하는 것
4. Page 4
External Interrupt
External Interrupt in Atmega128
- The External Interrupts는 INT7:0 pin에 의해 trigger 된다.
- Interrupt를 enable 시키면 해당 pin이 output으로 정의 되더라도 interrupt가 trigger 된다.
- External interrupt는 low level / falling edge / rising edge에 의해 trigger 된다.
- EICRA / EICRB / EIMSK / EIFR
Interrupt 발생 요건
- Global Interrupt Enable
- Each Interrupt Enable
- Interrupt occur
5. Page 5
External Interrupt
1.EICRA – External Interrupt Control Register A
- INT0 ~ INT3 External interrupt에 대해서 어떠한 신호를 Sensing할지 선택
6. Page 6
External Interrupt
2. EICRB – External Interrupt Control Register B
- INT4 ~ INT7 External interrupt에 대해서 어떠한 신호를 Sensing할지 선택
7. Page 7
Exteranl Interrupt
3. EIMSK – External Interrupt Mask Register
- Global interrupt가 enable되어 있고
- EIMSK의 bit가 set 되면 (사용할 곳에 1로 지정해주면)
- 해당 external interrupt가 enable 된다.
4. EIFR – External Interrupt Flag Register
- Global interrupt enable / External interrupt enable 상태에서
- interrupt occur (발생)이면
- EIFR의 해당 bit가 set(1)된다.
8. Page 8
External Interrupt
Global interrupt
- sei() : Global interrupt enable
- cli() : Global interrupt disable
Interrupt Service Routine
- 인터럽트 이벤트 처리를 위한 코드의 일부 또는 함수
10. Page 10
External Interrupt_실습2
1. 실습 2-1
-LED가 LED1부터 LED8 방향으로 1초 간격으로 켜진다.
-Interrupt스위치1을 누르면 LED1부터 LED8방향으로 켜진다.
-Interrupt스위치2를 누르면 LED8부터 LED1방향으로 켜진다.
-끝에 도달하면 (LED1 or LED8) 다른 쪽 끝으로 간다(LED8 or LED1).
2. 실습 2-2
-LED가 LED1부터 LED8 방향으로 1초 간격으로 켜진다.
-스위치1을 누르면 LED1부터 LED8방향으로 켜진다.
-스위치2를 누르면 LED8부터 LED1방향으로 켜진다.
-끝에 도달하면 (LED1 or LED8) 다른 쪽 끝으로 간다(LED8 or LED1).
13. Page 13
External Interrupt_실습3
1. 실습 3-1
-Interrupt스위치1을 누르고 있는 동안 LED전체가 켜진 상태로 유지.
-Interrupt스위치1를 떼면, LED전체가 꺼진 상태로 유지.
2. 실습 3-2
-LED가 LED1부터 LED8 방향으로 0.5초 간격으로 켜진다.
-끝에 도달하면 (LED1 or LED8) 다른 쪽 끝으로 간다(LED8 or LED1).
-LED는 계속 진행한다.
-Interrupt스위치1을 누를 때, USART통신으로 화면에 O(대문자 o)출력.
-Interrupt스위치2를 눌렀다 땔때, USART통신으로 화면에 X(대문자 x)출력.