본문 바로가기
Embedded System/AVR

[AVR] 타이머 오버플로우 인터럽트

by goatlab 2022. 6. 10.
728x90
반응형
SMALL

타이머 오버플로우 인터럽트

 

ATmega128에는 일정 시간마다 횟수 (TCNTn)를 세는 타이머가 있다. 이 횟수가 최대값에서 최소값으로 초기화될 때 인터럽트를 발생시키면, 특정한 시간 간격으로 인터럽트 서비스 루틴을 실행할 수 있다. 타이머 오버플로우 인터럽트 (Timer overflow interrupt)라고 하는 이 인터럽트는 딜레이함수를 대신할 수 있다.

 

타이머의 구조와 동작

 

 

8비트 타이머의 카운터 부분으로 구성되었다. MCU의 메인 클락이나 TOSC1 핀으로 입력 받은 신호를 분주한 것이 타이머의 클락 신호가 된다. 분주비는 1, 8, 32, 64, 128, 256, 1024 중 하나의 값으로 정할 수 있다. TCNTn은 카운트 횟수를 저장하는 레지스터이다. Control Logic은 매 타이머 클락마다 TCNTn 값을 1씩 올리거나 내릴 수 있다. TCNTn의 범위는 BOTTOM과 TOP 사이로 정해져 있다.

 

 

TCNTn이 최대값에 도달했을 때 클락 신호가 한번 더 공급되면, TCNTn은 BOTTOM 값으로 초기화되고 TOVn으로 인터럽트 신호를 보낸다. 타이머 0은 8비트 타이머여서 TCNT0이 8비트이므로, TCNT0의 최대값은 255이다.

 

타이머 레지스터

 

 Bit 7 6 5 4 3 2 1 0
  FOC0 WGM01 COM01 COM00 WGM00 CS02 CS01 CS00
 Access W R/W R/W R/W R/W R/W R/W R/W
 Reset 0 0 0 0 0 0 0 0

 

https://usermanual.wiki/Document/atmelatmega128manual.420283430/html

 

ATmega128/L Datasheet Atmel Atmega128 Manual

User Manual:

usermanual.wiki

 

728x90
반응형
LIST

'Embedded System > AVR' 카테고리의 다른 글

[AVR] 부저 (Buzzer)  (0) 2022.06.14
[AVR] FND (Flexible Numeric Device)  (0) 2022.06.14
[AVR] 인터럽트 (Interrupt) (3)  (0) 2022.06.09
[AVR] 인터럽트 (Interrupt) (2)  (0) 2022.06.09
[AVR] 인터럽트 (Interrupt) (1)  (0) 2022.06.09