jungfrau server: changes to ensure no update of detector during this, included power chip to read the status bit and give error if temp event is up

This commit is contained in:
Dhanya Maliakal 2018-01-11 16:52:08 +01:00
parent 2d6e4c95a2
commit 061abf7be0
3 changed files with 14 additions and 13 deletions

View File

@ -383,7 +383,7 @@ int powerChip (int on){
bus_w(CHIP_POWER_REG, bus_r(CHIP_POWER_REG) & ~CHIP_POWER_ENABLE_MSK);
}
}
return bus_r(CHIP_POWER_REG);
return (bus_r(CHIP_POWER_REG & CHIP_POWER_STATUS_MSK) >> CHIP_POWER_STATUS_OFST);
}
void cleanFifos() {
@ -1147,6 +1147,7 @@ void configurePll() {
int setThresholdTemperature(int val) {
if (val >= 0) {
printf("\nThreshold Temperature: %d\n", val);
@ -1154,8 +1155,8 @@ int setThresholdTemperature(int val) {
#ifdef VERBOSE
printf("Converted Threshold Temperature: %d\n", val);
#endif
bus_w(TEMP_CTRL_REG, bus_r(TEMP_CTRL_REG) | (((val << TEMP_CTRL_PROTCT_THRSHLD_OFST) & TEMP_CTRL_PROTCT_THRSHLD_MSK)));
bus_w(TEMP_CTRL_REG, (bus_r(TEMP_CTRL_REG) &~(TEMP_CTRL_PROTCT_THRSHLD_MSK) &~(TEMP_CTRL_OVR_TMP_EVNT_MSK))
| (((val << TEMP_CTRL_PROTCT_THRSHLD_OFST) & TEMP_CTRL_PROTCT_THRSHLD_MSK)));
#ifdef VERBOSE
printf("Converted Threshold Temperature set to %d\n", ((bus_r(TEMP_CTRL_REG) & TEMP_CTRL_PROTCT_THRSHLD_MSK) >> TEMP_CTRL_PROTCT_THRSHLD_OFST));
#endif
@ -1176,7 +1177,8 @@ int setTemperatureControl(int val) {
// binary value
if (val > 0 ) val = 1;
printf("\nTemperature control: %d\n", val);
bus_w(TEMP_CTRL_REG, bus_r(TEMP_CTRL_REG) | (((val << TEMP_CTRL_PROTCT_ENABLE_OFST) & TEMP_CTRL_PROTCT_ENABLE_MSK)));
bus_w(TEMP_CTRL_REG, (bus_r(TEMP_CTRL_REG) &~(TEMP_CTRL_PROTCT_ENABLE_MSK) &~(TEMP_CTRL_OVR_TMP_EVNT_MSK))
| (((val << TEMP_CTRL_PROTCT_ENABLE_OFST) & TEMP_CTRL_PROTCT_ENABLE_MSK)));
#ifdef VERBOSE
printf("Temperature control set to %d\n", ((bus_r(TEMP_CTRL_REG) & TEMP_CTRL_PROTCT_ENABLE_MSK) >> TEMP_CTRL_PROTCT_ENABLE_OFST));
#endif
@ -1190,7 +1192,8 @@ int setTemperatureEvent(int val) {
// set bit to clear it
val = 1;
printf("\nTemperature Event: %d\n", val);
bus_w(TEMP_CTRL_REG, bus_r(TEMP_CTRL_REG) | (((val << TEMP_CTRL_OVR_TMP_EVNT_OFST) & TEMP_CTRL_OVR_TMP_EVNT_MSK)));
bus_w(TEMP_CTRL_REG, (bus_r(TEMP_CTRL_REG) &~TEMP_CTRL_OVR_TMP_EVNT_MSK)
| (((val << TEMP_CTRL_OVR_TMP_EVNT_OFST) & TEMP_CTRL_OVR_TMP_EVNT_MSK)));
#ifdef VERBOSE
printf("Temperature Event set to %d\n", ((bus_r(TEMP_CTRL_REG) & TEMP_CTRL_OVR_TMP_EVNT_MSK) >> TEMP_CTRL_OVR_TMP_EVNT_OFST));
#endif
@ -1206,7 +1209,8 @@ int setNetworkParameter(enum NETWORKINDEX mode, int value) {
if (value >= 0) {
printf("\nSetting transmission delay: %d\n", value);
bus_w(CONFIG_REG, bus_r(CONFIG_REG) | (((value << CONFIG_TDMA_TIMESLOT_OFST) & CONFIG_TDMA_TIMESLOT_MSK)));
bus_w(CONFIG_REG, (bus_r(CONFIG_REG) &~CONFIG_TDMA_TIMESLOT_MSK)
| (((value << CONFIG_TDMA_TIMESLOT_OFST) & CONFIG_TDMA_TIMESLOT_MSK)));
#ifdef VERBOSE
printf("Transmission delay set to %d\n", ((bus_r(CONFIG_REG) & CONFIG_TDMA_TIMESLOT_MSK) >> CONFIG_TDMA_TIMESLOT_OFST));
#endif

View File

@ -2641,8 +2641,6 @@ int slsDetector::setThresholdTemperature(int val, int imod) {
setErrorMask((getErrorMask())|(TEMPERATURE_CONTROL));
}
disconnectStop();
if (ret==FORCE_UPDATE)
updateDetector();
}
}
@ -2683,8 +2681,6 @@ int slsDetector::setTemperatureControl(int val, int imod) {
setErrorMask((getErrorMask())|(TEMPERATURE_CONTROL));
}
disconnectStop();
if (ret==FORCE_UPDATE)
updateDetector();
}
}
@ -2726,8 +2722,6 @@ int slsDetector::setTemperatureEvent(int val, int imod) {
setErrorMask((getErrorMask())|(TEMPERATURE_CONTROL));
}
disconnectStop();
if (ret==FORCE_UPDATE)
updateDetector();
}
}

View File

@ -4733,7 +4733,10 @@ int power_chip(int file_des) {
ret=OK;
} else {
ret=FAIL;
sprintf(mess,"Powering chip failed, wrote %d but read %d\n", arg, retval);
if(setTemperatureEvent(-1) == 1)
sprintf(mess,"Powering chip failed due to over-temperature event. Clear event & power chip again.\n", arg, retval);
else
sprintf(mess,"Powering chip failed, wrote %d but read %d\n", arg, retval);
cprintf(RED, "Warning: %s", mess);
}
}