티스토리 뷰
인터럽트 우선순위
인터럽트 우선순위는 동시에 2개 이상의 인터럽트가 발생하는 경우에 어느 것부터 인정해주느냐의 문제입니다. 일반적으로 하드웨어 방법과 소프트웨어 방법이 있습니다. 하드웨어 방법에서는 daisy-chain이라는 회로를 써서 상위의 인터럽트 소스로부터 인터럽트 요청이 없는 경우에 한해서 하위의 인터럽트가 허용되도록 되어 있습니다. 이에 반하여 소프트웨어 방법에서는 polling이라는 기법으로 어느 인터럽트 플래그가 세트되어 있는지를 차례로 조사하는데, 이 때 먼저 조사하는 것의 우선순위가 더 높습니다. Z80은 전자의 방법에 의하고 PIC는 후자의 방법에 의합니다. AVR에 있어서는 daisy-chain도 아니고 polling도 아니고, 우선순위가 하드웨어적으로 미리 지정되어 있습니다. AVR에 있어서는 벡터번호(Vector no.)가 미리 하드웨어적으로 지정되어 있는데, 그것이 낮을수록 우선순위가 높습니다. 그러므로 RESET이 가장 높고 그 다음이 INTO 외부 인터럽트0이고, SPM READY 인터럽트가 가장 낮습니다. 인터럽트 잠복기간에는 모든 AVR 인터럽트에 있어서 인터럽트가 요청되고 그것이 발생되기까지는 소위 인터럽트 잠복기간(latency) 또는 응답시간(response time)이라고 해서 최소한 4개의 클록사이클이 필요합니다. 이 기간 중에 프로그램카운터는 스택에 푸쉬되고, SREG의 I 비트는 클리어되며, 스택포인터는 2만큼 감소됩니다. 그리고 최소한 4 클록의 잠복기간 이후에 실제 인터럽트를 처리하는 루틴에 뛰어갑니다. 이것을 인터럽트 루틴에 벡터한다고 합니다. 벡터는 보통 인터럽트 루틴에 상대 점프하고, 2 클록 사이클을 요합니다. 만약 인터럽트가 2 사이클 이상의 명령(multi-cycle instruction)을 수행하는 중에 요청되면 이 명령을 수행한 후 인터럽트가 서비스되므로 그만큼 더 잠복기간은 길어집니다. 인터럽트 루틴으로부터의 복귀도 4 클록사이클이 걸립니다. 이 기간동안 프로그램 카운터 는 스택에서 꼽되고, 스택포인터는 2만큼 증가되며, SREG의 I 비트는 세트됩니다. AVR이 인터럽트로부터 벗어나면 반드시 메인 루틴에 복귀하고, 또 다른 인터럽트가 대기중인 경우에는 이를 수행하기 전에 하나의 메인루틴 명령을 수행합니다.
'정보통신 및 로봇제어시스템' 카테고리의 다른 글
USART의 개요 (0) | 2021.07.18 |
---|---|
외부 인터럽트 (0) | 2021.07.16 |
인터럽트 발생 조건 (0) | 2021.07.09 |
인터럽트 소스 (0) | 2021.07.07 |
I/O포트의 기능 (0) | 2021.07.05 |