본문 바로가기
EmbeddedSystem/AVR

[AVR] Timer Mode : "normal" vs "CTC" vs "PWM"

by TSpoons 2024. 11. 7.

 

Modes of Operation(atmega1281)

 

Normal vs CTC vs PWM

normal mode

  • overflow가 발생할 때마다 timer 값을 지정해주어야 한다.=> 비효율적임
  • RAM 사용을 최소화해야 하는 경우 (별도의 비교 레지스터 불필요)

CTC mode (Clear Time on Compare match)

  • compare register의 값과 같은지 비교기(하드웨어적으로)
  • compare interrupt flag 자동으로 set
  • 정확한 주기의 인터럽트 생성

PWM

  • normal + CTC 
  • compare match, overflow 모두 사용
  • 아날로그같은 출력(모터 속도 제어, LED 밝기 제어)이 필요할 때

 

 

Q. 원하는 주기의 구형파 신호를 출력하려면??  

1. normal mode : overflow 발생 후 ISR에서 timer의 값을 넣어주고, toggle 시켜준다.

- 구형파의 주기 : overflow 발생 주기 (0xffff - 0xb000 +1)* 2

2. CTC mode : OCnA, OCnB, OCnC 

- 주기(OCnA) : Timer 주파수 / 2* (compare match 값 +1 )

 

3.  PWM : Fast PWM, Phase Correct PWM 

(1) Fast PWM

COMnA1 = 1로 설정하면 다음과 같다.

- OCRnX에 도달(compare match)하면 clear 후 , Top값일 때 다시 set 

 

(2) Phase Correct PWM

마찬 가지로 COMnA1 = 1로 설정하여 compare match가 발생할 때, LOW로 떨어트리고, non-inverting 모드여서

OCRnX값이 증가할수록 구형파가 High로 유지되는 비율이 커진다. (Duty Cycle이 커진다.) 

 

 

 

Fast PWM vs Phase Correct PWM

1. Fast PWM의 주파수가 2배 빠르다

2. duty cycle을 임의로 변경해야 할 때, 

Phase Correct PWM이 대칭적인 파형이여서 더 부드러운 제어가 가능하고

특히 모터 제어, 오디오 앰프 같이 정밀한 제어가 필요한 응용에서 유리하다.

 

 

 

  • 빠른 스위칭이 중요한 경우: Fast PWM 사용
  • 정밀한 제어와 phase 일관성이 중요한 경우: Phase Correct PWM 사용

 

'EmbeddedSystem > AVR' 카테고리의 다른 글

[AVR] 타이머/카운터와 Prescaler(분주비)  (1) 2024.12.27
[AVR] Timer / Counter  (0) 2024.11.05
[AVR] Microchip studio Tutorial  (1) 2024.10.24
[AVR] External Interrupts 2  (1) 2024.10.15
[AVR] External Interrupt  (1) 2024.10.14