갈검갈금 100옴 저항

갈검주금 10k옴 저항

빨빨갈금 220옴 저항

갈녹갈금 150옴 저항

 

74HC14 : inverter = Low를 High로 High를 Low로

 

인터럽트 : 가로채기 interrupt (특정 사건에 의해 프로그램 코드가 비동기적으로 실행가능)

- cpu가 프로그램 실행 중 입출력 하드웨어 등의 장치 또는 예외 상황이 발생해 긴급한 처리가 필요할 때 cpu에게 처리하라고 알리는 기능.

 

하드웨어 인터럽트

입력 I/O핀의 상태에 변화가 있을 때 사용

-> 프로그램 내 끊임없이 특정 버튼 상태 감시하지 않으면서도(polling,폴링) 상태 변화가 발생했을 때 값 변경 유용

 

폴링(polling)은 loop문 내에서 반복적으로 외부 입력을 감시하는 방식

소프트웨어 구현 용이성은 폴링이 간편하며, 하드웨어 구현은 똑같다.

-> 에지 트리거를 사용하려면 하드웨어 디바운싱이 미리 구현되야한다.

 

에지 트리거

High->Low : falling edge

Low->High : rising edge

 

인터럽트 적용 영역

- 멀티 태스킹 : 하드웨어 인터럽트를 사용하는 가장 큰 이유

- 수신 정확도 : 빠른 수신이 필요한 작업에 인터럽트가 절대적

 

아두이노는 인터럽트 사용할 수 있는 I/O핀이 지정되어있다.

 

인터럽트ID는 attachInterrupt()와 함께 사용

하드웨어 인터럽트는 인터럽트 핀을 특정 함수에 붙여 사용해야 동작

-> 마지막으로 인터럽트는 언제 적용할 시점에 대해서는 신호 작동 위치를 인수로 사용

ex) attachInterrupt(BUTTON_INT,swap,RISING);

-> 하드웨어 인터럽트 I/O인 BUTTON_INT 상태가 RISING EDGE로 변할 때 swap()호출

 

스위치 바운싱 효과로 노이즈 발생 -> 인터럽트 2번 발생 가능 (디바운싱 처리 하기)

=> RC회로로 처리 resistor condenser회로 (곡선화된 신호 만듦 : 상태가 천천히 바뀜)

- 하드웨어 디바운싱 처리 : 반전(inverting)슈미트 트리거 74HC14를 사용

-> 특정 임계치 초과하면 급변하는 에지를 생성함.

-> 슈미트 트리거를 사용하여 부드럽게 떨어지는 에지를 날카롭게 만들어 줌

 

콘덴서 회색 줄부분 음극(-)

 

volatile 변수

- 인터럽트 내에서 값이 변경되는 변수는 반드시 volatile 형식으로 선언

ex) volatile int selectedLED=9;

 

attachInterrupt() 함수

- 아두이노 프로그램 내에서 인터럽트 사용하려면 setup()함수에서 attachInterrupt()함수로 인터럽트 초기화

ex) attachInterrupt(0,swap,RISING);

- 0 : 인터럽트 0번(Uno 기준 2번 핀)

- swap : 인터럽트 호출 시 실행될 함수 이름

- RISING/FALLING : 인터럽트 언제 호출할 지 에지 시점 설정

 

아두이노 내장 타이머 3개

- millis()함수, delay()함수, analogWrite()함수로 PWM 출력을 위해 모든 내장 타이머 사용중

 

타이머 인터럽트

- 아두이노 내장 타이머는 아두이노 구동하는 수정 발진자의 클록 사이클마다 0부터 숫자를 센다.

- TimerOne은 16비트 타이머로 0~2^16-1까지 숫자를 셀 수 있다.

- 숫자가 최대가 되면 다시 0으로 초기화되며, 다시 숫제를 센ㄷ.

- 숫자가 최대값에 도달하는 시간은 클록 디바이더에 따라 다르다.

-> 클록 디바이더 사용 안하면 아두이노 클록 속도는 초당 16MHz(2^24)이기에 1초 동안 타이머가 여러 번 초기화됨

 

TimerOne 소프트웨어 타이머

- 9,10 I/O 핀 사용

 

<TimerOne.h>

Timer1.initialize(1000000); // 타이머를 1초로 설정

Timer1.attachInterrupt(blinky); // 타이머 인터럽트 발생 시 blinky()호출 

'학교수업' 카테고리의 다른 글

정보보호개론 14주차  (0) 2021.12.10
가상현실프로그래밍 14주차  (0) 2021.12.09
<시험정리> 웹 개발 기초 기말고사  (0) 2021.12.07
웹개발기초 14주차  (0) 2021.12.04
정보보호개론 13주차  (0) 2021.12.04

+ Recent posts