PIC−USBIO using BASIC
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
USBインターフェースを内蔵したPICを使ってWindowsパソコンで外部回路を制御するための各種I/O基板の製作記事です。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
[第79回]
●PICUSBIO−03(28)Timer1(10)CAPTUREモード
CAPTUREモードではそのための16ビットレジスタCCPR1を使います。
入力端子CCP1から入力される信号の立上りエッジ(または立下りエッジ)でそのときのTimer1(またはTimer3)の値をキャプチャしてCCPR1レジスタに書き込みます。
下はPIC18F13K50/14K50のDATA SHEETからのコピーです。
[出典]Microchip Technology Inc. PIC18F13K50/14K50 Data Sheet
CCPR1レジスタはCCPR1H(上位8ビット)とCCPR1L(下位8ビット)からなります。
CCP1端子はPORTCのbit5(RC5)と多重化されています。
CAPTUREモードを有効にするためにはRC5を入力に設定しなければなりません(TRISCのbit5を1にする)。
CCPR1レジスタに書き込みが行なわれるCCP1端子の入力信号の立上りエッジ、立下りエッジはCCP1CONのbit3〜bit0で指定します。
bit3〜bit0が0100 入力信号の立下りエッジごとにCCPR1レジスタへの書き込みが行なわれます。
bit3〜bit0が0101 入力信号の立上りエッジごとにCCPR1レジスタへの書き込みが行なわれます。
bit3〜bit0が0110 入力信号の4番目の立上りエッジごとにCCPR1レジスタへの書き込みが行なわれます。
bit3〜bit0が0111 入力信号の16番目の立上りエッジごとにCCPR1レジスタへの書き込みが行なわれます。
CCP1CONについては前回にData Sheetからのコピーがありますので参照してください。
CCP1端子からの入力信号の上記エッジでそのときのTimer1またはTimer3の値がCCPR1レジスタに書き込まれるとともにCCP1IFフラグがセットされます。
CCP1IFはPIR1レジスタにあります。
PIR1レジスタは[第73回]にData Sheetのコピーがありますので参照してください。
CCP1IFはPIR1レジスタのbit2です。
CCP1IFはソフトウェアでクリアする必要があります。
CCPR1レジスタを読む前に次のキャプチャタイミングが発生するとCCPR1レジスタは新しい値で上書きされます(このことはCCP1IFをクリアしていなくても行なわれます)。
CAPTUREモードのために使うTimer(Timer1またはTimer3)はTimerモードかSynchronized Counter(同期カウンタ)モードでなければなりません。
非同期カウンタモードではCAPTUREモードは正しく行なわれません。
さて。
CAPTURE機能はどういったことに利用できるでしょうか。
考えられるのは繰り返し入力されるパルスの信号間隔(周期)の測定(監視)というような用途でしょうか。
簡易な周波数カウンタとしても使えるかもしれません。
今回は基本的なことがらの説明に終ってしまいました。
次回は実際にプログラムを作ってCAPTUREの動作をテストしてみます。
PIC−USBIO using BASIC[第79回]
2022.10.19upload
前へ
次へ
ホームページトップへ戻る