INtimeドキュメンタリトップへ

アナログデータ変換値取得スレッド完成!!

10月21日・・・デジタルボード

デジタルボード出力に関しては、アナログボードの場合と同様手順をとりました。
まず仕様を確認します:


デジタルボード出力についての仕様記述部

デジタルボード出力についての仕様記述部


DOカードを検出できること・・・できない場合、DO出力をしないモードで動作
各CHの値が+8.0V以上で所定DOビットをONにする。DOは8ビット仕様し、ビット0がCH0、ビット7がCH7というように対応させる。DOポートのオフセット+0
100ms周期にDO8~15ビットを点滅させるスレッドを持つこと。DOポートのオフセット+1
上記の仕様で読み取れること

デジタルボード出力についての仕様記述部

PciFindDevice関数を使用し、デバイスの検出を行なうのみで、割り込みレベルを利用しない(割り込みを使用しない)。
アナログボード処理と同じで、アクセスするアドレスを設定する。
所定ビット出力DO処理はアナログデータ変換値入力時に行う。
100ms周期にDO8~15ビットを点滅させるスレッドは独立したスレッド(DOBlinkCtrlThread)。
<所定ビット出力:8V以上の場合DOボード出力する>
   ・aData[i]・・・・8CH分のアナログデータ
   ・デジタルボード出力グループ(BASE ADDRESS+ 0x04 ~ 0x07)
   ・wDigitalData・・・デジタルボードのグループに出力するデータ
 ----------------------------------------------------------------- 
for( i = 0 ; i < CH_CNT;i++){
   if( aData[i] >= VAL_8V){        
       /*取り込みデータが8V以上の場合CHに対応したビットONにする*/ 
      wDigitalData = wDigitalData | (0x01 << i);
   }
} 
if (デジタルボード検出できている場合){
   outbyte(デジタルボードベースアドレス + 0x04,wDigitalData);
}

<100ms周期DO出力スレッド> 
   
void DOBlinkCtrlThread(void)
{
        int ctrlSW; // ON/OFF制御状態フラグ
         ctrlSW = 0;
        while (1)
        {
             RtSleep(100); 
                   /* 100ms周期でデジタルボードを点滅させる*/ 
                  if(ctrlSW == 0){
                            /* DOビッドON状態に設定 */ 
                           outbyte(strInfo.digitalAdd  + 0x05 ,0xFF);
                        ctrlSW = 1;
                }else{ 
                            /* DOビッドOFF状態に設定 */ 
                           outbyte(strInfo.digitalAdd + 0x05 ,0x00);
                        ctrlSW = 0;
                }
        }
} 


※TenAsys®, INtime®, eVM® and iRMX® are registered trademarks in USA of the TenAsys Corporation.