PIB16F1705には2つのOPアンプが内蔵されています。これは、このPICの大きな特徴です。
OPアンプのテスト1として、PIC内のFVR(Fixed Voltage Reference)の電圧、1.024V,2.048V,4.096VをOPA1をボルテージフォロアにして、外部に取り出してみます。
OPAモジュールは、下の図のような構造になっています。設定は、OPAxCONで行います。(x=1,2)
OPA1を有効にするには、OPA1CONレジスタのbit7(OPA1EN)=1とします。
OPA1をFVR Buffer2に接続するには、OPA1CONレジスタのbit1:0=11とします。
OPA1をボルテージフォロア接続にするには、OPA1CONレジスタのbit4(OPA1UG)=1とします。
今回は、OPアンプのスピードは関係ないので、OPA1SP=0(Low Speed)とします。
次に、FVRの設定は、FVRCONレジスタで行います。
FVRCONレジスタのbi7(FVREN)=1として、FVRを有効にします。
参照電圧は、FVRCONレジスタのbit3:2(CDAFVR)で行い、
01=1.024V
10=2.048V
11=4.096V
となります。
CDAFVRの値を変えて、出力(OPA1OUT=RC2)を測定してみました。
CDFVR=01=1.024Vの時
CDAFVR=10=2.048Vの時
CDAFVR=11=4.096Vの時
FVR(固定参照電圧)を外部に取り出すことができました。(かなり正確です)
メイン関数だけを示します。(今回は、内部クロック8MHzとしています。CDAFVRは、4.096V出力になっています。)
void main() {
OSCCON = 0b01110010 ; // 内部クロック8MHz
ANSELA = 0b00000000 ; // アナログ使わない
ANSELC = 0b00000000 ; //
TRISA = 0b00000000 ; // 全て出力
TRISC = 0b00000000 ; // 全て出力
PORTA = 0b00000000 ; // PORTAクリア
PORTC = 0b00000000 ; // PORTCクリア
OPA1CON = 0b10010011; //OPA1EN=1,OPA1UG=1,OPA1NCH=11
FVRCON = 0b10001100; //FVREN=1,CDAFVR=11
while(1){
}
}
※コメント投稿者のブログIDはブログ作成者のみに通知されます