mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-06-13 05:17:13 +02:00
fix
This commit is contained in:
@ -686,7 +686,7 @@ void allocateDetectorStructureMemory() {
|
|||||||
void setupDetector() {
|
void setupDetector() {
|
||||||
|
|
||||||
allocateDetectorStructureMemory();
|
allocateDetectorStructureMemory();
|
||||||
resetToDefaultDacs(false);
|
resetToDefaultDacs(0);
|
||||||
#ifdef VIRTUAL
|
#ifdef VIRTUAL
|
||||||
sharedMemory_setStatus(IDLE);
|
sharedMemory_setStatus(IDLE);
|
||||||
#endif
|
#endif
|
||||||
|
@ -49,6 +49,7 @@ int highvoltage = 0;
|
|||||||
int dacValues[NDAC] = {};
|
int dacValues[NDAC] = {};
|
||||||
int onChipdacValues[ONCHIP_NDAC][NCHIP] = {};
|
int onChipdacValues[ONCHIP_NDAC][NCHIP] = {};
|
||||||
int defaultDacValues[NDAC] = {};
|
int defaultDacValues[NDAC] = {};
|
||||||
|
int hardCodedDefaultDacValues[NDAC] = {};
|
||||||
int defaultOnChipdacValues[ONCHIP_NDAC][NCHIP] = {};
|
int defaultOnChipdacValues[ONCHIP_NDAC][NCHIP] = {};
|
||||||
int injectedChannelsOffset = 0;
|
int injectedChannelsOffset = 0;
|
||||||
int injectedChannelsIncrement = 0;
|
int injectedChannelsIncrement = 0;
|
||||||
@ -393,6 +394,7 @@ void setupDetector() {
|
|||||||
memset(dacValues, 0, sizeof(dacValues));
|
memset(dacValues, 0, sizeof(dacValues));
|
||||||
for (int i = 0; i < NDAC; ++i) {
|
for (int i = 0; i < NDAC; ++i) {
|
||||||
defaultDacValues[i] = -1;
|
defaultDacValues[i] = -1;
|
||||||
|
hardCodedDefaultDacValues[i] = -1;
|
||||||
}
|
}
|
||||||
for (int i = 0; i < ONCHIP_NDAC; ++i) {
|
for (int i = 0; i < ONCHIP_NDAC; ++i) {
|
||||||
for (int j = 0; j < NCHIP; ++j) {
|
for (int j = 0; j < NCHIP; ++j) {
|
||||||
@ -484,9 +486,8 @@ void setupDetector() {
|
|||||||
int resetToDefaultDacs(int hardReset) {
|
int resetToDefaultDacs(int hardReset) {
|
||||||
// reset defaults to hardcoded defaults
|
// reset defaults to hardcoded defaults
|
||||||
if (hardReset) {
|
if (hardReset) {
|
||||||
const int vals[] = DEFAULT_DAC_VALS;
|
|
||||||
for (int i = 0; i < NDAC; ++i) {
|
for (int i = 0; i < NDAC; ++i) {
|
||||||
defaultDacValues[i] = vals[i];
|
defaultDacValues[i] = hardCodedDefaultDacValues[i];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// reset dacs to defaults
|
// reset dacs to defaults
|
||||||
@ -839,6 +840,7 @@ int readConfigFile() {
|
|||||||
|
|
||||||
// set default dac variables
|
// set default dac variables
|
||||||
defaultDacValues[idac] = value;
|
defaultDacValues[idac] = value;
|
||||||
|
hardCodedDefaultDacValues[idac] = value;
|
||||||
|
|
||||||
// set dac
|
// set dac
|
||||||
setDAC(idac, value, 0);
|
setDAC(idac, value, 0);
|
||||||
|
@ -406,7 +406,7 @@ void setupDetector() {
|
|||||||
DAC_MAX_MV);
|
DAC_MAX_MV);
|
||||||
LTC2620_Disable();
|
LTC2620_Disable();
|
||||||
LTC2620_Configure();
|
LTC2620_Configure();
|
||||||
resetToDefaultDacs(false);
|
resetToDefaultDacs(0);
|
||||||
|
|
||||||
// temp
|
// temp
|
||||||
bus_w(TEMP_SPI_IN_REG, TEMP_SPI_IN_IDLE_MSK);
|
bus_w(TEMP_SPI_IN_REG, TEMP_SPI_IN_IDLE_MSK);
|
||||||
|
@ -426,7 +426,7 @@ void setupDetector() {
|
|||||||
DAC_MAX_MV);
|
DAC_MAX_MV);
|
||||||
LTC2620_Disable();
|
LTC2620_Disable();
|
||||||
LTC2620_Configure();
|
LTC2620_Configure();
|
||||||
resetToDefaultDacs(false);
|
resetToDefaultDacs(0);
|
||||||
|
|
||||||
// altera pll
|
// altera pll
|
||||||
ALTERA_PLL_SetDefines(
|
ALTERA_PLL_SetDefines(
|
||||||
@ -471,25 +471,59 @@ void setupDetector() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int resetToDefaultDacs(int hardReset) {
|
int resetToDefaultDacs(int hardReset) {
|
||||||
|
LOG(logINFOBLUE, ("Resetting %s to Default Dac values\n",
|
||||||
|
(hardReset == 1 ? "hard" : "")));
|
||||||
|
|
||||||
// reset defaults to hardcoded defaults
|
// reset defaults to hardcoded defaults
|
||||||
if (hardReset) {
|
if (hardReset) {
|
||||||
const int vals[] = DEFAULT_DAC_VALS;
|
const int vals[] = DEFAULT_DAC_VALS;
|
||||||
for (int i = 0; i < NDAC; ++i) {
|
for (int i = 0; i < NDAC; ++i) {
|
||||||
defaultDacValues[i] = vals[i];
|
defaultDacValues[i] = vals[i];
|
||||||
}
|
}
|
||||||
|
const int vals_G0[] = SPECIAL_DEFAULT_DYNAMIC_GAIN_VALS;
|
||||||
|
for (int i = 0; i < NSPECIALDACS; ++i) {
|
||||||
|
defaultDacValue_G0[i] = vals_G0[i];
|
||||||
|
}
|
||||||
|
const int vals_HG0[] = SPECIAL_DEFAULT_DYNAMICHG0_GAIN_VALS;
|
||||||
|
for (int i = 0; i < NSPECIALDACS; ++i) {
|
||||||
|
defaultDacValue_HG0[i] = vals_HG0[i];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// remember settings
|
||||||
|
enum detectorSettings oldSettings = thisSettings;
|
||||||
|
|
||||||
// reset dacs to defaults
|
// reset dacs to defaults
|
||||||
int ret = OK;
|
const int specialDacs[] = SPECIALDACINDEX;
|
||||||
LOG(logINFOBLUE, ("Setting Default Dac values\n"));
|
|
||||||
for (int i = 0; i < NDAC; ++i) {
|
for (int i = 0; i < NDAC; ++i) {
|
||||||
setDAC((enum DACINDEX)i, defaultDacValues[i], 0);
|
int value = defaultDacValues[i];
|
||||||
if (dacValues[i] != defaultDacValues[i]) {
|
|
||||||
ret = FAIL;
|
for (int j = 0; j < NSPECIALDACS; ++j) {
|
||||||
|
// special dac: replace default value
|
||||||
|
if (specialDacs[j] == i) {
|
||||||
|
switch (oldSettings) {
|
||||||
|
case DYNAMICGAIN:
|
||||||
|
value = defaultDacValue_G0[j];
|
||||||
|
break;
|
||||||
|
case DYNAMICHG0:
|
||||||
|
value = defaultDacValue_HG0[j];
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// set to defualt
|
||||||
|
setDAC((enum DACINDEX)i, value, 0);
|
||||||
|
if (dacValues[i] != value) {
|
||||||
LOG(logERROR, ("Setting dac %d failed, wrote %d, read %d\n", i,
|
LOG(logERROR, ("Setting dac %d failed, wrote %d, read %d\n", i,
|
||||||
defaultDacValues[i], dacValues[i]));
|
value, dacValues[i]));
|
||||||
|
return FAIL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return ret;
|
return OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
int getDefaultDac(enum DACINDEX index, enum detectorSettings sett,
|
int getDefaultDac(enum DACINDEX index, enum detectorSettings sett,
|
||||||
|
@ -517,7 +517,7 @@ void setupDetector() {
|
|||||||
DAC_MAX_MV); // has to be before setvchip
|
DAC_MAX_MV); // has to be before setvchip
|
||||||
LTC2620_Disable();
|
LTC2620_Disable();
|
||||||
LTC2620_Configure();
|
LTC2620_Configure();
|
||||||
resetToDefaultDacs(false);
|
resetToDefaultDacs(0);
|
||||||
|
|
||||||
// altera pll
|
// altera pll
|
||||||
ALTERA_PLL_SetDefines(PLL_CNTRL_REG, PLL_PARAM_REG,
|
ALTERA_PLL_SetDefines(PLL_CNTRL_REG, PLL_PARAM_REG,
|
||||||
|
@ -42,7 +42,7 @@ pthread_t pthread_virtual_tid;
|
|||||||
int64_t virtual_currentFrameNumber = 2;
|
int64_t virtual_currentFrameNumber = 2;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
enum detectorSettings thisSettings;
|
enum detectorSettings thisSettings = UNINITIALIZED;
|
||||||
sls_detector_module *detectorModules = NULL;
|
sls_detector_module *detectorModules = NULL;
|
||||||
int *detectorChans = NULL;
|
int *detectorChans = NULL;
|
||||||
int *detectorDacs = NULL;
|
int *detectorDacs = NULL;
|
||||||
@ -450,7 +450,7 @@ void setupDetector() {
|
|||||||
|
|
||||||
// defaults
|
// defaults
|
||||||
setHighVoltage(DEFAULT_HIGH_VOLTAGE);
|
setHighVoltage(DEFAULT_HIGH_VOLTAGE);
|
||||||
resetToDefaultDacs(false);
|
resetToDefaultDacs(0);
|
||||||
setASICDefaults();
|
setASICDefaults();
|
||||||
setADIFDefaults();
|
setADIFDefaults();
|
||||||
|
|
||||||
@ -528,27 +528,66 @@ void setupDetector() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int resetToDefaultDacs(int hardReset) {
|
int resetToDefaultDacs(int hardReset) {
|
||||||
|
LOG(logINFOBLUE, ("Resetting %s to Default Dac values\n",
|
||||||
|
(hardReset == 1 ? "hard" : "")));
|
||||||
|
|
||||||
// reset defaults to hardcoded defaults
|
// reset defaults to hardcoded defaults
|
||||||
if (hardReset) {
|
if (hardReset) {
|
||||||
const int vals[] = DEFAULT_DAC_VALS;
|
const int vals[] = DEFAULT_DAC_VALS;
|
||||||
for (int i = 0; i < NDAC; ++i) {
|
for (int i = 0; i < NDAC; ++i) {
|
||||||
defaultDacValues[i] = vals[i];
|
defaultDacValues[i] = vals[i];
|
||||||
}
|
}
|
||||||
|
const int vals_standard[] = SPECIAL_DEFAULT_STANDARD_DAC_VALS;
|
||||||
|
for (int i = 0; i < NSPECIALDACS; ++i) {
|
||||||
|
defaultDacValue_standard[i] = vals_standard[i];
|
||||||
|
}
|
||||||
|
const int vals_fast[] = SPECIAL_DEFAULT_FAST_DAC_VALS;
|
||||||
|
for (int i = 0; i < NSPECIALDACS; ++i) {
|
||||||
|
defaultDacValue_fast[i] = vals_fast[i];
|
||||||
|
}
|
||||||
|
const int vals_highgain[] = SPECIAL_DEFAULT_HIGHGAIN_DAC_VALS;
|
||||||
|
for (int i = 0; i < NSPECIALDACS; ++i) {
|
||||||
|
defaultDacValue_highgain[i] = vals_highgain[i];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// remember settings
|
||||||
|
enum detectorSettings oldSettings = thisSettings;
|
||||||
|
|
||||||
// reset dacs to defaults
|
// reset dacs to defaults
|
||||||
int ret = OK;
|
const int specialDacs[] = SPECIALDACINDEX;
|
||||||
LOG(logINFOBLUE, ("Setting Default Dac values\n"));
|
for (int i = 0; i < NDAC; ++i) {
|
||||||
{
|
int value = defaultDacValues[i];
|
||||||
for (int i = 0; i < NDAC; ++i) {
|
|
||||||
setDAC((enum DACINDEX)i, defaultDacValues[i], 0);
|
for (int j = 0; j < NSPECIALDACS; ++j) {
|
||||||
if (detectorDacs[i] != defaultDacValues[i]) {
|
// special dac: replace default value
|
||||||
ret = FAIL;
|
if (specialDacs[j] == i) {
|
||||||
LOG(logERROR, ("Setting dac %d failed, wrote %d, read %d\n", i,
|
switch (oldSettings) {
|
||||||
defaultDacValues[i], detectorDacs[i]));
|
case STANDARD:
|
||||||
|
value = defaultDacValue_standard[j];
|
||||||
|
break;
|
||||||
|
case FAST:
|
||||||
|
value = defaultDacValue_fast[j];
|
||||||
|
break;
|
||||||
|
case HIGHGAIN:
|
||||||
|
value = defaultDacValue_highgain[j];
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// set to defualt
|
||||||
|
setDAC((enum DACINDEX)i, value, 0);
|
||||||
|
if (detectorDacs[i] != value) {
|
||||||
|
LOG(logERROR, ("Setting dac %d failed, wrote %d, read %d\n", i,
|
||||||
|
value, detectorDacs[i]));
|
||||||
|
return FAIL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return ret;
|
return OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
int getDefaultDac(enum DACINDEX index, enum detectorSettings sett,
|
int getDefaultDac(enum DACINDEX index, enum detectorSettings sett,
|
||||||
|
@ -1627,7 +1627,7 @@ int set_settings(int file_des) {
|
|||||||
validate(&ret, mess, (int)isett, (int)retval, "set settings", DEC);
|
validate(&ret, mess, (int)isett, (int)retval, "set settings", DEC);
|
||||||
#ifdef GOTTHARDD
|
#ifdef GOTTHARDD
|
||||||
if (ret == OK) {
|
if (ret == OK) {
|
||||||
ret = resetToDefaultDacs(false);
|
ret = resetToDefaultDacs(0);
|
||||||
if (ret == FAIL) {
|
if (ret == FAIL) {
|
||||||
strcpy(mess, "Could change settings, but could not set to "
|
strcpy(mess, "Could change settings, but could not set to "
|
||||||
"default dacs\n");
|
"default dacs\n");
|
||||||
@ -8096,7 +8096,7 @@ int reset_to_default_dacs(int file_des) {
|
|||||||
int arg = -1;
|
int arg = -1;
|
||||||
if (receiveData(file_des, &arg, sizeof(arg), INT32) < 0)
|
if (receiveData(file_des, &arg, sizeof(arg), INT32) < 0)
|
||||||
return printSocketReadError();
|
return printSocketReadError();
|
||||||
LOG(logINFO, ("Resetting dacs to defaults (hard reset: %d)\n", arg));
|
LOG(logDEBUG1, ("Resetting dacs to defaults (hard reset: %d)\n", arg));
|
||||||
|
|
||||||
#ifdef CHIPTESTBOARDD
|
#ifdef CHIPTESTBOARDD
|
||||||
functionNotImplemented();
|
functionNotImplemented();
|
||||||
|
@ -658,7 +658,7 @@ void Detector::setDefaultDac_(defs::dacIndex index, int defaultValue,
|
|||||||
}
|
}
|
||||||
|
|
||||||
void Detector::resetToDefaultDacs(const bool hardReset, Positions pos) {
|
void Detector::resetToDefaultDacs(const bool hardReset, Positions pos) {
|
||||||
pimpl->Parallel(&Module::resetToDefaultDacs, hardReset, pos);
|
pimpl->Parallel(&Module::resetToDefaultDacs, pos, hardReset);
|
||||||
}
|
}
|
||||||
|
|
||||||
Result<int> Detector::getDAC(defs::dacIndex index, bool mV,
|
Result<int> Detector::getDAC(defs::dacIndex index, bool mV,
|
||||||
|
Reference in New Issue
Block a user