티스토리 뷰
이번 글에서는 타이머/카운터의 PWM 모드 중에서 Phase Correct PWM 모드에 대하여 설명하도록 하겠다.
위의 그림이 Phase correct PWM의 동작원리를 설명한 것이다.
앞에서 설명한 Fast PWM과 비교하여 특이점을 설명하자면, 먼저 TCNT값이 BOTTOM에서 증가하다가 TOP이 되면 다시 BOTTOM에서 새로 시작하는 것이 아니라 BOTTOM을 향해서 1씩 감소해 나가는 것을 볼 수 있다. 이때 OC값은 Non-invert 모드의 경우에 TCNT값이 OCR값과 같아질 때, 증가하는 구간에서 0이 되고, 감소하는 구간에서 1이 된다.
그러므로 OC만 놓고 봤을 때 클럭 구간의 시작 위치가 BOTTOM과는 다른 위치에서 시작되는것을 볼 수 있다. 그래서 이러한 PWM의 이름을 phase correct PWM이라고 부르는 것이다.
이번에도 실습을 통하여 Phase Correct PWM이 어떻게 동작되는지 눈으로 직접 확인해 보도록 하겠다.
코드는 Fast PWM 모드와 똑같다. 단지 11번 라인에 동작 모드 설정하는 부분에서 Phase correct모드로 수정하였다. 위의 코드를 이용하여 보드에서 어떻게 동작되는지 확인해 보자.
TCNT 값이 TOP까지 1씩 증가하다가 TOP에서 BOTTOM으로 1씩 감소되는 것을 볼 수 있을 것이다. 그 사이에 TCNT값이 OCR값과 같아지면 상승 구간과 하강구간에서 LED의 상태가 서로 반전되는것도 눈으로 불 수 있을것이다.
Phase Correct PWM 모드에서의 출력 클럭 주파수를 구하는 공식이다. Fast PWM과 마찬가지로 선택할 수 있는 클럭 주파수는 제한이 있다. 이러한 제한을 없애는 방법으로 WGM2비트를 사용하면 된다.
WGM2 비트를 set 하여 출력 클럭 주파수를 조절하는 프로그램을 구현해 보도록 하겠다.
위의 코드를 실행해 보면 OC_A는 CTC모드로 동작되는것을 볼 수 있고, OC_B는 TOP이 100인 구간에서 Phase correct PWM모드로 동작 되는 것을 볼 수 있을 것이다. 특히 Fast PWM모드에서는 이런 모드에서 동작될 때 OC_A와 OC_B가 BOTTOM에서 서로 동기가 맞는 상태로 동작된것에 비해 Phase Correct PWM 모드에서는 OC_A와 OC_B가 서로 다른 시간에 LED의 상태가 변화되는 것을 볼 수 있다.
Fast PWM 모드에서 했던것과 같이 카운터의 입력 클럭을 prescaler로 변경하고, OCR값을 변경하였을 때 LED에 어떤 변화가 나타나는지 확인해 보도록 하겠다.
이번에도 PB0에 연결된 LED의 상태가 토글될때마다 PD5,PD6에 연결된 LED의 불빛이 하나는 차츰 밝아지고, 다른 하나는 차츰 어두워지는 것을 볼 수 있을것이다.
'입문' 카테고리의 다른 글
SPI (6) | 2016.04.16 |
---|---|
ADC(Analog to Digital Converter) (0) | 2016.04.14 |
타이머/카운터 - PWM(Fast PWM Mode) (2) | 2016.04.12 |
타이머/카운터 - PWM(CTC Mode) (0) | 2016.04.10 |
타이머/카운터 - PWM(Normal Mode) (2) | 2016.04.10 |