본문 바로가기

하드웨어, 펌웨어/AVR

[Atmega128] 외부 인터럽트

인터럽트란?

 

인터럽트란, 어떠한 일을 일시적으로 중단하는 것을 의미합니다.

즉, 프로그램 상에서는

"프로그램을 실행 중 어떠한 조건이나 신호가 들어오면 프로그램을 일시정지하고 특정 코드를 수행한다"

라고 이해할 수 있습니다.

그러한 특정 코드들이 저장되는 곳을 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 신호가 들어오게 됩니다!