반응형


용어 정의

BOTTOM - 카운터가 0이 되었을 때를 의미.


MAX – 카운터가 0xFF(=255)에 도달했을 때를 의미


TOP 

TOP값은 0xFF(MAX) 또는 OCR0 레지스터에 저장된 값으로 지정할 수 있다.

카운터가 TOP값과 똑같거나 더 커진 경우를 의미한다.



Fast PWM 모드

fast Pulse Width Modulation(fast PWM) 모드는 TCCR0 레지스터의 WGM01과 WGM00비트가 1로 설정된 경우이다.



카운터값(TCNT0)는 BOTTOM으로부터 MAX까지 값이 증가하고 MAX에 도달하면 다시 BOTTOM부터 증가를 시작한다.


non-inverting Compare Output 모드에서는 TCNT0와 OCR0가 일치하는 경우 output compare (OC0)가 0으로 클리어되고 TCNT0가 BOTTOM인 경우 1로 설정된다.


inverting Compare Output 모드에서는 TCNT0와 OCR0가 일치하는 경우 output compare (OC0)가 1로 설정되고 TCNT0가 BOTTOM인 경우 0으로 클리어 된다. 

fast PWM 모드에서 카운터값(TCNT0)가 MAX값과 일치할 때까지 카운터는 증가한다. MAX값에 도달하면 TCNT0는 0으로 클리어된다.



TCNT0 대각선상의 작은 수평선은 OCR0와 TCNT0가 일치하는 경우를 의미한다.

카운터가 MAX에 도달할때마다 타이머/카운터 오버플로우 플래그(TOV0)는 1로 설정된다. 인터럽트가 활성화 되어있다면 오버플로우 인터럽트 핸들러 루틴을 OCR0값을 업데이트하는 용도로 사용할 수 있다. 


TCCR0 레지스터의 COM01과 COM00을 설정하여 Invert mode인지 non-invert mode인지  결정한다.


포트 핀의 데이터 방향이 출력일 경우에만 OC0의 값이 실제로 출력된다.


inverting mode에서는 OCR0와 TCNT0 사이의 값이 일치하는 경우 OC0 레지스터는 1로 설정됨으로써 PWM 파형이 출력되고 TCNT값이 MAX에서 BOTTOM으로 변하는 경우에 OC0 레지스터는 0으로 클리어되어 파형 출력이 중단된다.



아래 처럼 회로를 구성하고 



아래 코드를 동작시키면.. LED가 천천히 켜졌다가 천천히 꺼지는 것을 볼 수 있다.

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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
/*
 * 8bit_timer_example3.c
 *
 * Created: 2016-06-18 
 * Author : webnautes
 */ 
 
#include <avr/io.h>
 
 
#define F_CPU 16000000UL
 
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
 
 
 
int main(void)
{
    DDRB |= (1<<DDB4); //LED용
 
    //프리스케일러로 64를 선택
    TCCR0 |= (1<<CS02);
 
    //FAST PWM 모드
    TCCR0 |= (1<<WGM01);
    TCCR0 |= (1<<WGM00);
 
    //non-inverted mode
    TCCR0 |= (1<<COM01);
 
    //카운터 초기화
    TCNT0 = 0;
 
 
    /* Replace with your application code */
    while (1)
    {
        int i;
 
        for( i=0; i<255; i++)
        {
            OCR0 = i;
            _delay_ms(10);
        }
 
        for( i=255; i>=0; i--)
        {
            OCR0 = i;
            _delay_ms(10);
        }
 
    }
}
 
 
 
 
 
 
cs



반응형

문제 발생시 지나치지 마시고 댓글 남겨주시면 가능한 빨리 답장드립니다.

도움이 되셨다면 토스아이디로 후원해주세요.
https://toss.me/momo2024


제가 쓴 책도 한번 검토해보세요 ^^

+ Recent posts