타이머 인터럽트 (TIMER INTERRUPTS)

CODEDRAGON Development/IoT

반응형


 

 

타이머 인터럽트 (TIMER INTERRUPTS)

 

ISR(Interrupt Service Routine) 실행 조건

Pending interrupt ISR(Interrupt Service Routine)을 실행하기 위해서는 아래 조건이 활성화 되어야 합니다.

조건

설명

인터럽트가 활성화 되어있어야 합니다.

인터럽트는 interrupts(), noInterrupts() 함수로 활성화/비활성화 할 수 있습니다.

아두이노의 기본설정은 인터럽트 활성화 상태입니다.

관련된 인터럽트 마스크가 활성화 되어있어야 합니다.

인터럽트 마스크는 interrupt mask register(TIMSKx) 에서 setting/clearing bit 를 설정함으로써 활성화/비활성화 할 수 있습니다.

 

 

인터럽트가 발생

인터럽트가 발생할 때 interrupt flag register(TIFRx) 값이 설정됩니다. 이 값에 따라 ISR(Interrupt Service Routine)이 실행되고, 실행 후 자동으로 해제됩니다. 혹은 수동으로 값을 변경할 수 있습니다.

 

 

여러종류의 타이머 인터럽트

타이머는 여러종류의 타이머 인터럽트를 발생시킬 수 있습니다.

레지스터와 비트 설정 값은 아두이노의 프로세서 데이터 시트에서 확인할 수 있습니다.

 

Atmega328 Datasheet

http://www.atmel.com/Images/Atmel-42735-8-bit-AVR-Microcontroller-ATmega328-328P_Datasheet.pdf

 

Atmega2560 Datasheet

http://www.atmel.com/Images/Atmel-2549-8-bit-AVR-Microcontroller-ATmega640-1280-1281-2560-2561_datasheet.pdf

 

구분

설명

suffix x

타이머 숫자 (0~5)를 의미

suffix y

출력 값 (A, B, C)을 의미

예를들어 TIMSK1 = timer1 interrupt mask register, OCR2A = timer2 output compare register A 입니다.

 

 

 

직접다운로드 

Atmel-2549-8-bit-AVR-Microcontroller-ATmega640-1280-1281-2560-2561_datasheet.pdf

Atmel-42735-8-bit-AVR-Microcontroller-ATmega328-328P_Datasheet.pdf




반응형