위상교정 PWM에서 0.5%단위의 듀티를 주는 방법

2019. 6. 7. 18:45임베디드/ATmega128

만약에 동일한 클럭과 분주비를 가지는 fast PWM과 위상교정 PWM에서 위상교정은 fast PWM 대비 2배 작은 단위로 제어할 수 있다고 하지만 실제로 위상교정 pwm 파형상 top을 기준으로 대칭이기 때문에 그렇지 않다. (OCR값이 counter가 상승시, 하강시 비교되므로 OCR값의 1의 변화는 실제로는 2값에 해당하는 차이를 보인다)

 

예를 들어 비교일치 때 HIGH(비반전 모드)면서 임의의 OCR 254값을 주게 되면 254 - 255 - 254 총 2간격동안만 HIGH를 유지하는 대칭성으로 인해서 결국엔 (2*(255-OCR)/510) = (255-OCR)/255로 fast PWM과 같이 짝수단위로만 나오게 되는데 (실제 Fast PWM은 256번을 세기 때문에 분모에서 차이가 1 생긴다) 0.5단위로 하려면 어떻게 해야할까?

 

답은 비교일치 때 TOP 이후의 OCR을 변경해서 upper side와 down side에서 OCR을 비대칭으로 줘야만 한다.

 

하지만, 자문을 구한 결과로는 

1. OCR이 top에 가깝고, 클럭이 빠르다면 불가능에 가깝다. PWM은 인터럽트로 동작하기 때문에 OCR 변경에 있어 오히려 어긋나는 상황이 나올 수 있다 (채터링과 캡쳐 실습을 상기해보면 된다)

 

2. 만약 분주비가 커서 마이크로컨트롤러 동작이 상대적으로 크다면 OCR 값 갱신이 가능하게 된다

'임베디드 > ATmega128' 카테고리의 다른 글

8비트 타이머카운터 정리  (0) 2019.06.14
부저 음계주파수 계산  (1) 2019.06.11
fast PWM과 위상교정 PWM의 해상도 차이  (0) 2019.06.07
AVR 스터디 [2019.06.02]  (0) 2019.06.02
아두이노와 AVR의 차이  (0) 2019.05.30