KiNOKO-DAQ 関連情報 掲示板

このスレッドに記事を投稿する
前のスレッド | 次のスレッド | 掲示版ホーム

camdrv
2002 年 6 月 13 日 10 時 1 分
投稿者: 井垣 友克

camdrvを使っていて問題がでています。ドライバーが原因ではないかもしれませんが、アドバイスを頂けたらと思います。LecroyのTDC2277を二つ使って、データを採ろうとしています、camlibを使っていて、以下のようにlamのテストをしている部分があります。

do{
ft = 8;
at = 0;
CAMAC(NAF(NSLOTT,at,ft),&datat,&Q,&X);

Qb = 1;

if(extgate == 1) {
Qb = 0;
CAMAC(NAF(NSLOTT2,at,ft),&datat,&Qb,&X);
}

}while(Q * Qb != 1);

F(8)・A(0): Test LAM.Q=1 if LAM is set.

ここで、Q=1にならず、ループがまわり続けてしまいます。
KineticSystemsのクレートコントローラ、SunOS、FORTRANで同じことができていました。
なぜ、うまくいかないのでしょう?

添付ファイル: SQTtest.c (13.9 kb)


Re: camdrv
2002 年 6 月 13 日 20 時 7 分
投稿者: 榎本三四郎

とりあえず F8 がちゃんと動作しているかを調べるだけの簡単な
プログラムでテストするほうがいいと思います。F8 を 200ms 間隔で
発行して、Q を表示するプログラムを作ってみました(添付ファイル)。

私の環境 (Linux2.4 + CC7000/ISA + RPC-022) では、ちゃんと動作
しました。以下は、1 Hz のパルスを林栄の ADC(RPC-022) のゲートにいれて、
プログラムを実行した結果です。

% gcc -o testlam_test testlam_test.c camlib.o
% ./testlam_test 
0-0-0-1-0-0-0-0-1-0-0-0-0-1-0-0-0-0-1-0-0-0-0-1-0-0-0-1-0-

だいたい5回に1回くらい Q に 1 が返されていることが分かります。


添付ファイル: testlam_test.c (861 byte)
うまくいきました
2002 年 6 月 16 日 22 時 20 分
投稿者: 井垣 友克

おしゃるとおりにF(8)がちゃんと動作しているか確認しました。ちゃんと動作していました。榎本さんに書いて頂いた、プログラムをいじっているうちに、別のことがわかりました。usleep にヒントを得ました。原因は完全に特定できていませんが、Calibration moduleにパルスを出させる命令を発してから、実際にパルスが出るまでにかかる時間のせいだろうと思います。二ヶ所にusleepを入れたら問題なく動くようになりました。

添付ファイル: SQTtest.c (17.0 kb)


このスレッドに記事を投稿する