From 111856ed7b70b20f8d7420e6c68903ede5b12256 Mon Sep 17 00:00:00 2001 From: Dhanya Maliakal Date: Fri, 6 Jan 2017 15:16:05 +0100 Subject: [PATCH] hv should work now --- .../eigerDetectorServer/9mhvserial_bf.c | 21 +++--- .../eigerDetectorServer/FebControl.c | 60 ++++++++++-------- .../eigerDetectorServer/FebControl.h | 3 +- .../eigerDetectorServer/Makefile | 4 +- .../bin/eigerDetectorServerv2.2.0.16.5 | Bin 284109 -> 284229 bytes .../bin/hv9m_blackfin_server | Bin 30204 -> 30184 bytes .../slsDetectorFunctionList.c | 18 ++++-- .../slsDetectorServer_defs.h | 2 +- .../slsDetectorServer_funcs.c | 34 +++++++--- 9 files changed, 88 insertions(+), 54 deletions(-) diff --git a/slsDetectorSoftware/eigerDetectorServer/9mhvserial_bf.c b/slsDetectorSoftware/eigerDetectorServer/9mhvserial_bf.c index ee7b51e05..4e4ee0ac6 100644 --- a/slsDetectorSoftware/eigerDetectorServer/9mhvserial_bf.c +++ b/slsDetectorSoftware/eigerDetectorServer/9mhvserial_bf.c @@ -11,7 +11,7 @@ #define PORTNAME "/dev/ttyBF1" #define GOODBYE 200 -#define BUFFERSIZE 255 +#define BUFFERSIZE 16 #define I2C_DEVICE_FILE "/dev/i2c-0" #define I2C_DEVICE_ADDRESS 0x4C //#define I2C_DEVICE_ADDRESS 0x48 @@ -119,13 +119,12 @@ int main(int argc, char* argv[]) { int ret = 0; int n = 0; int ival= 0; - char buffer[BUFFERSIZE]=""; + char buffer[BUFFERSIZE]; + buffer[BUFFERSIZE-2] = '\0'; + buffer[BUFFERSIZE-1] = '\n'; cprintf(GREEN,"Ready...\n"); while(ret != GOODBYE){ - memset(buffer, 0, BUFFERSIZE); - buffer[BUFFERSIZE-1]='\n'; - n = read(fd,buffer,BUFFERSIZE); #ifdef VERBOSE cprintf(BLUE,"Received %d Bytes\n", n); @@ -140,9 +139,9 @@ int main(int argc, char* argv[]) { } if(i2c_write(ival)<0) - strcpy(buffer,"failed"); + strcpy(buffer,"fail "); else - strcpy(buffer,"successful"); + strcpy(buffer,"success "); cprintf(GREEN,"%s\n",buffer); n = write(fd, buffer, BUFFERSIZE); #ifdef VERBOSE @@ -154,9 +153,9 @@ int main(int argc, char* argv[]) { ival = i2c_read(); //ok/ fail if(ival < 0) - strcpy(buffer,"failed"); + strcpy(buffer,"fail "); else - strcpy(buffer,"successful"); + strcpy(buffer,"success "); n = write(fd, buffer, BUFFERSIZE); #ifdef VERBOSE cprintf(BLUE,"Sent %d Bytes\n", n); @@ -164,7 +163,7 @@ int main(int argc, char* argv[]) { //value if(ival >= 0){ cprintf(GREEN,"%d\n",ival); - sprintf(buffer,"%d\n",ival); + sprintf(buffer,"%d ",ival); n = write(fd, buffer, BUFFERSIZE); #ifdef VERBOSE cprintf(BLUE,"Sent %d Bytes\n", n); @@ -177,7 +176,7 @@ int main(int argc, char* argv[]) { ret = GOODBYE; break; default: - printf("Unknown Command\n"); + printf("Unknown Command. buffer:%s\n",buffer); break; } } diff --git a/slsDetectorSoftware/eigerDetectorServer/FebControl.c b/slsDetectorSoftware/eigerDetectorServer/FebControl.c index 1cc31b39b..ead19d2b7 100644 --- a/slsDetectorSoftware/eigerDetectorServer/FebControl.c +++ b/slsDetectorSoftware/eigerDetectorServer/FebControl.c @@ -219,18 +219,14 @@ int Feb_Control_Init(int master, int top, int normal, int module_num){ if(Feb_Control_activated) Feb_Interface_SetByteOrder(); - //master of 9M, set up high voltage serial communication to blackfin - if(Feb_control_master && !Feb_control_normal){ - if(!Feb_Control_SetupSerialCommunication()) - return 0; - } - return 1; } -int Feb_Control_SetupSerialCommunication(){ - +int Feb_Control_OpenSerialCommunication(){ + cprintf(BG_BLUE,"opening serial communication of hv\n"); + if(Feb_Control_hv_fd != -1) + close(Feb_Control_hv_fd); Feb_Control_hv_fd = open(SPECIAL9M_HIGHVOLTAGE_PORT, O_RDWR | O_NOCTTY); if(Feb_Control_hv_fd < 0){ cprintf(RED,"Warning: Unable to open port %s to set up high voltage serial communciation to the blackfin\n", SPECIAL9M_HIGHVOLTAGE_PORT); @@ -258,6 +254,11 @@ int Feb_Control_SetupSerialCommunication(){ return 1; } +void Feb_Control_CloseSerialCommunication(){ + if(Feb_Control_hv_fd != -1) + close(Feb_Control_hv_fd); +} + void Feb_Control_PrintModuleList(){ unsigned int i; @@ -376,7 +377,8 @@ int Feb_Control_CheckSetup(int master){ ok=0; } } - if((Feb_control_master) &&(Module_GetHighVoltage(&modules[i])<0)){ + int value = 0; + if((Feb_control_master) && (!Feb_Control_GetHighVoltage(&value))){ cprintf(RED,"Warning: module %d's high voltage not set.\n",Module_GetModuleNumber(&modules[i])); ok=0; } @@ -525,7 +527,7 @@ float Feb_Control_DACToVoltage(unsigned int digital,unsigned int nsteps,float vm //only master gets to call this function int Feb_Control_SetHighVoltage(int value){ - printf(" Setting High Voltage: %dV\t",value); + printf(" Setting High Voltage:\t"); /* * maximum voltage of the hv dc/dc converter: * 300 for single module power distribution board @@ -544,9 +546,9 @@ int Feb_Control_SetHighVoltage(int value){ //calculate dac value if(!Feb_Control_VoltageToDAC(value,&dacval,nsteps,vmin,vlimit)){ cprintf(RED,"\nWarning: SetHighVoltage bad value, %d. The range is 0 to %d V.\n",value, (int)vlimit); - return 0; + return -1; } - printf("(%d dac): ",dacval); + printf("(%d dac):\t%dV\n", dacval, value); return Feb_Control_SendHighVoltage(dacval); } @@ -596,30 +598,34 @@ int Feb_Control_SendHighVoltage(int dacvalue){ //9m else{ + /*Feb_Control_OpenSerialCommunication();*/ if (Feb_Control_hv_fd == -1){ cprintf(RED,"\nWarning: High voltage serial communication not set up for 9m\n"); return 0; } - char buffer[SPECIAL9M_HIGHVOLTAGE_BUFFERSIZE]=""; + char buffer[SPECIAL9M_HIGHVOLTAGE_BUFFERSIZE]; + buffer[SPECIAL9M_HIGHVOLTAGE_BUFFERSIZE-2]='\0'; buffer[SPECIAL9M_HIGHVOLTAGE_BUFFERSIZE-1]='\n'; int n = 0; - sprintf(buffer,"p%d",dacvalue); + sprintf(buffer,"p%d ",dacvalue); n = write(Feb_Control_hv_fd, buffer, SPECIAL9M_HIGHVOLTAGE_BUFFERSIZE); -#ifdef VERBOSE +#ifdef VERBOSEI cprintf(BLUE,"Sent %d Bytes\n", n); #endif - //ok/fail n = read(Feb_Control_hv_fd, buffer, SPECIAL9M_HIGHVOLTAGE_BUFFERSIZE); - #ifdef VERBOSE +#ifdef VERBOSEI cprintf(BLUE,"Received %d Bytes\n", n); - #endif - if(buffer[0] == 'f'){ +#endif + fflush(stdout); + /*Feb_Control_CloseSerialCommunication();*/ + if(buffer[0] != 's'){ cprintf(RED,"\nError: Failed to set high voltage\n"); return 0; } cprintf(GREEN,"%s\n",buffer); + } return 1; @@ -667,34 +673,38 @@ int Feb_Control_ReceiveHighVoltage(unsigned int* value){ //9m else{ + /*Feb_Control_OpenSerialCommunication();*/ + if (Feb_Control_hv_fd == -1){ cprintf(RED,"\nWarning: High voltage serial communication not set up for 9m\n"); return 0; } - char buffer[SPECIAL9M_HIGHVOLTAGE_BUFFERSIZE]=""; + char buffer[SPECIAL9M_HIGHVOLTAGE_BUFFERSIZE]; + buffer[SPECIAL9M_HIGHVOLTAGE_BUFFERSIZE-2]='\0'; buffer[SPECIAL9M_HIGHVOLTAGE_BUFFERSIZE-1]='\n'; int n = 0; //request - strcpy(buffer,"g"); + strcpy(buffer,"g "); n = write(Feb_Control_hv_fd, buffer, SPECIAL9M_HIGHVOLTAGE_BUFFERSIZE); -#ifdef VERBOSE +#ifdef VERBOSEI cprintf(BLUE,"Sent %d Bytes\n", n); #endif //ok/fail n = read(Feb_Control_hv_fd, buffer, SPECIAL9M_HIGHVOLTAGE_BUFFERSIZE); -#ifdef VERBOSE +#ifdef VERBOSEI cprintf(BLUE,"Received %d Bytes\n", n); #endif - if(buffer[0] == 'f'){ + if(buffer[0] != 's'){ cprintf(RED,"\nWarning: failed to read high voltage\n"); return 0; } n = read(Feb_Control_hv_fd, buffer, SPECIAL9M_HIGHVOLTAGE_BUFFERSIZE); -#ifdef VERBOSE +#ifdef VERBOSEI cprintf(BLUE,"Received %d Bytes\n", n); #endif + /*Feb_Control_OpenSerialCommunication();*/ if (!sscanf(buffer,"%d",value)){ cprintf(RED,"\nWarning: failed to scan high voltage read\n"); return 0; diff --git a/slsDetectorSoftware/eigerDetectorServer/FebControl.h b/slsDetectorSoftware/eigerDetectorServer/FebControl.h index 2d7abf369..fb75c8a67 100644 --- a/slsDetectorSoftware/eigerDetectorServer/FebControl.h +++ b/slsDetectorSoftware/eigerDetectorServer/FebControl.h @@ -112,7 +112,8 @@ int Feb_Control_GetModuleNumber(); void Feb_Control_FebControl(); int Feb_Control_Init(int master, int top, int normal, int module_num); - int Feb_Control_SetupSerialCommunication(); + int Feb_Control_OpenSerialCommunication(); + void Feb_Control_CloseSerialCommunication(); int Feb_Control_CheckSetup(); unsigned int Feb_Control_GetNModules(); diff --git a/slsDetectorSoftware/eigerDetectorServer/Makefile b/slsDetectorSoftware/eigerDetectorServer/Makefile index c615356b9..3a9cc6c59 100755 --- a/slsDetectorSoftware/eigerDetectorServer/Makefile +++ b/slsDetectorSoftware/eigerDetectorServer/Makefile @@ -1,7 +1,7 @@ CC = powerpc-4xx-softfloat-gcc CCX = powerpc-4xx-softfloat-g++ BLACKFIN_CC = bfin-uclinux-gcc -CFLAGS += -Wall -DDACS_INT -DEIGERD -DSLS_DETECTOR_FUNCTION_LIST -DDACS_INT -DSTOP_SERVER #-DVERBOSE #-DVIRTUAL -DPCCOMPILE -DMARTIN +CFLAGS += -Wall -DDACS_INT -DEIGERD -DSLS_DETECTOR_FUNCTION_LIST -DDACS_INT -DSTOP_SERVER #-DVERBOSEI #-DVERBOSE #-DVIRTUAL -DPCCOMPILE -DMARTIN LDLIBS += -lm -lstdc++ PROGS = eigerDetectorServer @@ -36,7 +36,7 @@ beb_debug:$(SRC_CLNT3) mv beb_debug $(DESTDIR) hv9m_blackfin_server:9mhvserial_bf.c - $(BLACKFIN_CC) -o hv9m_blackfin_server 9mhvserial_bf.c -Wall + $(BLACKFIN_CC) -o hv9m_blackfin_server 9mhvserial_bf.c -Wall #-DVERBOSE mv hv9m_blackfin_server $(DESTDIR) rm hv9m_blackfin_server.gdb diff --git a/slsDetectorSoftware/eigerDetectorServer/bin/eigerDetectorServerv2.2.0.16.5 b/slsDetectorSoftware/eigerDetectorServer/bin/eigerDetectorServerv2.2.0.16.5 index fa4b08d2169c50dc5096b8c97bd6fad9a469b2e6..9fdf4f40480e8948f0b24801cf0ca5c95005e245 100755 GIT binary patch delta 45784 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 bc|Wr6!}BBCrtjVw7|# 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 KJ`Ick6aNR$2h_*_ diff --git a/slsDetectorSoftware/eigerDetectorServer/slsDetectorFunctionList.c b/slsDetectorSoftware/eigerDetectorServer/slsDetectorFunctionList.c index cb541697b..b675703c6 100644 --- a/slsDetectorSoftware/eigerDetectorServer/slsDetectorFunctionList.c +++ b/slsDetectorSoftware/eigerDetectorServer/slsDetectorFunctionList.c @@ -144,6 +144,11 @@ int initDetector(){ Feb_Interface_FebInterface(); Feb_Control_FebControl(); Feb_Control_Init(master,top,normal, getDetectorNumber()); + //master of 9M, check high voltage serial communication to blackfin + if(master && !normal){ + if(Feb_Control_OpenSerialCommunication()) + ;// Feb_Control_CloseSerialCommunication(); + } printf("FEB Initialization done\n"); Beb_Beb(); printf("BEB Initialization done\n"); @@ -162,7 +167,6 @@ int initDetector(){ eiger_photonenergy = -1; setReadOutFlags(NONPARALLEL); setSpeed(0,1);//clk_devider,half speed - setHighVoltage(0,0); setIODelay(650,0); setTiming(AUTO_TIMING); //SetPhotonEnergyCalibrationParameters(-5.8381e-5,1.838515,5.09948e-7,-4.32390e-11,1.32527e-15); @@ -170,6 +174,7 @@ int initDetector(){ int enable[2] = {0,1}; setExternalGating(enable);//disable external gating Feb_Control_SetInTestModeVariable(0); + setHighVoltage(0,0); Feb_Control_CheckSetup(); //print detector mac and ip @@ -436,13 +441,18 @@ void setDAC(enum detDacIndex ind, int val, int imod, int mV, int retval[]){ int setHighVoltage(int val, int imod){ if(val!=-1){ eiger_highvoltage = val; - if(master) - Feb_Control_SetHighVoltage(val); + if(master){ + int ret = Feb_Control_SetHighVoltage(val); + if(!ret) //could not set + return -2; + else if (ret == -1) //outside range + return -1; + } } if(master && !Feb_Control_GetHighVoltage(&eiger_highvoltage)){ cprintf(RED,"Warning: Could not read high voltage\n"); - return 0; + return -3; } return eiger_highvoltage; } diff --git a/slsDetectorSoftware/eigerDetectorServer/slsDetectorServer_defs.h b/slsDetectorSoftware/eigerDetectorServer/slsDetectorServer_defs.h index 650ad9890..9ddfea71b 100644 --- a/slsDetectorSoftware/eigerDetectorServer/slsDetectorServer_defs.h +++ b/slsDetectorSoftware/eigerDetectorServer/slsDetectorServer_defs.h @@ -47,7 +47,7 @@ enum detNetworkParameter{TXN_LEFT, TXN_RIGHT, TXN_FRAME,FLOWCTRL_10G}; #define NORMAL_HIGHVOLTAGE_INPUTPORT "/sys/class/hwmon/hwmon5/device/in0_input" #define NORMAL_HIGHVOLTAGE_OUTPUTPORT "/sys/class/hwmon/hwmon5/device/out0_output" #define SPECIAL9M_HIGHVOLTAGE_PORT "/dev/ttyS1" -#define SPECIAL9M_HIGHVOLTAGE_BUFFERSIZE 8 +#define SPECIAL9M_HIGHVOLTAGE_BUFFERSIZE 16 diff --git a/slsDetectorSoftware/slsDetectorServer/slsDetectorServer_funcs.c b/slsDetectorSoftware/slsDetectorServer/slsDetectorServer_funcs.c index ea9b12256..b41c65a73 100755 --- a/slsDetectorSoftware/slsDetectorServer/slsDetectorServer_funcs.c +++ b/slsDetectorSoftware/slsDetectorServer/slsDetectorServer_funcs.c @@ -1259,16 +1259,30 @@ int set_dac(int file_des) { #endif //takes time to set high voltage, so no check for it - if(ret == OK && ind != HV_POT && ind != HV_NEW){ - if(mV) - temp = retval[1]; - else - temp = retval[0]; - if ((abs(temp-val)<=5) || val==-1) { - ret=OK; - } else { - ret=FAIL; - printf("Setting dac %d of module %d: wrote %d but read %d\n", idac, imod, val, temp); + if(ret == OK){ + if(ind != HV_POT && ind != HV_NEW){ + + if(mV) + temp = retval[1]; + else + temp = retval[0]; + if ((abs(temp-val)<=5) || val==-1) { + ret=OK; + } else { + ret=FAIL; + printf("Setting dac %d of module %d: wrote %d but read %d\n", idac, imod, val, temp); + } + }else { + if(retval[0] < 0){ + if(retval[0] == -1) + sprintf(mess, "Setting high voltage failed.Bad value %d. The range is from 0 to 200 V.\n",val); + else if(retval[0] == -2) + strcpy(mess, "Setting high voltage failed. Serial/i2c communication failed.\n"); + else if(retval[0] == -3) + strcpy(mess, "Getting high voltage failed. Serial/i2c communication failed.\n"); + ret = FAIL; + } + } }