Samp_PingPongプログラムの変更箇所
(1)IOの設定とIO制御関数の追加
以下のコードを追記しました。
//***変更1
#define vPortSetHi(c) vAHI_DioSetOutput(1UL << (c), 0)
#define vPortSetLo(c) vAHI_DioSetOutput(0, 1UL << (c))
#define vPortSet_TrueAsLo(c, s) vAHI_DioSetOutput((s) ? 0 : 1UL << (c), s ? 1UL << (c) : 0)
#define vPortAsInput(c) vAHI_DioSetDirection(1UL << (c), 0)
#define vPortAsOutput(c) vAHI_DioSetDirection(0, 1UL << (c))
#define bPortRead(c) ((u32AHI_DioReadInput() & (1UL<<(c))) ? FALSE : TRUE) // Lo as True
#define u32PortReadBitmap() (u32AHI_DioReadInput())
#define bPortCheckBitmap(bitmap, c) ((bitmap & (1UL<<(c))) ? FALSE : TRUE)
#define vPortDisablePullup(c) vAHI_DioSetPullup(0x0, 1UL << (c))
// TWE-Lite DIP (TWELITE の標準構成)
#define PORT_OUT1 18
#define PORT_OUT2 19
#define PORT_OUT3 4
#define PORT_OUT4 9
#define PORT_INPUT1 12
#define PORT_INPUT2 13
#define PORT_INPUT3 11
#define PORT_INPUT4 16
(2)HC-SR04 超音波距離センサー制御プログラムの追加
タイマーは0〜4の5個が使用可能ですが、下記コードではタイマー4を使用しました。
case 'h'://***変更1
vfPrintf(&sSerStream,"HC-SR04-TEST\r\n");//TEST表示
vPortAsInput(PORT_INPUT1);//入力設定
vPortAsOutput(PORT_OUT1);//出力設定
vPortSetLo(PORT_OUT1);//トリガOFF
vAHI_TimerEnable(E_AHI_TIMER_4,3,FALSE,FALSE,FALSE);//プレスケール1/8設定
vAHI_TimerStartSingleShot(E_AHI_TIMER_4,0x0000,0x0000);//タイマー4スタート
while(u16AHI_TimerReadCount(E_AHI_TIMER_4) < 20);//10μsディレイ
vPortSetHi(PORT_OUT1);//トリガON
vAHI_TimerStop (E_AHI_TIMER_4);//タイマー4ストップ
vAHI_TimerStartRepeat(E_AHI_TIMER_4,0x0000,0x0000);//タイマー4スタート
while(u16AHI_TimerReadCount(E_AHI_TIMER_4) != 20);//10μsディレイ
vPortSetLo(PORT_OUT1);//トリガOFF
vAHI_TimerStop (E_AHI_TIMER_4);//タイマー4ストップ
vAHI_TimerStartRepeat(E_AHI_TIMER_4,0x0000,0x0000);//タイマー4スタート
while(bPortRead(PORT_INPUT1) && u16AHI_TimerReadCount(E_AHI_TIMER_4) != 0xffff);//エコーON
vAHI_TimerStop (E_AHI_TIMER_4);//タイマー4ストップ
vAHI_TimerStartRepeat(E_AHI_TIMER_4,0x0000,0x0000);//タイマー4スタート
while(!bPortRead(PORT_INPUT1) && u16AHI_TimerReadCount(E_AHI_TIMER_4) != 0xffff);//エコーOFF
vfPrintf(&sSerStream,"TimerReadCount=%d\r\n",u16AHI_TimerReadCount(E_AHI_TIMER_4));//結果出力
vAHI_TimerStop (E_AHI_TIMER_4);//タイマー4ストップ
break;