Pulse Width Modulation. 디지털 핀으로 아날로그처럼 보이게 만드는 기법이다.
주기 ─────────────────
┌────┐ ┌────┐
│ │ │ │ 듀티 40% → 평균 전압 = VDD × 0.4
──────┘ └────┘ └──
타이머 레지스터 셋으로 만든다
프리스케일러 입력 클럭을 나눠 계수 속도를 정한다
자동 재로드값 여기까지 세면 0으로 돌아간다 → 주기
비교값 여기보다 작을 때 HIGH → 듀티
주파수를 어떻게 고르나
LED 밝기 200Hz 이상이면 눈에 깜빡임이 안 보인다
모터 수 kHz~20kHz. 가청 주파수를 피하면 소음이 준다
아날로그 대용 RC 필터를 붙여 평균을 낸다. 필터 시정수보다 훨씬 빨라야 한다
실무에서 데는 곳
듀티를 바꿀 때 주기 중간에 값이 바뀌면 파형이 한 주기 일그러진다. 그래서 타이머가 재로드 시점에만 반영하는 프리로드(shadow) 레지스터를 제공한다. 켜 두는 것이 기본이다.