타이머 카운터 예제

타이머 카운터 예제

인터럽트는 일반적으로 기능 인터럽트()/noInterrupts()를 사용/비활성화할 수 있습니다. 기본적으로 Arduino 펌웨어 인터럽트에서 활성화되어 있습니다. 인터럽트 마스크는 인터럽트 마스크 레지스터(TIMSKx)에서 비트를 설정/지우면 활성화/비활성화됩니다. 인터럽트가 발생하면 인터럽트 플래그 레지스터(TIFRx)의 플래그가 설정됩니다. 이 인터럽트는 ISR을 입력하거나 인터럽트 플래그 레지스터의 비트를 수동으로 지울 때 자동으로 지워집니다. Arduino 함수는 인터럽트() 및 detachInterrupt()를 외부 인터럽트 핀에만 사용할 수 있습니다. 여기서는 설명하지 않는 다른 인터럽트 소스입니다. 타이머 인터럽트A 타이머는 인터럽트의 다른 유형을 생성 할 수 있습니다. 레지스터 및 비트 정의는 프로세서 데이터 시트(Atmega328 또는 Atmega2560) 및 I/O 정의 헤더 파일(아두이노의 경우 iomx8.h, 하드웨어/도구/아브/포함/avr 폴더의 아두이노 메가의 iomx0_1.h)에서 찾을 수 있습니다. 접미사 x는 타이머 번호(0..5)를 의미하며, 접미사 y는 출력 번호(A, B, C)를 의미하며, 예를 들어 TIMSK1(타이머1 인터럽트 마스크 레지스터) 또는 OCR2A(타이머2 출력 비교 레지스터 A)를 의미합니다. 타이머 오버플로:타이머 오버플로는 타이머가 한계 값에 도달했다는 것을 의미합니다.

타이머 오버플로 인터럽트가 발생하면 타이머 오버플로 비트 TOVx가 인터럽트 플래그 레지스터 TIFRx에 설정됩니다. 인터럽트 마스크 레지스터 TIMSKx에서 타이머 오버플로 인터럽트 활성화 비트 TOIEx가 설정되면 타이머 오버플로 인터럽트 서비스 루틴 ISR(TIMERx_OVF_vect)이 호출됩니다. 출력 비교 일치:출력 비교 일치 인터럽트가 발생하면 OCFxy 플래그는 인터럽트 플래그 레지스터 TIFRx에 설정됩니다. 출력 비교 인터럽트 인에이블 비트 OCIExy 인터럽트 마스크 레지스터 TIMSKx가 설정되면, 출력 비교 매치 인터럽트 서비스 ISR(TIMERx_COMPy_vect) 루틴이 호출됩니다. 타이머 입력 캡처:타이머 입력 캡처 인터럽트가 발생하면 입력 캡처 플래그 비트 ICFx가 인터럽트 플래그 레지스터 TIFRx에 설정됩니다. 인터럽트 마스크 레지스터 TIMSKx에서 입력 캡처 인터럽트 비트 ICIEx를 활성화하면 타이머 입력 캡처 인터럽트 서비스 루틴 ISR(TIMERx_CAPT_vect)이 호출됩니다.

0

You may also like