mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-04-22 14:38:14 +02:00
adcinvert for jungfrau, gui for jungfrau dacs
This commit is contained in:
parent
4aba8b6ac0
commit
11ea071543
@ -643,27 +643,6 @@ Displays minimum, maximum and sum of values for each plot.
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="chkADCInvert">
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string><nobr>
|
||||
Displays minimum, maximum and sum of values for each plot.
|
||||
<nobr></string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>ADC Invert</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="horizontalSpacer_17">
|
||||
<property name="orientation">
|
||||
|
@ -55,7 +55,6 @@ class qDrawPlot : public QWidget, private Ui::PlotObject {
|
||||
void ResetAccumulate();
|
||||
void DisplayStatistics(bool enable);
|
||||
void EnableGainPlot(bool enable);
|
||||
void EnableADCInvert(bool enable);
|
||||
void ClonePlot();
|
||||
void SavePlot();
|
||||
|
||||
@ -148,7 +147,6 @@ class qDrawPlot : public QWidget, private Ui::PlotObject {
|
||||
QString fileSaveName{"Image"};
|
||||
bool hasGainData{false};
|
||||
bool isGainDataExtracted{false};
|
||||
bool isADCInvert{false};
|
||||
bool disableZoom{false};
|
||||
|
||||
int progress{0};
|
||||
|
@ -417,11 +417,6 @@ void qDrawPlot::EnableGainPlot(bool enable) {
|
||||
hasGainData = enable;
|
||||
}
|
||||
|
||||
void qDrawPlot::EnableADCInvert(bool enable) {
|
||||
FILE_LOG(logINFO) << (enable ? "Enabling" : "Disabling") << " ADC Invert";
|
||||
isADCInvert = enable;
|
||||
}
|
||||
|
||||
void qDrawPlot::SetSaveFileName(QString val) {
|
||||
FILE_LOG(logDEBUG) << "Setting Clone/Save File Name to " << val.toAscii().constData();
|
||||
fileSaveName = val;
|
||||
@ -904,63 +899,21 @@ void qDrawPlot::toDoublePixelData(double *dest, char *source, int size, int data
|
||||
|
||||
// show gain plot
|
||||
if (gaindest != NULL) {
|
||||
// adcinvert
|
||||
if (isADCInvert) {
|
||||
for (ichan = 0; ichan < size; ++ichan) {
|
||||
uint16_t temp = (*((u_int16_t *)source));
|
||||
if (temp == 0xFFFF) {
|
||||
gaindest[ichan] = 0xFFFF;
|
||||
dest[ichan] = 0xFFFF;
|
||||
} else {
|
||||
gaindest[ichan] = ((temp & 0xC000) >> 14);
|
||||
dest[ichan] = 0x4000 - (temp & 0x3FFF);
|
||||
}
|
||||
source += 2;
|
||||
}
|
||||
}
|
||||
// normal
|
||||
else {
|
||||
for (ichan = 0; ichan < size; ++ichan) {
|
||||
uint16_t temp = (*((u_int16_t *)source));
|
||||
if (temp == 0xFFFF) {
|
||||
gaindest[ichan] = 0xFFFF;
|
||||
dest[ichan] = 0xFFFF;
|
||||
} else {
|
||||
gaindest[ichan] = ((temp & 0xC000) >> 14);
|
||||
dest[ichan] = (temp & 0x3FFF);
|
||||
}
|
||||
source += 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// only data plot
|
||||
else {
|
||||
// adcinvert
|
||||
if (isADCInvert) {
|
||||
for (ichan = 0; ichan < size; ++ichan) {
|
||||
uint16_t temp = (*((u_int16_t *)source));
|
||||
if (temp == 0xFFFF) {
|
||||
dest[ichan] = 0xFFFF;
|
||||
} else {
|
||||
dest[ichan] = 0x4000 - (temp & 0x3FFF);
|
||||
}
|
||||
dest[ichan] = ((*((u_int16_t *)source)) & 0x3FFF);
|
||||
source += 2;
|
||||
}
|
||||
}
|
||||
// normal
|
||||
else {
|
||||
for (ichan = 0; ichan < size; ++ichan) {
|
||||
uint16_t temp = (*((u_int16_t *)source));
|
||||
if (temp == 0xFFFF) {
|
||||
dest[ichan] = 0xFFFF;
|
||||
} else {
|
||||
dest[ichan] = (temp & 0x3FFF);
|
||||
}
|
||||
source += 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -276,13 +276,29 @@ slsDetectorDefs::dacIndex qTabDeveloper::getSLSIndex(slsDetectorDefs::detectorTy
|
||||
break;
|
||||
|
||||
case slsDetectorDefs::JUNGFRAU:
|
||||
if (index >= 0 && index < (int)dacWidgets.size()) {
|
||||
return (slsDetectorDefs::dacIndex)index;
|
||||
}
|
||||
if (index == (int)dacWidgets.size()) {
|
||||
switch (index) {
|
||||
case 0:
|
||||
return slsDetectorDefs::VB_COMP;
|
||||
case 1:
|
||||
return slsDetectorDefs::VDD_PROT;
|
||||
case 2:
|
||||
return slsDetectorDefs::VIN_COM;
|
||||
case 3:
|
||||
return slsDetectorDefs::VREF_PRECH;
|
||||
case 4:
|
||||
return slsDetectorDefs::VB_PIXBUF;
|
||||
case 5:
|
||||
return slsDetectorDefs::VB_DS;
|
||||
case 6:
|
||||
return slsDetectorDefs::VREF_DS;
|
||||
case 7:
|
||||
return slsDetectorDefs::VREF_COMP;
|
||||
case 8:
|
||||
return slsDetectorDefs::TEMPERATURE_ADC;
|
||||
}
|
||||
default:
|
||||
throw sls::RuntimeError(std::string("Unknown dac/adc index") + std::to_string(index));
|
||||
}
|
||||
break;
|
||||
|
||||
case slsDetectorDefs::MOENCH:
|
||||
if (index >= 0 && index < (int)dacWidgets.size()) {
|
||||
|
@ -67,7 +67,6 @@ void qTabPlot::SetupWidgetWindow() {
|
||||
case slsDetectorDefs::JUNGFRAU:
|
||||
case slsDetectorDefs::MOENCH:
|
||||
chkGainPlot->setEnabled(true);
|
||||
chkADCInvert->setEnabled(true);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
@ -130,9 +129,6 @@ void qTabPlot::Initialization() {
|
||||
// gap pixels
|
||||
if (chkGapPixels->isEnabled())
|
||||
connect(chkGapPixels, SIGNAL(toggled(bool)), this, SLOT(SetGapPixels(bool)));
|
||||
// adc invert
|
||||
if (chkADCInvert->isEnabled())
|
||||
connect(chkADCInvert, SIGNAL(toggled(bool)), plot, SLOT(EnableADCInvert(bool)));
|
||||
|
||||
// Save, clone
|
||||
connect(btnSave, SIGNAL(clicked()), plot, SLOT(SavePlot()));
|
||||
|
Binary file not shown.
@ -525,7 +525,21 @@ int setDynamicRange(int dr){
|
||||
return DYNAMIC_RANGE;
|
||||
}
|
||||
|
||||
void setADCInvertRegister(uint32_t val) {
|
||||
FILE_LOG(logINFO, ("Setting ADC Port Invert Reg to 0x%x\n", val));
|
||||
uint32_t defaultValue = (isHardwareVersion2() ? ADC_PORT_INVERT_BOARD2_VAL : ADC_PORT_INVERT_VAL);
|
||||
uint32_t changeValue = defaultValue ^ val;
|
||||
FILE_LOG(logINFO, ("\t default: 0x%x, final:0x%x\n", defaultValue, changeValue));
|
||||
bus_w(ADC_PORT_INVERT_REG, changeValue);
|
||||
}
|
||||
|
||||
uint32_t getADCInvertRegister() {
|
||||
uint32_t readValue = bus_r(ADC_PORT_INVERT_REG);
|
||||
int32_t defaultValue = (isHardwareVersion2() ? ADC_PORT_INVERT_BOARD2_VAL : ADC_PORT_INVERT_VAL);
|
||||
uint32_t val = defaultValue ^ readValue;
|
||||
FILE_LOG(logDEBUG1, ("\tread:0x%x, default:0x%x returned:0x%x\n", readValue, defaultValue, val));
|
||||
return val;
|
||||
}
|
||||
|
||||
|
||||
/* parameters - speed, readout */
|
||||
|
Binary file not shown.
@ -33,7 +33,7 @@
|
||||
/** Other Definitions */
|
||||
#define BIT16_MASK (0xFFFF)
|
||||
|
||||
#define DAC_NAMES "vcassh", "vth2", "vshaper", "vshaperneg", "vipreout", "vth3", "vth1", "vicin", "vcas", "vpreamp", "vph", "vipre", "viinsh", "vpl", "vtrim", "vdcsh"
|
||||
#define DAC_NAMES "vcassh", "vth2", "vshaper", "vshaperneg", "vipre_out", "vth3", "vth1", "vicin", "vcas", "vpreamp", "vph", "vipre", "viinsh", "vpl", "vtrim", "vdcsh"
|
||||
/* Enums */
|
||||
enum CLKINDEX {RUN_CLK, TICK_CLK, SAMPLING_CLK, NUM_CLOCKS};
|
||||
enum DACINDEX {M_CASSH, M_VTH2, M_VRFSH, M_VRFSHNPOL, M_VIPRE_OUT, M_VTH3, M_VTH1, M_VICIN, M_CAS, M_VRF, M_VPH, M_VIPRE, M_VIINSH, M_VPL, M_VTRIM, M_VDCSH};
|
||||
|
@ -135,6 +135,10 @@ int setDynamicRange(int dr);
|
||||
int setROI(ROI arg);
|
||||
ROI getROI();
|
||||
#endif
|
||||
#ifdef JUNGFRAUD
|
||||
void setADCInvertRegister(uint32_t val);
|
||||
uint32_t getADCInvertRegister();
|
||||
#endif
|
||||
#if defined(CHIPTESTBOARDD) || defined(MOENCHD)
|
||||
int setADCEnableMask(uint32_t mask);
|
||||
uint32_t getADCEnableMask();
|
||||
|
@ -953,30 +953,30 @@ int set_dac(int file_des) {
|
||||
#elif JUNGFRAUD
|
||||
case HIGH_VOLTAGE:
|
||||
break;
|
||||
case VB_DS:
|
||||
serverDacIndex = J_VB_DS;
|
||||
break;
|
||||
case VB_COMP:
|
||||
serverDacIndex = J_VB_COMP;
|
||||
break;
|
||||
case VDD_PROT:
|
||||
serverDacIndex = J_VDD_PROT;
|
||||
break;
|
||||
case VIN_COM:
|
||||
serverDacIndex = J_VIN_COM;
|
||||
break;
|
||||
case VREF_PRECH:
|
||||
serverDacIndex = J_VREF_PRECH;
|
||||
break;
|
||||
case VB_PIXBUF:
|
||||
serverDacIndex = J_VB_PIXBUF;
|
||||
break;
|
||||
case VB_DS:
|
||||
serverDacIndex = J_VB_DS;
|
||||
break;
|
||||
case VREF_DS:
|
||||
serverDacIndex = J_VREF_DS;
|
||||
break;
|
||||
case VREF_COMP:
|
||||
serverDacIndex = J_VREF_COMP;
|
||||
break;
|
||||
case VREF_PRECH:
|
||||
serverDacIndex = J_VREF_PRECH;
|
||||
break;
|
||||
case VIN_COM:
|
||||
serverDacIndex = J_VIN_COM;
|
||||
break;
|
||||
case VDD_PROT:
|
||||
serverDacIndex = J_VDD_PROT;
|
||||
break;
|
||||
#endif
|
||||
|
||||
default:
|
||||
@ -3829,7 +3829,7 @@ int set_adc_invert(int file_des) {
|
||||
return printSocketReadError();
|
||||
FILE_LOG(logDEBUG1, ("Seting ADC Invert to %u\n", arg));
|
||||
|
||||
#if (!defined(MOENCHD)) && (!defined(CHIPTESTBOARDD))
|
||||
#if (!defined(MOENCHD)) && (!defined(CHIPTESTBOARDD)) && (!defined(JUNGFRAUD))
|
||||
functionNotImplemented();
|
||||
#else
|
||||
// only set
|
||||
@ -3854,7 +3854,7 @@ int get_adc_invert(int file_des) {
|
||||
|
||||
FILE_LOG(logDEBUG1, ("Getting ADC Invert register \n"));
|
||||
|
||||
#if (!defined(MOENCHD)) && (!defined(CHIPTESTBOARDD))
|
||||
#if (!defined(MOENCHD)) && (!defined(CHIPTESTBOARDD)) && (!defined(JUNGFRAUD))
|
||||
functionNotImplemented();
|
||||
#else
|
||||
// get
|
||||
|
@ -1538,7 +1538,7 @@ class CmdProxy {
|
||||
"[bitmask]\n\t[Ctb] ADC Enable Mask.");
|
||||
|
||||
INTEGER_COMMAND_HEX(adcinvert, getADCInvert, setADCInvert, stoiHex,
|
||||
"[bitmask]\n\t[Ctb] ADC Inversion Mask.");
|
||||
"[bitmask]\n\t[Ctb][Jungfrau] ADC Inversion Mask.\n\t[Jungfrau] Inversions on top of the default mask.");
|
||||
|
||||
INTEGER_COMMAND(extsampling, getExternalSampling, setExternalSampling, std::stoi,
|
||||
"[0, 1]\n\t[Ctb] Enable for external sampling signal to extsamplingsrc signal for digital data. For advanced users only.");
|
||||
|
@ -4,9 +4,9 @@
|
||||
#define APIRECEIVER 0x190722
|
||||
#define APIGUI 0x190723
|
||||
#define APIMOENCH 0x190820
|
||||
#define APIJUNGFRAU 0x191029
|
||||
#define APICTB 0x191029
|
||||
#define APIGOTTHARD 0x191029
|
||||
#define APIGOTTHARD2 0x191029
|
||||
#define APIEIGER 0x191029
|
||||
#define APIMYTHEN3 0x191030
|
||||
#define APIJUNGFRAU 0x191030
|
||||
|
Loading…
x
Reference in New Issue
Block a user