| ||||||||
| ||||||||
| ||||||||
|
CC/NETでNBBQを使うときは、基本的には他のコントローラと同じですが、CC/NETの特徴であるまとめ読みモード(PIO、DMA)を使う場合に専用の関数&defineを使います。
以下のように簡単に使えるようなコマンドを用意ありますが、より自由に使いたい人はccnetevt.cを参考にしてください。
以下の場合は16Bit読み出しにしか対応していません。Segment IDも1つしか使えません。
複数のSegment IDを使えるように賢くしたものが用意してありますが、また後日アップロードします。
#define BBRL #define MAXBUFF 0x1e00 #define DBUFF #define CMDLEN 300 // CC/NETでまとめ読みモードの場合の最大コマンド数 #define CAMAC #define CAMACINT #define CCNET #define LAMN 0 // LAMに使うモジュール。CC/NETのTrigを使う場合は0にしておいてください。 #define OREG 22 #define QDC1 18 #define TDC1 20
CMDLENが初期設定として必要となります。まとめ読みモードでの最大コマンド(フレーム)数を設定します。最大で16kまでです。
nbbqdrvロード時にメモリ領域を確保するのに使います。この数で読み出し速度は変わりませんので、50〜500ぐらいの間で適当につけておけばよいと思います。
startup.cの記述
void startup(void){ short sval = 1; /* Startup Function */ ccnet_crate_reset(); check_lam(); /* Dummy LAM definition */ crate_define_lam(LAMN); /* Create ccnet command frame */ ccnetstartup(); /* Create user command frame */ //usr_ccnet_gen_init(USR_CMDLEN); //for(i=0;i<SCRLEN;i++){ //usr_ccnet_gen_cc(CLKSCR, i, 0, val); //} /* Clear modules */ //control_mod(0, N, 0, 9); // Clear command //write_data(0, N, 0, 17, VAL); // via out put register control_mod(0, LAMN, 0, 26); control_mod(0, LAMN, 0, 9); control_mod(0,QDC1,0,9); control_mod(0,TDC1,0,9); control_mod(0,TDC1,0,24); control_mod(0,QDC1,0,24); write_data(0, OREG, 0, 17, sval); /* Set trigger mode */ ccnet_trig(); // CC/NETのTrig入力でLAMをかける場合 ccnet_pulsemode(); // CC/NETのBusy出力をパルスモードで使う場合 ccnet_pulse(); // CC/NETのBusy出力から1発パルスを出す }
startup.cでscalerを読むばあいは場合はusr_ccnet_gen_ccでコマンドを追加していきます。
読み出しの場合でも、valに適当な数字を入れておきます。
CC/NETのTrig入力を使う場合は、ccnet_pulse()も併せて書いておくようにしてください。
ccnetsegment.cの記述
void ccnetsegment(void){ /* Event */ init_segment(1); read_segndata(8,0,QDC1,0,0); end_segment(); init_segment(2); read_segndata(8,0,TDC1,0,0); end_segment(); control_mod(0, QDC1, 0, 9); control_mod(0, TDC1, 0, 9); }
evt.cのかわりにccnsetsegment.cを編集します。evt.cは書き換えません。
clear.cの記述void clear(void){ ccnet_pulse(); }
clear.cでクリアコマンドを発行しておきます。ccnet_trig()を使う場合はかならずccnet_pulse()を書いておいてください。
また、Triggerが入力されないとBusy出力からパルスは出ません。
Last Update: 2015/3/5
Hidetada Baba
baba @ ribf.riken.jp