KiNOKO-DAQ 関連情報 掲示板

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

TDCモジュールのセットアップ
2018 年 12 月 18 日 12 時 0 分
投稿者: 山本

こんにちは。
横浜国立大学、B4の山本と申します。
camdrvをいつも使わせていただき、大変助かっております。ありがとうございます。

年の瀬の忙しい時期に質問をしてしまい、申し訳ありません。
今回お聞きしたいのは、CAMACモジュールのセットアップのために値を書き込む(入力する)必要があるのですが、そのために必要な関数のことです。

上記の通り、CAMACモジュール(Technoland社のTDC, C-TS105)のセットアップのために値を入力する必要があります。説明書の記載から一例を取り出しますと、

F=17, A=0, WDATA=0xAB

という値を書き込みたい(入力したい)のです。
しかし、CAMAC(int naf, int *data, int *q, int *x)のファンクションでは、読み出ししかできないと思います。

どのような関数を使えばセットアップに必要な入力ができるのか、もしそのような関数がなければどのような関数をどのコードに追加するべきなのか、これらをご教示いただければと思います。
よろしくお願いいたします。

C-TS105の説明書も添付いたします。
また、現在の動作環境は以下の通りです。
PC OS: CentOS7
使っているバージョン: Linux2.6_CCP_PCI_2703
クレート: Wienerのminiタイプ
クレートコントローラ: HOSHIN C001
他のモジュールでは正しく動作することを確認しており、何らかの不具合があるというわけではないと思います。

添付ファイル: CTS105取説_141110.pdf (497 kb)


TDCモジュールのセットアップ
2018 年 12 月 18 日 12 時 46 分
投稿者: 山本

説明書が開けないかもしれないと思ったので、ファイル名を変更してアップロードしました。

添付ファイル: CTS105_instruction_141110.pdf (497 kb)



2018 年 12 月 18 日 13 時 19 分
投稿者: 榎本三四郎

山本様,

CAMAC(int naf, int *data, int *q, int *x)関数で,data 引数にデータ値(0xab とか) を格納した変数へのポインタを渡せば,CAMAC の書き込みサイクルが実行されます.

int n = 1, f = 17, a = 0, data = 0xab, q, x;
CAMAC(NAF(n, a, f), &data, &q, &x);

みたいな感じです.

toyocamac.h の方を使うなら,
camac_24(n, a, f, &data);

となります.

もしこれでちゃんと動作しないなら,別のところに問題がある可能性があります.その場合は,もう一度お知らせください.



TDCモジュールのセットアップ
2018 年 12 月 18 日 16 時 16 分
投稿者: 山本

早急な返信ありがとうございます。

> CAMAC(int naf, int *data, int *q, int *x)関数で,data 引数にデータ値(0xab とか) を格納した変数> へのポインタを渡せば,CAMAC の書き込みサイクルが実行されます.
>
> int n = 1, f = 17, a = 0, data = 0xab, q, x;
> CAMAC(NAF(n, a, f), &data, &q, &x);
>
> みたいな感じです.

わかりやすい説明ありがとうございます。
書き込みについては理解できました。

記載していただいたように、
CAMAC(NAF(1, 0, 17), &data, &q, &x);
とした後に、
printf("DATA=%x, Q=%d, X=%d\n", data, q, x);
とすると、出力結果が、
DATAがabとは異なる値になってしまいました。(すみません、正確な値がわかったら追記します。だいぶ大きな値になったのは覚えています。)
それは正常な動作なのでしょうか?


TDCモジュールのセットアップ
2018 年 12 月 18 日 21 時 45 分
投稿者: 山本

DATAの値ですが、毎回異なる値となります。

1回目は0でしたが、2回目はf8dfb7、3回目はdbcfffでした。


2018 年 12 月 19 日 10 時 32 分
投稿者: 榎本三四郎

CAMAC() 関数では、引数に渡されたデータ(ポインタの指す先の値)を CAMAC のモジュールに渡し、モジュールから返された値を data ポインタが指す変数に戻します。F17 は、CAMAC の仕様により、書き込みアクションと規定されており、この場合、data に戻される値は「不定」です。data 変数に意味のある値を戻すのは、F0 から F15 の間だけです。

F17 で設定した値をどの F で読み戻せるかは、モジュールのデザインによります。マニュアルを斜め読みしたところ、このモジュールでは、F17 で設定した値を読み戻す機能はないように見えます。その場合は、F17 による書き込みが成功していると仮定して先に進むしかないと思います。(モジュールへの書き込み自体が成功したかどうかは、No-Q や No-X がゼロであることを確認すればわかりますが、モジュール内で正常に設定されたかどうかは別問題です。なので、親切なモジュールでは、内部レジスタに設定された値を読み戻すことができるものもあります。)

もし、F17 書き込みが成功していないように見えるなら、CAMAC のデータインジケータモジュールみたいなもの(もしあれば)を使うことができます。このモジュールは、F, A, data, X, Q などの値を、LED で表示するので、問題の切り分けに便利です。もしなければ、ある程度の試行錯誤が必要になるかもしれません。


TDCモジュールのセットアップ
2018 年 12 月 19 日 12 時 55 分
投稿者: 山本

非常にわかりやすい説明ありがとうございます。
書き込んだ後の値を見ることに意味はないということですね。

昨日から今日にかけて、試行錯誤を繰り返したところ、F(17)の書き込みには成功しているようです。なので、ひとまず現状のものでさらに試行錯誤を繰り返そうと思います。

CAMAC関数に対する理解が深まり、非常に助かりました。
今後ともよろしくお願いします。

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