반응형

MCU에서 입력을 받아들이는 방법은 대표적으로 폴링(Polling)인터럽트(Interrupt)가 있다.

 

 

 

폴링방식

  polling (투표, 여론조사). 뜻 그대로 계속 입력핀의 상태를 여론조사 하듯이 확인하는 것이다. 반복문(스레드)이 실행될때마다 해당지점에 들려서 계속 상태를 체크함. 그로인해 CPU의 점유율이 높아 반응속도가 느림.

마치 계속 반복문 내에 if문을 넣어 해당 핀을 계속 체크함. 정확한 주기에 맞춰 작동이 불가. 그러나 구현이 쉬움.

 

  (아래와 같은 if문으로 switch 제어하는 것)

https://ansan-survivor.tistory.com/1217

 

[Atmega128] 아트메가 비트연산 Switch 클릭 LED 토글시키기 (스위치로 LED 켰다 껐다)

비트연산으로 LED를 켜는 방법은 아래에 있다. https://ansan-survivor.tistory.com/1207 [Atmega128] 아트메가 비트연산으로 LED한칸씩 옮기기 (아래 직접 제작한 Atmega128 모듈으로 테스트를 진행했다.) https:..

ansan-survivor.tistory.com

 

 

 

인터럽트 방식:

  Interrupt (방해, 중단). 즉 계속 동작을 하다가 인터럽트 신호가오면 모든 행동을 일시적으로, 하드웨어적(물리적)으로 중단하고, 해당 신호를 읽고 임무를 수행한 후 다시 기존의 동작을 진행.

아래와 같이 main( )프로그램이 계속 진행하다가, 갑자기 요청신호가 오면 해당 서비스루틴을 수행하고 다시 기존에 했던 작업으로 복귀.

장점으로는 정확한 타이밍에 빠른 반응속도로 대응할 수 있음. 또한 평소에 체크를 안하다가 신호가 올때만 체크함으로 시스템에게 부하가 적음.

단점으로는 Polling에 비해 구현이 다소 복잡 함. (그렇다고 어려운것은 아님)

 

<인터럽트의 구성요소>

* 인터럽트 소스 (Interrupt Source)

  - 외부입력핀 (스위치같은) , 타이머 , 시리얼포트 (특정 신호를 받을 때)

* 인터럽트 점프 테이블 (Interrupt Jump Table)

  - 인터럽트가 발생 시 어디서 분기했는지 장소를 기록해 놓는 "특정 번지"

* 인터럽트 서비스 루틴 (Interrupt Service Routin)

  - 인터럽트가 발생했을 때 처리할 프로그램

반응형

 

(아래 인터럽트 벡터 테이블에 대해 잘 나와 있다.)

https://ansan-survivor.tistory.com/1221

 

[Atmega 128] 아트메가 128 인터럽트 벡터 표 (interrupt vector table)

아트메가128에 인터럽트 기능을 사용하기 전에 아트메가의 인터럽트 벡터 테이블을 알아야 한다. 인터럽트란? 아래 참고. https://ansan-survivor.tistory.com/1220 MCU의 인터럽트(Interrupt) vs 폴링(Polling)..

ansan-survivor.tistory.com

 

반응형

+ Recent posts