カテゴリ:カテゴリ未分類
PSOCのADCINC12を使う方法ですが、なかなか思ったようにいきません。 A/Dの電圧は0~5Vの範囲ではなく約0~2.6Vの範囲です。しかも0Vに相当する値は-2048で、2.6Vは2047です。0~2.6Vの範囲のAD変換はGlobal ResourcesのRef Muxを(BandGap+/-BandGap)にしなければいけません。デフォルトは([Vdd/2]+/-BandGap)になっています。([Vdd/2]+/-BandGap)はPSOC電源の1/2の電圧がADのゼロとなり5Vの電圧を使用しているのであれば1.2V~3.8VがAD変換の電圧の範囲となり、0V~1.2Vの範囲はAD変換できなく、勘違いに、注意です(^^;)。Ref Muxの設定は8種類ありますが、この2種類を知っていれば、良いのではないかと思います。 初期化のプログラム例 // ---- ADCINC12 setup ADCINC12_1_Start(ADCINC12_1_HIGHPOWER); // set power ADCINC12_1_GetSamples(0); // set ADC to continuous sampling // ---- PGA setup PGA_1_Start(PGA_1_HIGHPOWER); M8C_EnableGInt; //CPU ALL Interrupt Enable AD変換の例 void adc12(void) //ADC 12bit disp { int ad; while(ADCINC12_1_fIsDataAvailable() == 0); // Wait for ready ADCINC12_1_ClearFlag(); // ADC clear flag ad = ADCINC12_1_iGetData()+2048; // Get ADC result(Ref Mux : Band Gap +/- Band Gap) } お気に入りの記事を「いいね!」で応援しよう
|