Interrupt
- VME で Interrupt をかける際のメモ。Babirl (RIKEN RIBF 標準の DAQ system) で使うことを想定。
Memo
- LUPO と Mesytec MADC32 を一緒に使って Interrupt を書ける場合、モジュールを挿す位置によって、Interrupt がかからない場合があるらしい。LUPO で interrupt をかけたい場合、VME controller と LUPO の間に MADC32 を入れてはいけない?同じように、MADC32 で interrupt をかけたい場合、VME controller と MADC32 の間に LUPO を入れてはいけない?とにかくこれらは相性が悪いらしい。
--> チェックが必要。
- Interrupt の解除のされ方には2種類ある。
- Release On ACKnowledge (ROAK or ROACK)
- Release On Register Access (RORA)
- ROAK は interrupt vector を read しないと interrupt が解除されない。よって、babirl の場合 evt.c で以下のように書く必要がある。
void evt(void){ /* Event */ vme_read_intvector(); // read interrupt vector init_event(); // Initialize Event ... }
- RORA は モジュールにアクセスした段階で interrupt が解除される。
- RORA: CAEN のモジュール
- ROAK: Mesytec MADC32, RPV130