Samp_PingPongプログラムの変更箇所
(1)Samp_PingPongプログラムの変更のポイント
*Samp_PingPongもvoid cbToCoNet_vRxEvent(tsRxDataApp *pRx)等の割込み処理を行っており、250ms等の長いDelayループは使用できない。
*Tick Timerの基本設定とコールバック関数はどこかですでに設定されている。
*TickTimerIntervalは4msとなっている。
*Tick Timerのコールバック関数はvoid cbToCoNet_vHwEvent(uint32 u32DeviceId, uint32 u32ItemBitmap)であり、u32DeviceId=E_AHI_DEVICE_TICK_TIMERがTick Timerの割込みである。
(2)変数・関数定義追加
//***変更3
//***変更4
uint8 gOhm_F=0;//抵抗測定フラグ
uint16 gOhm_C=0;//TickTimerカウンタ
uint16 gOhm_N=10;//総和回数
uint16 gOhm_NC=0;//総和カウンタ
uint32 gOhm_S1;//ADC総和1
uint32 gOhm_S2;//ADC総和
(3)void cbAppColdStart(bool_t bAfterAhiInit)への追加
//****変更3
//***変更4
vPortAsOutput(PORT_OUT3);//出力設定
vPortAsOutput(PORT_OUT4);//出力設定
vPortSetLo(PORT_OUT3);//OFF設定
vPortSetLo(PORT_OUT4);//OFF設定
(4)void cbToCoNet_vHwEvent(uint32 u32DeviceId, uint32 u32ItemBitmap)への追加
//***変更4
if(gOhm_F == 1)
{
gOhm_C++;
if(gOhm_C == 1)
{
vPortSetLo(PORT_OUT3);//OFF設定
vPortSetHi(PORT_OUT4);//ON設定
}
if(gOhm_C == 20)
{
vAHI_AdcEnable(E_AHI_ADC_SINGLE_SHOT,E_AHI_AP_INPUT_RANGE_2,E_AHI_ADC_SRC_ADC_2);
vAHI_AdcStartSample();//測定開始
while(bAHI_AdcPoll());//AD変換待ち
gOhm_S1=gOhm_S1+ u16AHI_AdcRead();//結果読み込み
//vAHI_AdcDisable();
}
if(gOhm_C == 40)
{
vPortSetHi(PORT_OUT3);//ON設定
vPortSetLo(PORT_OUT4);//OFF設定
}
if(gOhm_C ==60)
{
vAHI_AdcEnable(E_AHI_ADC_SINGLE_SHOT,E_AHI_AP_INPUT_RANGE_2,E_AHI_ADC_SRC_ADC_2);
vAHI_AdcStartSample();//測定開始
while(bAHI_AdcPoll());//AD変換待ち
gOhm_S2=gOhm_S2+ u16AHI_AdcRead();//結果読み込み
//vAHI_AdcDisable();
}
if(gOhm_C > 80)
{
gOhm_C=0;
gOhm_NC++;
//vfPrintf(&sSerStream,"Ohm-TEST=\t%d\t%d\r\n",gOhm_S1,gOhm_S2);//TEST表示
if(gOhm_NC > gOhm_N)
{
gOhm_NC=0;
uint32 R2=3300*gOhm_S2/gOhm_S1;
vfPrintf(&sSerStream,"Ohm-TEST=\t%d\t%d\t%d\r\n",gOhm_S1,gOhm_S2,R2);//TEST表示
gOhm_S1=0;
gOhm_S2=0;
//gOhm_F=0;//これを有効にすると1回で終了!!
}
}
}
(5)static void vHandleSerialInput(void)への追加
case 'k'://***変更4
//Ohm
vfPrintf(&sSerStream,"\r\nOhm-TEST=\tgOhm_S1\tgOhm_S2\tR2\r\n");//TEST表示
gOhm_F=1;//フラグON
if (!bAHI_APRegulatorEnabled())//REGULATORがOFFの場合
{
//REGULATOR許可、割込み無し、サンプリング間隔2、500KHz、内部クロックを設定
vAHI_ApConfigure(E_AHI_AP_REGULATOR_ENABLE, E_AHI_AP_INT_DISABLE,E_AHI_AP_SAMPLE_2,E_AHI_AP_CLOCKDIV_500KHZ,E_AHI_AP_INTREF);
while(!bAHI_APRegulatorEnabled());//REGULATORがON待ち
}
break;