ADCの使用方法

ADCを利用するには3つの手続きが必要です。 1) アナログ部の電源投入 2) ADC 開始 3) 完了待ちおよび読み出し となります。

// 1) アナログ部の電源投入
if (!bAHI_APRegulatorEnabled()) {
vAHI_ApConfigure(E_AHI_AP_REGULATOR_ENABLE,
     E_AHI_AP_INT_ENABLE, // DISABLE にするとアナログ部の電源断
     E_AHI_AP_SAMPLE_2, // サンプル数 2,4,6,8 が選択可能
     E_AHI_AP_CLOCKDIV_500KHZ, // 周波数 250K/500K/1M/2M
     E_AHI_AP_INTREF);

while(!bAHI_APRegulatorEnabled()); // 安定するまで待つ
}
		
// 2) ADC 開始
vAHI_AdcEnable(
        E_AHI_ADC_SINGLE_SHOT,
             // E_AHI_ADC_SINGLE_SHOT 1回のみ
             // E_AHI_ADC_CONTINUOUS 連続実行
        E_AHI_AP_INPUT_RANGE_2, 
            // E_AHI_AP_INPUT_RANGE_1 (0-1.2V)
            // または E_AHI_AP_INPUT_RANGE_2 (0-2.4V)
        E_AHI_ADC_SRC_ADC_1 
            // E_AHI_ADC_SRC_ADC_1 (ADC1)
            // E_AHI_ADC_SRC_ADC_2 (ADC2)
            // E_AHI_ADC_SRC_ADC_3 (ADC3)
            // E_AHI_ADC_SRC_ADC_4 (ADC4)
            // E_AHI_ADC_SRC_TEMP (温度)
            // E_AHI_ADC_SRC_VOLT (電圧)
        );
vAHI_AdcStartSample(); // ADC開始

// 3) ADC 完了待ちおよび読み出し 
//   (ポーリングのAPIに不具合が有るので割り込みを待ちます)
//   以下は AppQueueAPI を使用したコードの一部。
PRIVATE void vProcessIncomingHwEvent(AppQApiHwInd_s *psAHI_Ind)
{
	uint32 u32DeviceId = psAHI_Ind->u32DeviceId;
	//uint32 u32ItemBitmap = psAHI_Ind->u32ItemBitmap;

	switch (u32DeviceId) {
	case E_AHI_DEVICE_ANALOGUE:
        // ADCが終了
        u16adc = u16AHI_AdcRead(); // 値の読み出し
        break;
    ...
    }
    ...
}       

その他