山本ワールド
PIC18 PWM設定例
PWM
PWMを実現するにはTimerとCCPを組み合わせる。
Timersxのxはタイマー番号(2,4,6のいずれか)を示す。
PIC18F46K22ではTimer2/4/6、CCP1/2/3/4/5が同様に使用できる。
PIC18F14K50ではTimer2がCCP1が同様に使用できる。
カウントレジスタ:8bitアップカウント
クロック源:FOSC/4のみ
プリスケーラ: 1 4 16
カウント値とPRxの値が一致した場合、カウンタがクリアされ割り込み発生が可能。PRxで周期を設定。出力がhiになる。
CCPRxLとCCPxCONの4~3ビット目を使用して最大10bitの分解能で設定できる。 カウント値+プリスケーラ2bitが一致した時、出力がlowになる。 OpenTimerxはTCONxの設定を行う。
Timersxのxはタイマー番号(2,4,6のいずれか)を示す。
PIC18F46K22ではTimer2/4/6、CCP1/2/3/4/5が同様に使用できる。
PIC18F14K50ではTimer2がCCP1が同様に使用できる。
カウントレジスタ:8bitアップカウント
クロック源:FOSC/4のみ
プリスケーラ: 1 4 16
カウント値とPRxの値が一致した場合、カウンタがクリアされ割り込み発生が可能。PRxで周期を設定。出力がhiになる。
CCPRxLとCCPxCONの4~3ビット目を使用して最大10bitの分解能で設定できる。 カウント値+プリスケーラ2bitが一致した時、出力がlowになる。 OpenTimerxはTCONxの設定を行う。
クロックよりPRxレジスタの設定値の計算例
JavascriptによりPRxレジスタの値により任意の周波数で周期割り込みを発生させる場合の設定例を計算する
プリスケーラ(p) | 1 | 4 | 16 |
目標周波数 f=1/t |
|||
目標分周比 d=CLK/f |
|||
分周比(dp=d/p) | |||
PRx=255の時の周波数(Hz) | |||
PRx | |||
出力周波数 | |||
誤差(%) | |||
CCPCONx(4~3):CCPxL 最大値 | |||
分解能ビット |
タイマー設定例(入力条件よりXC8向けソースを表示)
条件入力
XC8 Cコンパイラ向けのサンプルソース
Copyright (C) 2012 山本ワールド All Rights Reserved.