changed dacs and adcs values to be an int between sockets

git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorSoftware@222 951219d9-93cf-4727-9268-0efd64621fa3
This commit is contained in:
l_maliakal_d
2012-08-15 17:07:55 +00:00
parent 73424d0376
commit 5407fdcf6e
7 changed files with 49 additions and 51 deletions

View File

@ -5,7 +5,7 @@
CROSS = bfin-uclinux- CROSS = bfin-uclinux-
CC = $(CROSS)gcc CC = $(CROSS)gcc
CFLAGS += -Wall -DMCB_FUNCS -DDACS_DOUBLE #-DVERBOSE -DVERYVERBOSE #-DVIRTUAL CFLAGS += -Wall -DMCB_FUNCS -DDACS_INT #-DVERBOSE -DVERYVERBOSE #-DVIRTUAL #-DDACS_INT_CSERVER
PROGS= gotthardDetectorServer PROGS= gotthardDetectorServer

View File

@ -291,13 +291,13 @@ int sendModule(int file_des, sls_detector_module *myMod) {
#ifdef VERBOSE #ifdef VERBOSE
printf("module %d of size %d sent\n",myMod->module, ts); printf("module %d of size %d sent\n",myMod->module, ts);
#endif #endif
ts+= sendDataOnly(file_des,myMod->dacs,sizeof(double)*nDacs); ts+= sendDataOnly(file_des,myMod->dacs,sizeof(dacs_t)*nDacs);
#ifdef VERBOSE #ifdef VERBOSE
printf("dacs %d of size %d sent\n",myMod->module, ts); printf("dacs %d of size %d sent\n",myMod->module, ts);
for (idac=0; idac< nDacs; idac++) for (idac=0; idac< nDacs; idac++)
printf("dac %d is %d\n",idac,myMod->dacs[idac]); printf("dac %d is %d\n",idac,myMod->dacs[idac]);
#endif #endif
ts+= sendDataOnly(file_des,myMod->adcs,sizeof(double)*nAdcs); ts+= sendDataOnly(file_des,myMod->adcs,sizeof(dacs_t)*nAdcs);
#ifdef VERBOSE #ifdef VERBOSE
printf("adcs %d of size %d sent\n",myMod->module, ts); printf("adcs %d of size %d sent\n",myMod->module, ts);
#endif #endif
@ -361,8 +361,8 @@ int receiveChip(int file_des, sls_detector_chip* myChip) {
int receiveModule(int file_des, sls_detector_module* myMod) { int receiveModule(int file_des, sls_detector_module* myMod) {
double *dacptr=myMod->dacs; dacs_t *dacptr=myMod->dacs;
double *adcptr=myMod->adcs; dacs_t *adcptr=myMod->adcs;
int *chipptr=myMod->chipregs, *chanptr=myMod->chanregs; int *chipptr=myMod->chipregs, *chanptr=myMod->chanregs;
int ts=0; int ts=0;
int nChips, nchipold=myMod->nchip, nchipdiff; int nChips, nchipold=myMod->nchip, nchipdiff;
@ -424,27 +424,26 @@ int receiveModule(int file_des, sls_detector_module* myMod) {
printf("dacs received\n"); printf("dacs received\n");
#endif #endif
} else { } else {
dacptr=malloc(ndacdiff*sizeof(double)); dacptr=malloc(ndacdiff*sizeof(dacs_t));
myMod->ndac=ndold; myMod->ndac=ndold;
ts+=receiveDataOnly(file_des,myMod->dacs, sizeof(double)*ndold); ts+=receiveDataOnly(file_des,myMod->dacs, sizeof(dacs_t)*ndold);
ts+=receiveDataOnly(file_des,dacptr, sizeof(double)*ndacdiff); ts+=receiveDataOnly(file_des,dacptr, sizeof(dacs_t)*ndacdiff);
free(dacptr); free(dacptr);
return FAIL; return FAIL;
} }
// printf("ndacdiff\t11vref_ds:%f\n",myMod->dacs[0]);printf("11vin_cm:%f\n",myMod->dacs[5]); if (nadcdiff<=0) {
/* if (nadcdiff<=0) {
ts+=receiveDataOnly(file_des,myMod->adcs, sizeof(dacs_t)*nAdcs); ts+=receiveDataOnly(file_des,myMod->adcs, sizeof(dacs_t)*nAdcs);
#ifdef VERBOSE #ifdef VERBOSE
printf("adcs received\n"); printf("adcs received\n");
#endif #endif
} else { } else {
adcptr=malloc(nadcdiff*sizeof(double)); adcptr=malloc(nadcdiff*sizeof(dacs_t));
myMod->nadc=naold; myMod->nadc=naold;
ts+=receiveDataOnly(file_des,myMod->adcs, sizeof(double)*naold); ts+=receiveDataOnly(file_des,myMod->adcs, sizeof(dacs_t)*naold);
ts+=receiveDataOnly(file_des,adcptr, sizeof(double)*nadcdiff); ts+=receiveDataOnly(file_des,adcptr, sizeof(dacs_t)*nadcdiff);
free(adcptr); free(adcptr);
return FAIL; return FAIL;
} *///printf("nadcdiff\t22vref_ds:%f\n",myMod->dacs[0]);printf("22vin_cm:%f\n",myMod->dacs[5]); }
if (nchipdiff<=0) { if (nchipdiff<=0) {
ts+=receiveDataOnly(file_des,myMod->chipregs, sizeof(int)*nChips); ts+=receiveDataOnly(file_des,myMod->chipregs, sizeof(int)*nChips);
#ifdef VERBOSE #ifdef VERBOSE
@ -457,7 +456,7 @@ int receiveModule(int file_des, sls_detector_module* myMod) {
ts+=receiveDataOnly(file_des,chipptr, sizeof(int)*nchipdiff); ts+=receiveDataOnly(file_des,chipptr, sizeof(int)*nchipdiff);
free(chipptr); free(chipptr);
return FAIL; return FAIL;
}//printf("nchipdiff\t33vref_ds:%f\n",myMod->dacs[0]);printf("33vin_cm:%f\n",myMod->dacs[5]); }
if (nchandiff<=0) { if (nchandiff<=0) {
ts+=receiveDataOnly(file_des,myMod->chanregs, sizeof(int)*nChans); ts+=receiveDataOnly(file_des,myMod->chanregs, sizeof(int)*nChans);
#ifdef VERBOSE #ifdef VERBOSE
@ -470,7 +469,7 @@ int receiveModule(int file_des, sls_detector_module* myMod) {
ts+=receiveDataOnly(file_des,chanptr, sizeof(int)*nchandiff); ts+=receiveDataOnly(file_des,chanptr, sizeof(int)*nchandiff);
free(chanptr); free(chanptr);
return FAIL; return FAIL;
}//printf("nchandiff\t44vref_ds:%f\n",myMod->dacs[0]);printf("44vin_cm:%f\n",myMod->dacs[5]); }
#ifdef VERBOSE #ifdef VERBOSE
printf("received module %d of size %d register %x\n",myMod->module,ts,myMod->reg); printf("received module %d of size %d register %x\n",myMod->module,ts,myMod->reg);
#endif #endif

View File

@ -1213,8 +1213,8 @@ int setDACRegister(int idac, int val, int imod) {
} }
double getTemperature(int tempSensor, int imod){ int getTemperature(int tempSensor, int imod){
double val; int val;
char cTempSensor[2][100]={"ADCs/ASICs","VRs/FPGAs"}; char cTempSensor[2][100]={"ADCs/ASICs","VRs/FPGAs"};
imod=0;//ignoring more than 1 mod for now imod=0;//ignoring more than 1 mod for now
int i,j,repeats=6; int i,j,repeats=6;
@ -1241,7 +1241,7 @@ double getTemperature(int tempSensor, int imod){
} }
bus_w(TEMP_IN_REG,(T1_CLK_BIT)|(T1_CS_BIT)|(T2_CLK_BIT)|(T2_CS_BIT));//standby bus_w(TEMP_IN_REG,(T1_CLK_BIT)|(T1_CS_BIT)|(T2_CLK_BIT)|(T2_CS_BIT));//standby
val=((double)tempVal)/4.0; val=((int)tempVal)/4.0;
#ifdef VERBOSE #ifdef VERBOSE
printf("Temperature of module:%d for the %s is %.2fC\n",imod,cTempSensor[tempSensor],val); printf("Temperature of module:%d for the %s is %.2fC\n",imod,cTempSensor[tempSensor],val);

View File

@ -56,7 +56,7 @@ int setContinousReadOut(int d);
int setDACRegister(int idac, int val, int imod); int setDACRegister(int idac, int val, int imod);
double getTemperature(int tempSensor,int imod); int getTemperature(int tempSensor,int imod);
int initHighVoltage(int val,int imod); int initHighVoltage(int val,int imod);
int initConfGain(int isettings,int val,int imod); int initConfGain(int isettings,int val,int imod);

View File

@ -37,8 +37,8 @@ const int noneSelected=-1;
sls_detector_module *detectorModules=NULL; sls_detector_module *detectorModules=NULL;
int *detectorChips=NULL; int *detectorChips=NULL;
int *detectorChans=NULL; int *detectorChans=NULL;
double *detectorDacs=NULL; int *detectorDacs=NULL;
double *detectorAdcs=NULL; int *detectorAdcs=NULL;
//int numberOfProbes; //int numberOfProbes;
@ -56,8 +56,8 @@ int initDetector() {
detectorModules=malloc(n*sizeof(sls_detector_module)); detectorModules=malloc(n*sizeof(sls_detector_module));
detectorChips=malloc(n*NCHIP*sizeof(int)); detectorChips=malloc(n*NCHIP*sizeof(int));
detectorChans=malloc(n*NCHIP*NCHAN*sizeof(int)); detectorChans=malloc(n*NCHIP*NCHAN*sizeof(int));
detectorDacs=malloc(n*NDAC*sizeof(double)); detectorDacs=malloc(n*NDAC*sizeof(int));
detectorAdcs=malloc(n*NADC*sizeof(double)); detectorAdcs=malloc(n*NADC*sizeof(int));
#ifdef VERBOSE #ifdef VERBOSE
printf("modules from 0x%x to 0x%x\n",(unsigned int)(detectorModules), (unsigned int)(detectorModules+n)); printf("modules from 0x%x to 0x%x\n",(unsigned int)(detectorModules), (unsigned int)(detectorModules+n));
printf("chips from 0x%x to 0x%x\n",(unsigned int)(detectorChips), (unsigned int)(detectorChips+n*NCHIP)); printf("chips from 0x%x to 0x%x\n",(unsigned int)(detectorChips), (unsigned int)(detectorChips+n*NCHIP));
@ -540,15 +540,15 @@ int set_one_dac(int imod) {
return OK; return OK;
} }
double initDACbyIndex(int ind,double val, int imod) { int initDACbyIndex(int ind,int val, int imod) {
int v; int v;
const double partref[NDAC]=PARTREF; const int partref[NDAC]=PARTREF;
const double partr1[NDAC]=PARTR1; const int partr1[NDAC]=PARTR1;
const double partr2[NDAC]=PARTR2; const int partr2[NDAC]=PARTR2;
double ref=partref[ind]; int ref=partref[ind];
double r1=partr1[ind]; int r1=partr1[ind];
double r2=partr2[ind]; int r2=partr2[ind];
v=(val+(val-ref)*r1/r2)*DAC_DR/DAC_MAX; v=(val+(val-ref)*r1/r2)*DAC_DR/DAC_MAX;
@ -557,7 +557,7 @@ double initDACbyIndex(int ind,double val, int imod) {
return (v*DAC_MAX/DAC_DR+ref*r1/r2)/(1+r1/r2); return (v*DAC_MAX/DAC_DR+ref*r1/r2)/(1+r1/r2);
} }
double initDACbyIndexDACU(int ind, int val, int imod) { int initDACbyIndexDACU(int ind, int val, int imod) {
// const double daccs[NDAC]=DACCS; // const double daccs[NDAC]=DACCS;
// const double dacaddr[NDAC]=DACADDR; // const double dacaddr[NDAC]=DACADDR;
@ -643,7 +643,7 @@ int getThresholdEnergy() {
} }
#ifdef VERBOSE #ifdef VERBOSE
//printf("module=%d gain=%f, offset=%f, dacu=%f\n",imod, myg, myo, detectorDacs[VTHRESH+imod*NDAC]); //printf("module=%d gain=%f, offset=%f, dacu=%f\n",imod, myg, myo, detectorDacs[VTHRESH+imod*NDAC]);
printf("module=%d gain=%f, offset=%f, dacu=%f\n",imod, myg, myo,(double)(setDACRegister(VREF_DS,-1,imod)));//edited by dhanya printf("module=%d gain=%f, offset=%f, dacu=%d\n",imod, myg, myo,(int)(setDACRegister(VREF_DS,-1,imod)));//edited by dhanya
printf("Threshold energy of module %d is %d eV\n", imod, ethr); printf("Threshold energy of module %d is %d eV\n", imod, ethr);
#endif #endif
@ -715,7 +715,7 @@ int setThresholdEnergy(int ethr) {
double getDACbyIndexDACU(int ind, int imod) { int getDACbyIndexDACU(int ind, int imod) {
/* /*
if (detectorDacs) { if (detectorDacs) {
if (imod<getNModBoard()) if (imod<getNModBoard())
@ -741,7 +741,7 @@ int initDAC(int dac_addr, int value, int imod) {
return 0; return 0;
} }
double getTemperatureByModule(int tempSensor, int imod) int getTemperatureByModule(int tempSensor, int imod)
{ {
int im; int im;
//for the particular module //for the particular module

View File

@ -108,14 +108,14 @@ int set_one_dac(int imod);
int initDAC(int dac_addr, int value,int imod ); int initDAC(int dac_addr, int value,int imod );
int initDACs(int* v,int imod ); int initDACs(int* v,int imod );
int setSettings(int i,int imod); int setSettings(int i,int imod);
double initDACbyIndex(int ind,double val, int imod); int initDACbyIndex(int ind,int val, int imod);
double initDACbyIndexDACU(int ind,int val, int imod); int initDACbyIndexDACU(int ind,int val, int imod);
double getDACbyIndexDACU(int ind, int imod); int getDACbyIndexDACU(int ind, int imod);
int getThresholdEnergy(); int getThresholdEnergy();
int setThresholdEnergy(int ethr); int setThresholdEnergy(int ethr);
/* Other DAC index routines*/ /* Other DAC index routines*/
double getTemperatureByModule(int tempSensor, int imod); int getTemperatureByModule(int tempSensor, int imod);
int initHighVoltageByModule(int val, int imod); int initHighVoltageByModule(int val, int imod);
int initConfGainByModule(int isettings,int val,int imod); int initConfGainByModule(int isettings,int val,int imod);

View File

@ -899,13 +899,13 @@ int read_register(int file_des) {
int set_dac(int file_des) { int set_dac(int file_des) {
//default:all mods //default:all mods
double retval; int retval;
int ret=OK; int ret=OK;
int arg[2]; int arg[2];
enum dacIndex ind; enum dacIndex ind;
int imod; int imod;
int n; int n;
double val; int val;
int idac=0; int idac=0;
sprintf(mess,"Can't set DAC\n"); sprintf(mess,"Can't set DAC\n");
@ -925,7 +925,7 @@ int set_dac(int file_des) {
} }
#ifdef VERBOSE #ifdef VERBOSE
printf("Setting DAC %d of module %d to %f V\n", ind, imod, val); printf("Setting DAC %d of module %d to %d V\n", ind, imod, val);
#endif #endif
if (imod>=getNModBoard()) if (imod>=getNModBoard())
@ -997,11 +997,11 @@ int set_dac(int file_des) {
#endif #endif
#ifdef VERBOSE #ifdef VERBOSE
printf("DAC set to %f V\n", retval); printf("DAC set to %d V\n", retval);
#endif #endif
if(ret==FAIL) if(ret==FAIL)
printf("Setting dac %d of module %d: wrote %f but read %f\n", ind, imod, val, retval); printf("Setting dac %d of module %d: wrote %d but read %d\n", ind, imod, val, retval);
else{ else{
if (differentClients) if (differentClients)
ret=FORCE_UPDATE; ret=FORCE_UPDATE;
@ -1028,7 +1028,7 @@ int set_dac(int file_des) {
int get_adc(int file_des) { int get_adc(int file_des) {
//default: mod 0 //default: mod 0
double retval; int retval;
int ret=OK; int ret=OK;
int arg[2]; int arg[2];
enum dacIndex ind; enum dacIndex ind;
@ -1074,7 +1074,7 @@ int get_adc(int file_des) {
#endif #endif
#ifdef VERBOSE #ifdef VERBOSE
printf("ADC is %f V\n", retval); printf("ADC is %d V\n", retval);
#endif #endif
if (ret==FAIL) { if (ret==FAIL) {
printf("Getting adc %d of module %d failed\n", ind, imod); printf("Getting adc %d of module %d failed\n", ind, imod);
@ -1373,8 +1373,8 @@ int set_module(int file_des) {
sls_detector_module myModule; sls_detector_module myModule;
int *myChip=malloc(NCHIP*sizeof(int)); int *myChip=malloc(NCHIP*sizeof(int));
int *myChan=malloc(NCHIP*NCHAN*sizeof(int)); int *myChan=malloc(NCHIP*NCHAN*sizeof(int));
double *myDac=malloc(NDAC*sizeof(int)); int *myDac=malloc(NDAC*sizeof(int));/**dhanya*/
double *myAdc=malloc(NADC*sizeof(int)); int *myAdc=malloc(NADC*sizeof(int));/**dhanya*/
int retval, n; int retval, n;
int ret=OK; int ret=OK;
int dr;// ow; int dr;// ow;
@ -1416,7 +1416,6 @@ int set_module(int file_des) {
printf("Setting module\n"); printf("Setting module\n");
#endif #endif
ret=receiveModule(file_des, &myModule); ret=receiveModule(file_des, &myModule);
printf("11vref_ds:%f\n",myModule.dacs[0]);printf("11vin_cm:%f\n",myModule.dacs[5]);
if (ret>=0) if (ret>=0)
ret=OK; ret=OK;
@ -1492,8 +1491,8 @@ int get_module(int file_des) {
sls_detector_module myModule; sls_detector_module myModule;
int *myChip=malloc(NCHIP*sizeof(int)); int *myChip=malloc(NCHIP*sizeof(int));
int *myChan=malloc(NCHIP*NCHAN*sizeof(int)); int *myChan=malloc(NCHIP*NCHAN*sizeof(int));
double *myDac=malloc(NDAC*sizeof(int)); int *myDac=malloc(NDAC*sizeof(int));/**dhanya*/
double *myAdc=malloc(NADC*sizeof(int)); int *myAdc=malloc(NADC*sizeof(int));/**dhanya*/
if (myDac) if (myDac)