PIC18F14K50 (9)
PIC18F14K50 の内蔵モジュールを利用した VCO で、リセット・パルス幅を決める時定数回路を、のこぎり波発生回路とは別に持つ形式の構成の VCO を試してみました。
内部モジュールの構成および外部回路の図を下に示します。
7 番ピン (C12IN3-) につながっている 2.2 kΩ と 470 pF で時定数約 1 μs の RC 回路を構成しており、この回路で約 1 μs 幅の一定値のリセット・パルスを作り出しています。
SR ラッチ・モジュールでは、セット側、リセット側、それぞれ複数の入力を持つことができ、しかもリセット優先の構成になっているので、これを利用して、「ハード・シンク」の機能を付けました。
15 番ピン (RC1/AN5/C12IN1-/VREF-/INT1) はシュミット・トリガ特性のディジタル入力で、「H」レベルの入力で「ハード・シンク」、つまり、強制リセットによる同期がかかります。
信号の極性の反転は、内部ではできません。 「負極性」のハードシンク・パルスの場合には外部回路で反転する必要があります。
回路図には、実際のアナログ波形から「微分」などの波形整形をしてディジタル・パルスを得る部分は書いてありません。 ハードシンク・パルスは、すでにディジタル信号となっていることを仮定しています。
jalv2 言語で書いた、Vref 部/コンパレータ部/SR ラッチ部の設定プログラムを下に示します。
procedure vref_init() is REFCON0_FVR1EN = 1 -- enable Fixed Voltage Reference 1 REFCON0_FVR1S1 = 0 -- 1 x 1.024 V REFCON0_FVR1S0 = 1 -- 1 x 1.024 V REFCON1_D1EN = 1 -- DAC1 enable REFCON1_DAC1OE = 0 -- DAC1 Output disable REFCON1_D1PSS = 0 -- DAC1 Positive Source Select = Vdd REFCON1_D1NSS0 = 0 -- DAC1 Negative Source Select = Vss REFCON2 = 11 -- DAC1 out = Vdd * (11/31) = (1/3) Vdd end procedure procedure comparator_init() is CM1CON0_C1ON = 1 -- C1 ON CM1CON0_C1OE = 0 -- C1 internal only CM1CON0_C1POL = 0 -- C1 not inverted CM1CON0_C1SP = 1 -- C1 high speed CM1CON0_C1R = 1 -- C1 C1VIN+ = C1Vref CM1CON0_C1CH = 3 -- C1 C1VIN- = C12IN3- (pin 7) CM2CON0_C2ON = 1 -- C2 ON CM2CON0_C2OE = 0 -- C2 internal only CM2CON0_C2POL = 0 -- C2 not inverted CM2CON0_C2SP = 1 -- C1 high speed CM2CON0_C2R = 1 -- C2 C2VIN+ = C2Vref CM2CON0_C2CH = 2 -- C2 C2VIN- = C12IN2- (pin 14) CM2CON1_C1RSEL = 0 -- C1 C1Vref = CVref CM2CON1_C1HYS = 0 -- C1 hysteresis disabled CM2CON1_C1SYNC = 0 -- C1 output asynchronous CM2CON1_C2RSEL = 1 -- C2 C2Vref = FVR CM2CON1_C2HYS = 0 -- C2 hysteresis disabled CM2CON1_C2SYNC = 0 -- C2 output asynchronous -- set tri-state mode for comparator/vref input pins TRISC_TRISC1 = 1 -- RC1/AN5/C12IN1-/VREF- (pin 15) TRISC_TRISC2 = 1 -- RC2/AN6/C12IN2-/CVREF (pin 14) TRISC_TRISC3 = 1 -- RC3/AN7/C12IN3-/PGM (pin 7) -- enable analog input for comparator/vref JANSEL_ANS6 = 1 -- RC2/AN6/C12IN2-/CVREF (pin 14) JANSEL_ANS7 = 1 -- RC3/AN7/C12IN3-/PGM (pin 7) -- disable analog input for digital I/O use JANSEL_ANS5 = 0 -- RC1/AN5/C12IN1-/INT1/VREF- (pin 15) end procedure procedure SR_Latch_init() is SRCON0_SRLEN = 1 -- SR Latch enabled SRCON0_SRQEN = 1 -- SR Latch Q out enabled SRCON0_SRNQEN = 0 -- SR Latch Q* out disabled on RC4/SRQ pin TRISC_TRISC4 = 0 -- set RC4/SRQ pin to output SRCON1 = 0x00 -- at first, disable all S/R inputs SRCON1_SRSC1E = 1 -- SR Latch C1 set enabled SRCON1_SRRC2E = 1 -- SR Latch C2 reset enabled SRCON1_SRRPE = 1 -- SR Latch INT1 reset enabled end procedure
波形写真や、周波数リニアリティの測定などは次回以降に回します。