+ 한국항공대학교 최차봉 교수님의 임베디드 SW 과목 내용을 정리한 글입니다.
Polling vs Interrupt
Polling
이전 실습에서 사용된 방식으로 지정한 구간에서만 이벤트가 발생했는지 체크하는 방식이다.
(메인 프로그램 안에서만 체크한다.)
=> 즉 항상 체크할 수 없으므로, 이벤트가 발생했더라도 확률에 따라 놓칠 수 있다.
+ 이전 실습에서 잘 작동하지 않았던 이유: Polling방식의 코드 + 스위치 바운싱
Interrupt
Polling과 달리 언제나 이벤트가 발생했는지 체크한다.
ex) OS에서의 마우스 움직임
Interrupt Setting
attachInterrupt(digitalPinToInterrupt(GPIO), function, mode);
- attachinterrupt : 인터럽트를 설정하는 함수이다. setup 함수에 호출해야한다.
- digitalPinToInterrupt :포트 번호를 인자번호로 받아서 인터럽트 번호를 반환(변환)해주는 함수이다.
(아두이노 UNO에서는 포트 번호 2번과 3번만 인터럽트 포트로 사용이 가능하다.)
- function : 인터럽트 이벤트가 발생했을 때 실행되는 함수이다.
- mode : 언제 인터럽트가 발생했다고 할지를 설정하는 값이다.
< mode 종류 >
- LOW : 해당 핀 값이 LOW일 때 인터럽트 발생
- HIGH : 해당 핀 값이 HIGH일 때 인터럽트 발생
- RISING : 해당 핀 값이 LOW에서 HIGH로 변경 될 때 인터럽트 발생
- FALLING : 해당 핀 값이 HIGH에서 LOW로 변경 될 때 인터럽트 발생
- CHANGE : 해당 핀 값이 변경 될 때 인터럽트 발생
=> LOW, HIGH는 어떠한 상태일 때, RISING, FALLING, CHANGE는 변화가 발생할 시 인터럽트가 발생한다.
+ 인터럽트 포트의 모드는 기본적으로 INPUT모드 이다.
+ 인터럽트에 사용되는 변수는 volatile byte state로 선언하는 것이 좋다.
=> 컴파일러가 임의로 변수값을 변경하는 것을 막는다.
volatile byte state = LOW
'Computer Science > Embedded Software' 카테고리의 다른 글
[Embedded Software] PWM 실습 (1) | 2023.10.05 |
---|---|
[Embedded Software] Interrupt 실습 (0) | 2023.09.27 |
[Embedded Software] Embedded System 개발 실습 (0) | 2023.09.21 |
[Embedded Software] Embedded System 개발 (example) (1) | 2023.09.19 |
[Embedded Software] Shell Script 실습 (0) | 2023.09.15 |