【入力キャプチャ モジュール】
入力キャプチャモジュールは、入力されるパルスのエッジ間の時間を測定できる
モジュールで、パルス幅やパルス周期の測定に使います
この入力キャプチャモジュールの内部構成は、下図のようになっています。
PIC24Fファミリのデバイスには5個のモジュールが実装されています。このため、
図中のxは1から5まであることになります。
動作は単純で、入力ピンに入力されるパルスの立上りか立下りのエッジで、タイマ2
かタイマ3どちらか選択した側のタイマカウンタの値をバッファにキャプチャつまりコピー
します。
これでタイマ2か3を一定周期で動作させておけば、パルスのエッジ間の時間差を
計測することができることになります。
バッファには4回までのキャプチャ値を保持できますので、高速のパルスでも計測が
可能になります。この計測の分解能は、タイマを内部クロックで動作させている場合には、
システムサイクル(TCY)となります。
キャプチャ動作は、毎回のエッジごとか、4回ごと、16回ごとの3種類が指定できます
から高周波のパルスの周期測定も可能になります。
【関連SFR】
この入力キャプチャモジュールの設定制御に使うレジスタには、下記のレジスタがあります。
この場合もxは1から5まであることになります。
・ICxCONレジスタ : 動作モード設定用レジスタ
・ICxBUFレジスタ : キャプチャバッファからの読み出し用
・IFSx、IECx、IPCx :割り込み制御レジスタ
この中で動作モードの設定に使うのは、ICxCONレジスタだけで、内容は下図となっています。
ICM<2:0>で動作モードを指定すればあとは動作待ち状態となります。
この初期化によりバッファの内容もクリアされ空の状態になります。
ICM<2:0> = 111 以外のモードでは、ICxピンの信号の立上りまたは立下りのイベントが起きると、
ICM<2:0>で指定した条件と一致するたびに、選択したタイマの現在値がFIFOバッファに書き込ま
れます。FIFOバッファが空かどうかは、ICBNEビット(ICxCON<3>)で判定できます。バッファが空の
状態から再開するためには、イベントごとにバッファが空になるまで読み出すか、いったん入力
キャプチャ モジュールをオフの状態にしてから再度モード設定をする必要があります。
《ICxCONレジスタの内容》