mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-04-21 03:10:02 +02:00
eiger server: blocking software trigger
This commit is contained in:
parent
129ec6930f
commit
cf7828e0ce
@ -1000,6 +1000,18 @@ int Feb_Control_StopAcquisition() { return Feb_Control_Reset(); }
|
|||||||
|
|
||||||
int Feb_Control_SoftwareTrigger() {
|
int Feb_Control_SoftwareTrigger() {
|
||||||
if (Feb_Control_activated) {
|
if (Feb_Control_activated) {
|
||||||
|
// read exp toggle value
|
||||||
|
int prev_toggle = 0;
|
||||||
|
unsigned int value = 0;
|
||||||
|
if (!Feb_Interface_ReadRegister(Feb_Control_AddressToAll,
|
||||||
|
FEB_REG_STATUS, &value)) {
|
||||||
|
LOG(logERROR, ("Could not read FEB_REG_STATUS reg\n"));
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
int prev_toggle = ((value & FEB_REG_STATUS_EXP_TGL_MSK) >>
|
||||||
|
FEB_REG_STATUS_EXP_TGL_OFST);
|
||||||
|
|
||||||
|
// send software trigger
|
||||||
unsigned int orig_value = 0;
|
unsigned int orig_value = 0;
|
||||||
if (!Feb_Interface_ReadRegister(Feb_Control_AddressToAll(),
|
if (!Feb_Interface_ReadRegister(Feb_Control_AddressToAll(),
|
||||||
DAQ_REG_CHIP_CMDS, &orig_value)) {
|
DAQ_REG_CHIP_CMDS, &orig_value)) {
|
||||||
@ -1024,6 +1036,32 @@ int Feb_Control_SoftwareTrigger() {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
LOG(logINFO, ("Software Internal Trigger Sent!\n"));
|
LOG(logINFO, ("Software Internal Trigger Sent!\n"));
|
||||||
|
|
||||||
|
// wait for trigger for 20ms
|
||||||
|
usleep(20 * 1000);
|
||||||
|
if (!Feb_Interface_ReadRegister(Feb_Control_AddressToAll,
|
||||||
|
FEB_REG_STATUS, &value)) {
|
||||||
|
LOG(logERROR, ("Could not read FEB_REG_STATUS reg\n"));
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
int toggle = ((value & FEB_REG_STATUS_EXP_TGL_MSK) >>
|
||||||
|
FEB_REG_STATUS_EXP_TGL_OFST);
|
||||||
|
|
||||||
|
// no toggle, so no trigger
|
||||||
|
if (toggle == prev_toggle) {
|
||||||
|
LOG(logERROR, ("Software trigger failed. No exposure toggle "
|
||||||
|
"detected in 20ms.\n"));
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// read that it exposed
|
||||||
|
int exposure =
|
||||||
|
((value & FEB_REG_STATUS_EXP_MSK) >> FEB_REG_STATUS_EXP_OFST);
|
||||||
|
if (!exposure) {
|
||||||
|
LOG(logERROR,
|
||||||
|
("Software trigger failed. No exposure detected in 20ms.\n"));
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@ -1883,15 +1921,15 @@ int Feb_Control_GetLeftFPGATemp() {
|
|||||||
if (!Feb_Control_activated) {
|
if (!Feb_Control_activated) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
unsigned int temperature = 0;
|
unsigned int value = 0;
|
||||||
if (!Feb_Interface_ReadRegister(Feb_Control_leftAddress, FEB_REG_STATUS,
|
if (!Feb_Interface_ReadRegister(Feb_Control_leftAddress, FEB_REG_STATUS,
|
||||||
&temperature)) {
|
&value)) {
|
||||||
LOG(logERROR, ("Trouble reading FEB_REG_STATUS reg to get left feb "
|
LOG(logERROR, ("Trouble reading FEB_REG_STATUS reg to get left feb "
|
||||||
"temperature\n"));
|
"temperature\n"));
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
unsigned int temperature =
|
||||||
temperature = temperature >> 16;
|
((value & FEB_REG_STATUS_TEMP_MSK) >> FEB_REG_STATUS_TEMP_OFST);
|
||||||
temperature =
|
temperature =
|
||||||
((((float)(temperature) / 65536.0f) / 0.00198421639f) - 273.15f) *
|
((((float)(temperature) / 65536.0f) / 0.00198421639f) - 273.15f) *
|
||||||
1000; // Static conversation, copied from xps sysmon standalone driver
|
1000; // Static conversation, copied from xps sysmon standalone driver
|
||||||
|
@ -31,6 +31,14 @@
|
|||||||
#define DAQ_REG_RO_OFFSET 20
|
#define DAQ_REG_RO_OFFSET 20
|
||||||
#define DAQ_REG_STATUS (DAQ_REG_RO_OFFSET + 0) // also pg and fifo status register
|
#define DAQ_REG_STATUS (DAQ_REG_RO_OFFSET + 0) // also pg and fifo status register
|
||||||
#define FEB_REG_STATUS (DAQ_REG_RO_OFFSET + 3)
|
#define FEB_REG_STATUS (DAQ_REG_RO_OFFSET + 3)
|
||||||
|
|
||||||
|
#define FEB_REG_STATUS_EXP_OFST (5)
|
||||||
|
#define FEB_REG_STATUS_EXP_MSK (0x00000001 << FEB_REG_STATUS_EXP_OFST)
|
||||||
|
#define FEB_REG_STATUS_EXP_TGL_OFST (6)
|
||||||
|
#define FEB_REG_STATUS_EXP_TGL_MSK (0x00000001 << FEB_REG_STATUS_EXP_TGL_OFST)
|
||||||
|
#define FEB_REG_STATUS_TEMP_OFST (16)
|
||||||
|
#define FEB_REG_STATUS_TEMP_MSK (0x0000FFFF << FEB_REG_STATUS_TEMP_OFST)
|
||||||
|
|
||||||
#define MEAS_SUBPERIOD_REG (DAQ_REG_RO_OFFSET + 4)
|
#define MEAS_SUBPERIOD_REG (DAQ_REG_RO_OFFSET + 4)
|
||||||
#define MEAS_PERIOD_REG (DAQ_REG_RO_OFFSET + 5)
|
#define MEAS_PERIOD_REG (DAQ_REG_RO_OFFSET + 5)
|
||||||
// clang-format on
|
// clang-format on
|
||||||
|
Loading…
x
Reference in New Issue
Block a user