diff --git a/slsDetectorServers/ctbDetectorServer/bin/ctbDetectorServer_developer b/slsDetectorServers/ctbDetectorServer/bin/ctbDetectorServer_developer index a54af4a5e..a15ff07c0 100755 Binary files a/slsDetectorServers/ctbDetectorServer/bin/ctbDetectorServer_developer and b/slsDetectorServers/ctbDetectorServer/bin/ctbDetectorServer_developer differ diff --git a/slsDetectorServers/slsDetectorServer/src/AD7689.c b/slsDetectorServers/slsDetectorServer/src/AD7689.c index 89f13bdd1..a21913fc4 100755 --- a/slsDetectorServers/slsDetectorServer/src/AD7689.c +++ b/slsDetectorServers/slsDetectorServer/src/AD7689.c @@ -126,7 +126,6 @@ int AD7689_GetTemperature() { // overwrite configuration AD7689_CFG_CFG_OVRWRTE_VAL); - // FIXME: do we have to read it 8 times?? (sequencer is disabled anyway) or are we sequencing, then we read only last channel int regval = AD7689_Get(); // value in mV FIXME: page 17? reference voltage temperature coefficient or t do with -40 to 85 °C @@ -138,8 +137,7 @@ int AD7689_GetTemperature() { // value in °C double tempValue = AD7689_TMP_C_FOR_1_MV * (double)retval; - - FILE_LOG(logINFO, ("\ttemp read : %f °C\n", tempValue)); + FILE_LOG(logINFO, ("\ttemp read : %f °C (%d unit)\n", tempValue, regval)); return tempValue; @@ -169,7 +167,6 @@ int AD7689_GetChannel(int ichan) { // overwrite configuration AD7689_CFG_CFG_OVRWRTE_VAL); - // FIXME: do we have to read it 8 times?? (sequencer is disabled anyway) or are we sequencing, then we read only last channel int regval = AD7689_Get(); // value in mV diff --git a/slsDetectorServers/slsDetectorServer/src/commonServerFunctions.c b/slsDetectorServers/slsDetectorServer/src/commonServerFunctions.c index 2207daa22..10f2c39b7 100755 --- a/slsDetectorServers/slsDetectorServer/src/commonServerFunctions.c +++ b/slsDetectorServers/slsDetectorServer/src/commonServerFunctions.c @@ -8,12 +8,15 @@ void SPIChipSelect (uint32_t* valw, uint32_t addr, uint32_t csmask, uint32_t cl FILE_LOG(logDEBUG2, ("SPI chip select. valw:0x%08x addr:0x%x csmask:0x%x, clkmask:0x%x digmask:0x%x convbit:%d\n", *valw, addr, csmask, clkmask, digoutmask, convBit)); - // needed for the slow adcs for apprx 20 ns before and after rising of convbit (usleep val is vague assumption) - if (convBit) - usleep(20); - // start point - (*valw) = ((bus_r(addr) | csmask | clkmask) &(~digoutmask)); + if (convBit) { + // needed for the slow adcs for apprx 20 ns before and after rising of convbit (usleep val is vague assumption) + usleep(20); + // clkmask has to be down for conversion to have correct value (for conv bit = 1) + (*valw) = (((bus_r(addr) | csmask) &(~clkmask)) &(~digoutmask)); + } else { + (*valw) = ((bus_r(addr) | csmask | clkmask) &(~digoutmask)); + } bus_w (addr, (*valw)); FILE_LOG(logDEBUG2, ("startpoint. valw:0x%08x\n", *valw)); @@ -93,6 +96,7 @@ uint32_t receiveDataFromSPI (uint32_t* valw, uint32_t addr, int numbitstoreceive uint32_t retval = 0; int i = 0; + for (i = 0; i < numbitstoreceive; ++i) { // clk down @@ -104,11 +108,16 @@ uint32_t receiveDataFromSPI (uint32_t* valw, uint32_t addr, int numbitstoreceive retval |= ((bus_r(readaddr) & 0x1) << (numbitstoreceive - 1 - i)); FILE_LOG(logDEBUG2, ("read data %d. retval:0x%08x\n", i, retval)); + usleep(20); + // clk up (*valw) |= clkmask ; bus_w (addr, (*valw)); FILE_LOG(logDEBUG2, ("clk up. valw:0x%08x\n", *valw)); + + usleep(20); } + return retval; } @@ -135,7 +144,8 @@ uint32_t serializeFromSPI(uint32_t addr, uint32_t csmask, int numbitstoreceive, uint32_t retval = receiveDataFromSPI(&valw, addr, numbitstoreceive, clkmask, readaddr); - SPIChipDeselect(&valw, addr, csmask, clkmask, digoutmask, convBit); // moving this before bringin up earlier changes temp of slow adc + // not needed for conv bit (not a chip select) + //SPIChipDeselect(&valw, addr, csmask, clkmask, digoutmask, convBit); // moving this before bringin up earlier changes temp of slow adc if (numbitstoreceive == 16) { FILE_LOG(logDEBUG2, ("Read From SPI Register: 0x%04x\n", retval)); diff --git a/slsDetectorSoftware/include/Detector.h b/slsDetectorSoftware/include/Detector.h index f363f26d4..982a06f00 100644 --- a/slsDetectorSoftware/include/Detector.h +++ b/slsDetectorSoftware/include/Detector.h @@ -1036,7 +1036,7 @@ class Detector { Result getMeasuredCurrent(defs::dacIndex index, Positions pos = {}) const; - /** [CTB] Options: SLOW_ADC0 - SLOW_ADC7 */ + /** [CTB] Options: SLOW_ADC0 - SLOW_ADC7 in mV */ Result getSlowADC(defs::dacIndex index, Positions pos = {}) const; /** [CTB]*/ diff --git a/slsDetectorSoftware/src/CmdProxy.cpp b/slsDetectorSoftware/src/CmdProxy.cpp index 1a16de091..ec9c222a0 100644 --- a/slsDetectorSoftware/src/CmdProxy.cpp +++ b/slsDetectorSoftware/src/CmdProxy.cpp @@ -1400,7 +1400,7 @@ std::string CmdProxy::SlowAdc(int action) { os << cmd << ' '; if (action == defs::HELP_ACTION) { os << "[n_channel (0-7 for channel|8 for temperature)]\n\t[Ctb] Slow " - "ADC channel." + "ADC channel in mV or °C." << '\n'; } else if (action == defs::GET_ACTION) { if (args.size() != 1) { @@ -1416,7 +1416,7 @@ std::string CmdProxy::SlowAdc(int action) { } else { auto t = det->getSlowADC( static_cast(nchan + defs::SLOW_ADC0), {det_id}); - os << OutString(t) << '\n'; + os << OutString(t) << " mV\n"; } } else if (action == defs::PUT_ACTION) { throw sls::RuntimeError("cannot put"); diff --git a/slsSupportLib/include/versionAPI.h b/slsSupportLib/include/versionAPI.h index cabf551a0..486b48a2d 100644 --- a/slsSupportLib/include/versionAPI.h +++ b/slsSupportLib/include/versionAPI.h @@ -6,7 +6,7 @@ #define APIMOENCH 0x200131 #define APIGOTTHARD2 0x200226 #define APIMYTHEN3 0x200226 -#define APICTB 0x200226 #define APIJUNGFRAU 0x200226 #define APIEIGER 0x200226 #define APIGOTTHARD 0x200226 +#define APICTB 0x200227