'마이크로프로세서 인터럽트'에 해당되는 글 1건

  1. 2014.08.20 ATmega 128 AVR 인터럽트(interrupt)
생활, 정보2014. 8. 20. 22:32

ATmega128 마이크로콘트롤러 인터럽트(interrupt)

Interrupt 란 사전적으로 (말, 행동)을 방해하다. 무언가를 잠깐 중단하다.라는 뜻이 있습니다.

마이크로콘트롤러의 interrupt라는 것은 실행중인 프로그램을 잠시 중단하고 다른 프로그램이 우선권을

가지고 개입하여  이개입한 프로그램이 종료되면 먼저 실행중이던 잠시 중단한 프로그램을 계속해서

실행하는 것을 말합니다. 일명 가로채기라고도 할수 있겠지요

인터럽트는 주변장치의 서비스 요청에 CPU가 가장 빠르게 대응할수 있는 방법으로 인터럽트는

서로 비동기적으로 동작하는  CPU와 주변장치사이에서 효율적으로 일을 수행하는 중요한 부분

입니다. 인터럽트가 발행하면 서브로틴처럼 나중에 되돌아 올 복귀주소가 자동적으로 스택

(Stack)에 저장되었다가 인터럽트 서비스 루틴의 마지막  복귀 명령을 만나면 인터럽트 발생 전

위치로 되돌아 가게 됩니다.

터럽트(interrupt)의 처리 과정

 => CPU는 모든 명령 사이클에 한번씩 지정된 순간에 인터럽트를 샘플링하여 주변장치 인터럽트

     요청을 검출합니다.

=> CPU가 인터럽트를 허용할 수 있는 조건이 만족되었는지를 판단하고 우선순위를 결정하여 인터

     럽트를 허용하여 줍니다.

=> CPU가 인터럽트를 요청한 주변장치에 대응하는 인터럽트 서비스 루틴의 시작 번지를 확인합니다.

=> CPU가 나중에 인터럽트 서비스 루틴을 종료하고 되돌아 올수 있도로고 복귀주소를 스택에 저장

=> CPU가 해당 인터럽트 서비스 루틴으로 점프하여 프로그램을 실행합니다.

=> CPU가 인터럽트 서비스 루틴의 실행중에 리턴 명령을 만나면 스택에서 복귀주소를 찾아 프로그램

    카운터에 로드함으로써 원래의 위치로 되돌아 오게 됩니다.

인터럽트(interrupt)의 형태

● 벡터(Vector)형 인터럽트

  => 인터럽트가 발생할 때마다 인터럽트를 요청한 장치가 인터럽트 서비스 루틴의 시작번지

       (Input Vector)를 CPU에게 전송하거나 CPU가 각 인터럽트이 종류에 따라 미리 지정된 메모리

       번지에서 인터럽트 벡터를 읽어 이를 인터럽트 서비스 루틴의 시작번지로 사용하는 방식입니

      다. 이 방식에서는 주변장치가 CPU에게 인터럽트 요청 신호를 보내는 방법이나 또는 인터럽

      트 제어기에서 이신호를 처리하는 방법에 의해 우선순위가 결정되게 됩니다.

● 조사(Polling)형 인터럽트

   => 인터럽트가 발생하면 이 인터럽트를 요청한 장치를 찾아내기 위해 CPU가 각 주변장치를 소프

     트웨어 적으로 차례로 조사(Polling)하는 방식입니다. 이때 각 장치는 상태 레지스터(status regi

     ster)의 특정한 비트에 인터럽트 요청 사실을 표시하여 놓음으로서 자신이 인터럽트 요청하였음

    을 CPU가 알수 있도록 하게 됩니다. 따라서 이방식에서는 조사 순서에 의해 소프트웨어적으로

    인터럽트 우선순위가 결정이 됩니다.

[인터럽트의 우선순위 제어]

인터럽트는 CPU가 의지가 아니라 주변장치의 필요에 의해, CPU와 비동기적으로 또한 부정기적으로

발생되는 것이 일반적이므로 우연히 2개 이상의 주변장치가 동시에 CPU에 인터럽트를 요청하는

경우에는 CPU는 한꺼번에 이들의 인터럽트를 처리할수 없으므로, 한번에 한개만의 인터럽트를 선택

처리하게 되는데요 이를 인터럽트 우선순위 (interrupt priorrity) 제어라고 합니다.

Posted by it is