PIC16(L)F1703/7
22.0 キャプチャ / コンペア /PWM
PIC16(L)F1703/7
22.1 キャプチャモード
このセクションで説明するキャプチャモード機能は、
全ての
CCP
モジュールで利用でき、その機能は同じ です。キャプチャモードでは
16
ビットのTimer1
リソースを 使 い ま す。CCPx ピ ン で イ ベ ン ト が 発 生 す る と、TMR1H:TMR1L
レジスタペアの16
ビット値がキャプ チャされ、16
ビットのCCPRxH:CCPRxL
レジスタペ アにそれぞれ格納されます。イベントの定義は以下の いずれかであり、CCPxCON
レジスタのCCPxM<3:0>
ビットで設定します。
•
全ての立ち下がりエッジ•
全ての立ち上がりエッジ•
立ち上がりエッジ4
回ごと•
立ち上がりエッジ16
回ごとキャプチャが実行されると、
PIRx
レジスタの割り込み 要求フラグビットCCPxIF
がセットされます。この割 り込みフラグはソフトウェアでクリアする必要があり ます。CCPRxH:CCPRxL
レジスタペアの値を読み出す 前に再度キャプチャが実行されると、以前にキャプ チャした値が新しいキャプチャ値で上書きされます。図 22-1 に、キャプチャ動作の概略ブロック図を示し ます。
22.1.1 CCP
ピンの設定キャプチャモードでは、対応するTRIS制御ビットをセッ トして
CCPx
ピンを入力に設定する必要があります。図
22-1:
キャプチャモード動作のブロック図22.1.2 Timer1
モードのリソースCCP
モジュールのキャプチャ機能を使うには、Timer1
の動作をタイマモードまたは同期カウンタモードに設 定する必要があります。非同期カウンタモードの場合、キャプチャ機能は使えません。
Timer1
の設定の詳細は、セクション20.0「Timer1モ ジュール (ゲート制御対応)」を参照してください。22.1.3
ソフトウェア割り込みモードキャプチャモードを別のモードに変更した場合、不正 なキャプチャ割り込みが生成される事があります。こ のような割り込みを防ぐため、ユーザは
PIEx
レジスタの
CCPxIE
割り込みイネーブルビットをクリアしておく必要があります。また、動作モード変更後には
PIRx
レジスタのCCPxIF割り込みフラグビットをクリ アしてください。22.1.4 CCP
プリスケーラプリスケーラの設定は
4
種類あり、CCPxCON
レジス タのCCPxM<3:0>
ビットで設定します。CCP
モジュー ルがOFF
の場合、またはキャプチャモード以外の場 合、プリスケーラカウンタはクリアされます。何らか のリセットが発生するとプリスケーラ カウンタはク リアされます。キャプチャ プリスケーラを切り換えてもプリスケーラ はクリアされないため、不正な割り込みが生成される 事があります。このような予期しない割り込みを防ぐ ため、プリスケーラを変更する前に
CCPxCON
レジス タをクリアしてモジュールをOFF
にします。例22-1 に、この処理を実行するサンプルコードを示します。例 22-1: キャプチャ プリスケーラの切り換え
Note: CCPxピンを出力に設定した場合、
そのポートへの書き込み動作を実行するとキャプ チャが発生します。
CCPRxH CCPRxL
TMR1H TMR1L
Set Flag bit CCPxIF (PIRx register)
Capture Enable
CCPxM<3:0>
Prescaler
1, 4, 16and Edge Detect pinCCPx
System Clock (FOSC)
Note:
キャプチャモードでは、Timer1のクロック源をシステムクロック
(F
OSC)
としない でください。キャプチャモードでCCPx
ピンのトリガイベントを認識するには、Timer1のクロック源を命令クロック(F
OSC/4)
または外部クロック源とする必要があり ます。BANKSEL CCPxCON ;Set Bank bits to point
;to CCPxCON
CLRF CCPxCON ;Turn CCP module off MOVLW NEW_CAPT_PS ;Load the W reg with
;the new prescaler
;move value and CCP ON MOVWF CCPxCON ;Load CCPxCON with this
;value
PIC16(L)F1703/7
22.1.5
スリープ中のキャプチャキャプチャモードの動作は、
Timer1
モジュールにより 決まります。キャプチャモードでは、Timer1 モジュー ルの駆動方法として2
通りの設定が可能です。命令ク ロック(F
OSC/4)
または外部クロック源を使って駆動で きます。F
OSC/4
をクロック源に使うと、Timer1 はスリープ中 にインクリメントしません。デバイスがスリープから 復帰すると、Timer1
はスリープ直前の状態から動作を 再開します。外部クロック源で
Timer1
が動作している場合、スリー プ中もキャプチャモードは動作を継続します。PIC16(L)F1703/7
22.2 コンペアモード
このセクションで説明するコンペアモード機能は、全 ての
CCP
モジュールで利用でき、その機能は同じです。コンペアモードでは
16
ビットのTimer1
リソースを使 います。CCPRxH:CCPRxL
レジスタペアの16
ビット 値とTMR1H:TMR1L
レジスタペアの16
ビット値を常 に比較します。両方の値が一致した時、以下のイベン トのどれかを発生できます。• CCPx
出力をトグルする• CCPx
出力を設定する• CCPx
出力をクリアする•
自動変換トリガを生成する•
ソフトウェア割り込みを生成するピンの動作は
CCPxCON
レジスタのCCPxM<3:0>
制 御ビットの値で決まります。同時に、割り込みフラグCCPxIF
ビットがセットされます。全てのコンペアモードで割り込みを生成できます。
図22-2に、コンペア動作の概略ブロック図を示します。
図 22-2: コンペアモード動作のブロック図
22.2.1 CCPx
ピンの設定コンペアモードでは、対応する
TRIS
ビットをクリア してCCPx
ピンを出力に設定する必要があります。22.2.2 Timer1
モードのリソースコンペアモードでは、
Timer1
がタイマモードまたは同 期カウンタモードのどちらかで動作している必要があ ります。非同期カウンタモードの場合、コンペア機能 は使えません。Timer1
の設定の詳細は、セクション20.0「Timer1モ ジュール (ゲート制御対応)」を参照してください。22.2.3
ソフトウェア割り込みモードソフトウェア割り込み生成モード(CCPxM<3:0> =
1010)
を選択した場合、CCPxモジュールはCCPx
ピンの出 力を制御しません(CCPxCON
レジスタ参照)。
22.2.4
自動変換トリガ自動変換トリガモード(CCPxM<3:0> =
1011)を選択し
た場合、CCPx
モジュールは以下のように動作します。• Timer1
をリセットする• ADC
が有効な場合、A/D
変換を開始するこのモードの
CCPx
モジュールはCCPx
ピンの出力を 制御しません。CCP
の自動変換トリガは、TMR1H:TMR1L レジスタ ペアとCCPRxH:CCPRxL
レジスタペアが一致すると すぐに出力されます。TMR1H:TMR1Lレジスタペアは、
Timer1
クロックの次の立ち上がりエッジまでリセットされません。
ADC
モジュールが有効な場合、自動変 換トリガ出力によってA/D
変換が開始します。これに より、CCPRxH:CCPRxL
レジスタペアをTimer1
の16
ビットプログラマブル周期レジスタとして使います。詳細は、セクション16.2.5「自動変換トリガ」を参照 してください。
Note: CCPxCONレジスタをクリアすると、 CCPx
コンペア出力ラッチは既定値のLowレベル に変更されます。これは
PORT I/O
データ ラッチではありません。CCPRxH CCPRxL
TMR1H TMR1L Comparator
Q S
R Output
Logic
Auto-conversion Trigger
Set CCPxIF Interrupt Flag (PIRx)
Match
TRIS
CCPxM<3:0>
Mode Select
Output Enable Pin
CCPx 4
Note:
コンペアモードでは、Timer1
のクロック源としてシステムクロック
(F
OSC)
を使わ ないでください。コンペアモードでCCPx
ピンのトリガイベントを認識するには、Timer1
のクロック源を命令クロック(F
OSC/4)
または外部クロック源とする必要があり ます。Note 1: CCP
モジュールからの自動変換トリガは、
PIR1
レジスタの割り込みフラグビッ トTMR1IF
をセットしません。2:
自動変換トリガが発生したクロックエッ ジの後、Timer1
がリセットされるクロッ クエッジまでの間にCCPRxH:CCPRxL
レジスタペアの内容を変更して一致状態 を解消すると、リセットは発生しません。PIC16(L)F1703/7
22.2.5
スリープ中のコンペアコンペアモードの動作は、システムクロック
(F
OSC)
で 決まります。FOSC はスリープ中停止するため、コン ペアモードはスリープ中には機能しません。PIC16(L)F1703/7
22.3 PWM の概要
PWM (
パルス幅変調)
は完全ON
と完全OFF
の状態 を切り換えながら負荷に電力を供給する仕組みです。PWM
信号は矩形波に似ており、信号のHigh
の部分がON
、Low
の部分がOFF
です。High
の部分はパルス幅 とも呼ばれ、その時間の長さをステップ単位で変化さ せる事ができます。ステップ数を多くするとパルス幅 が広くなり、負荷に供給される電力が増加します。ス テップ数を少なくするとパルス幅が狭くなり、負荷に 供給される電力が減少します。1サイクル全体(
すな わちON
時間とOFF
時間の合計)
をPWM
周期といい ます。1
回のPWM
周期に設定できる最大ステップ数をPWM
分解能といいます。PWM 分解能が高いほどパルス幅 の時間、すなわち負荷に供給される電力を細かく制御 できます。PWM
周期全体に対するON
時間の割合を%
で表した ものをデューティ サイクルと呼び、0%
なら完全OFF、
100%
なら完全ON
を表します。デューティ サイクル の値が小さいほど負荷に供給される電力が少なく、値 が大きいほど多くなります。図22-3に、
PWM
信号の代表的な波形を示します。22.3.1
標準型PWM
の動作このセクションで説明する標準型
PWM
機能は、全て のCCP
モジュールで利用でき、その機能は同じです。標準型PWMモードでは、最高分解能
10ビットの PWM
信号をCCPx
ピンに生成します。周期、デューティ サ イクル、分解能は以下のレジスタで設定します。• PR2
レジスタ• T2CON
レジスタ• CCPRxL
レジスタ• CCPxCON
レジスタ図22-4に、PWM動作の概略ブロック図を示します。
図 22-3:
CCP PWM
出力信号図 22-4:
PWM
動作の概略ブロック図Note: CCPxピンへの PWM出力を有効にするに
は、対応する
TRIS
ビットをクリアする必 要があります。Period Pulse Width
TMR2 = 0
TMR2 = CCPRxH:CCPxCON<5:4>
TMR2 = PR2
CCPR1L
CCPR1H(2) (Slave)
Comparator
TMR2
PR2
(1)
R Q
S Duty Cycle Registers CCP1CON<5:4>
Clear Timer, toggle CCP1 pin and latch duty cycle
Note 1: 8ビットのタイマTMR2レジスタに2ビットの
内部システムクロック(FOSC)または2ビットの プリスケーラを連結して、10 ビットのタイム ベースを生成します。
2: PWMモードでは、CCPR1Hは読み出し専用レ ジスタです。
TRIS CCP1
Comparator