인터럽트란?
인터럽트란, 어떠한 일을 일시적으로 중단하는 것을 의미합니다.
즉, 프로그램 상에서는
"프로그램을 실행 중 어떠한 조건이나 신호가 들어오면 프로그램을 일시정지하고 특정 코드를 수행한다"
라고 이해할 수 있습니다.
그러한 특정 코드들이 저장되는 곳을 ISR 루틴이라고 합니다.
외부 인터럽트란?
위에 사진이 Atmega128에 있는 외부 인터럽트 소스들의 정보에요.
Atmega128에는 8개의 INT 핀이 있는데요,
이 핀에 입력된 신호에 따라서 인터럽트가 발생하는 것을 외부 인터럽트라고 해요!
외부 인터럽트가 발생하는 시점
외부 인터럽트는 세 가지 경우에서 발생할 수 있어요.
1. rising edge
전기 신호가 LOW에서 HIGH로 올라갈 때,
이 시점을 rising edge라고 해요.
즉, LOW에서 HIGH로 바뀌는 시점에 인터럽트가 발생하여
ISR 루틴으로 들어가서 코드를 수행한다고 할 수 있어요.
2. falling edge
rising edge와는 반대로
전기 신호가 HIGH에서 LOW로 내려갈 때,
이 시점을 falling edge라고 해요.
마찬가지로 HIGH에서 LOW로 바뀌는 시점에
인터럽트가 발생하여 ISR 루틴을 수행합니다.
3. LOW level
LOW level은 말 그대로 전기 신호가 LOW를 유지하고 있을 때 인터럽트가 발생해요.
스위치?
외부 인터럽트가 발생하는 시점은 스위치와 함께 생각하면 편해요.
회로가 Pull-up 구조일 때에는 스위치를 누르면 LOW, 누르지 않을 때가 HIGH가 되잖아요?
그럼 이 Pull-up 구조에서
스위치를 누르는 순간에는 falling edge 신호가 들어올 수 있고,
스위치를 누르는 동안에는 LOW level 신호가 들어올 수 있고,
스위치를 떼는 순간에는 rising edge 신호가 들어올 수 있어요!
반대로, Pull-down 구조는 스위치를 누를 때가 HIGH, 스위치를 누르지 않을 때가 LOW가 되겠죠.
이러한 Pull-down 구조에서는
스위치를 누르는 순간에는 rising edge 신호가 들어올 수 있고,
스위치를 누르는 동안에는 HIGH level이지만, HIGH level은 인터럽트를 작동시킬 수 없어요.
그리고, 스위치를 떼는 순간에는 falling edge 신호가 들어오게 됩니다!
'하드웨어, 펌웨어 > AVR' 카테고리의 다른 글
[Atmega128] 외부 인터럽트 사용법 (0) | 2019.10.21 |
---|---|
[Atmega128] 외부 인터럽트 제어 레지스터 (0) | 2019.10.17 |
[Atmega128] I/O포트의 입력? (0) | 2019.10.15 |
[Atmega128] 비트 단위의 출력? (0) | 2019.10.14 |
[Atmega128] I/O 포트란 무엇일까? (0) | 2019.10.11 |