adc.c
ファイル名
内容
利用方法
#include "sensor_driver.h"
#include "adc.h"
tsObjData_ADC sObjADC; // ADC管理構造体(データ部)
tsSnsObj sADC; // ADC管理構造体(制御部)
int16 a1,a2,ab; // 結果格納用
...
// ADC 初期化
vSnsObj_Init(&sADC);
vADC_Init(&sObjADC, &sADC, TRUE);
vADC_WaitInit(); // ハード初期化待ちを行う
...
// ADC計測したいポートの指定(以下では電源電圧とADC1,2)
sObjADC.u8SourceMask = TEH_ADC_SRC_VOLT
| TEH_ADC_SRC_ADC_1 | TEH_ADC_SRC_ADC_2;
// ADC開始
vSnsObj_Process(&sADC, E_ORDER_KICK); // 開始の号令
// ADCの1チャネル処理が終わるのを待って(=E_AHI_DEVICE_ANALOGUE割り込み)
// vSnsObj_Process() を順次呼び出す。
void cbToCoNet_vHwEvent(uint32 u32DeviceId, uint32 u32ItemBitmap) {
switch (u32DeviceId) {
case E_AHI_DEVICE_ANALOGUE:
// ADC完了割り込み
vSnsObj_Process(&sADC, E_ORDER_KICK);
if (bSnsObj_isComplete(&sADC)) {
// 全チャネルの処理が終わった。
// 値は以下に格納される
a1=sObjADC.ai16Result[TEH_ADC_IDX_ADC_1]; // ADC1[mV]
a2=sObjADC.ai16Result[TEH_ADC_IDX_ADC_2]; // ADC2[mV]
ab=sObjADC.ai16Result[TEH_ADC_IDX_VOLT]; // 電源電圧[mV]
// ADC開始前の初期状態に戻す
vSnsObj_Process(&sADC, E_ORDER_KICK);
// 連続して実行する場合はもう一度E_ORDER_KICK
vSnsObj_Process(&sADC, E_ORDER_KICK);
}
break;
default:
break;
}
}関数
void vSnsObj_Init(tsSnsObj _*_pSnsObj)
void vADC_Init(tsObjData_ADC *pData,_ _tsSnsObj _*_pSnsObj, bool_t bInitAPR)
void vSnsObj_Process(tsSnsObj *pObj, teEvent eEv)
tsObjData_ADC構造体
メンバー
最終更新