PIC16F628にはCCP機能があります。これはキャプチャ(Capture)、コンペア(Compare)、PWM(Pulse Width Modulation)の頭文字から採った名前です。PIC16F628はCCPモジュールを1つ持っています。CCP機能はPIC16F873と同様なので、以下の説明で一部のレジスタ類はPIC16F873のページを使用しています。
キャプチャおよびコンペアはタイマー1を使用して動作し、PWMはタイマー2を使用して動作します。 CCP1用のレジスタ(CCPR1)は8ビットのCCPR1Lレジスタ(下位バイト)とCCPR1Hレジスタ(上位バイト)とで構成されています。CCP1の動作はCCP1CONレジスタで制御することができます。 コンペア(比較)モードで内容の一致が発生するとトリガ信号によりタイマー1がリセットされます。 キャプチャモード キャプチャモードではRB3/CCP1ピン(pin9)の変化が発生したときにタイマー1の内容をCCPR1レジスタ(CCPR1HとCCPR1L)に取り込みます。RB3/CCP1ピンはTRISCレジスタにより必ず入力モードに設定する必要があります。出力モードに設定した場合、出力データの条件がキャプチャ条件になります。
キャプチャモードを使用する場合、タイマー1は必ず同期式のタイマーモードで動作させる必要があります。非同期の場合にはキャプチャ機能は動作しません。キャプチャモードを解除するときには誤動作を防止するためにPIE1レジスタのCCP1IEビットおよびPIR1レジスタのCCP1IFビットをクリアする必要があります。 コンペアモード コンペアモードではCCPR1レジスタの内容とタイマー1(TMR1)の内容が常に比較されます。
コンペアモードを使用する場合、タイマー1は必ず同期式のタイマーモードで動作させる必要があります。非同期の場合にはキャプチャ機能は動作しません。 PWMモード PWM(Pulse Width Modulation)モードではCCP1(pin9)に連続的なパルス信号を出力することができます。
パルスの周期はPR2の設定値、発振器の発振周波数、タイマー2のプリスケーラ値により決まります。 また、パルスのデューティ(Hレベルの時間)はCCPR1LレジスタおよびCCP1CONレジスタのCCP1XビットおよびCCP1Yビット、発振器の発振周波数、タイマー2のプリスケーラ値により決まります。 CCPR1Lレジスタの内容が上位の8ビットとして使用され、CCP1Xビットが第2ビット目、CCP1Yビットが第1ビット目として使用されます。デューティ制御の最小単位は発振器の周期時間です。10MHzの時には0.1マイクロ秒になります。デューティの最大分解能力は1024です。 PWM周期よりデューティ時間を長く設定すると出力は常にHレベルになります。PWMのデューティ指定を0に設定すると出力は常にLレベルになります。 PWM周期およびPWMデューティについてはPIC16F873の項目を参照してください。 |