아트메가/이론

아트메가128 타이머/카운터0 Phase Correct PWM모드 알아보기

원원 2017. 9. 30. 15:37

안녕하세요 오늘은 Phase Correct PWM (위상 교정 PWM) 모드에 대해 알아보겠습니다.

이 모드는 TCNT0이 0x00에서 0xff까지 증가하였다가 다시 0xff에서 0x00으로 감소하는 동작을 반복합니다.

이때 TCNT0이 OCR0과 같아지면 OC0의 파형이 변합니다.

Phase Correct PWM모드는 잘 사용하지 않는 모드이므로 CTC모드와 FAST PWM모드를 안다는 전재하에  글을 작성합니다.





TCCR0레지스터중 3,6번비트


COM01 COM00이 10일때 내려갈때 1 올라갈때 0 인것을 확인할 수 있습니다.


TCCR0의 4,5번비트





1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
#include <stdlib.h>
#include <stdio.h>
#define F_CPU 16000000UL
 
SIGNAL(SIG_OUTPUT_COMPARE0)  
{  
 
}
  
int main(void)
{
   TCCR0= 0x61;
   OCR0 = 17;
   SREG=0x80
   TIMSK = 0x02;
   DDRB=0xff;
 
    while(1)
    { 
  
    }
}
cs

COM01 COM00은 1 0 을 사용했으므로 내려갈때1 올라갈때0입니다.

이런 파형이 예상됩니다.



위의 코드의 실제  OC0출력 파형입니다.