Subversion Repositories f9daq

Compare Revisions

Ignore whitespace Rev 356 → Rev 357

/cvi/apps/sa02_daq/sa02lib.c
113,6 → 113,43
return i;
};
 
#define ADC_VCC 3.3
#define AMP_IB_min -1.15e-6
#define ADC_IB_min 2355
#define AMP_IB_max 0.2e-6
#define ADC_IB_max 2665
 
double sa02ampIb(int adc) {
if (adc <= ADC_IB_min) return AMP_IB_min;
if (adc > ADC_IB_max) return AMP_IB_max;
return AMP_IB_min + ((AMP_IB_max-AMP_IB_min)/(ADC_IB_max-ADC_IB_min)) * (adc - ADC_IB_min);
}
double sa02adc2V(int adc) {
adc &=0xFFF;
return ADC_VCC * (double)adc/4096;
}
 
double sa02adc2Vp(int adc) {
adc &=0xFFF;
return ADC_VCC * (double)adc/4096 + 1.0e+4 * sa02ampIb(adc);
}
 
double sa02adc2Vm(int adc) {
adc &=0xFFF;
return ADC_VCC * (2. * (double)adc/4096. - 1.) + 5.1e+4 * sa02ampIb(adc);
}
 
double sa02adc2V38(int adc) {
adc &=0xFFF;
return ADC_VCC * (2. * (double)adc/4096.) + 5.1e+4 * sa02ampIb(adc);
}
 
double sa02adc2Va(int adc) {
adc &=0xFFF;
return ADC_VCC * (double)adc/4096. - (ADC_VCC/2. + 0.06);
}
 
//-------------------------------------------------------------------------
 
uint32_t sa02Write(uint32_t sa02BoardNumber, uint32_t regh, uint32_t regl, uint32_t *response)
199,7 → 236,6
return 0;
}
 
 
int Sa02SoftwareTrigger (void ) {
uint32_t rdy =1;
VME_MWRST();
208,8 → 244,6
return 0;
}
 
 
 
int Sa02TestPulseEnable (uint32_t board, uint32_t enable ) {
 
uint32_t response[2]= {0,0};
847,7 → 881,7
Delay(0.01);
cmd=FEB_ADC_READ;
val=sa02Cmd(board, cmd, data, chip, channel ,1,response);
doubleval = ((val & 0xFFF) + 0.5)/0x1000 * 3.3;
doubleval = sa02adc2Vp(val);
sa02Printf("VDD = %6.3f V\n",doubleval);
sdata[i++]=doubleval;
 
857,7 → 891,7
Delay(0.01);
cmd=FEB_ADC_READ;
val=sa02Cmd(board, cmd, data, chip, channel ,1,response);
doubleval = ((val & 0xFFF) + 0.5)/0x1000 * 3.3;
doubleval = sa02adc2Vp(val);
sa02Printf("V+2 = %6.3f V\n",doubleval);
sdata[i++]=doubleval;
 
867,7 → 901,7
Delay(0.01);
cmd=FEB_ADC_READ;
val=sa02Cmd(board, cmd, data, chip, channel ,1,response);
doubleval = (2*((val & 0xFFF) + 0.5)/0x1000 - 1.) * 3.3;
doubleval = sa02adc2Vm(val);
sa02Printf("V-2 = %6.3f V\n",doubleval);
sdata[i++]=doubleval;
 
878,7 → 912,7
Delay(0.01);
cmd=FEB_ADC_READ;
val=sa02Cmd(board, cmd, data, chip, channel ,1,response);
doubleval = (2*((val & 0xFFF) + 0.5)/0x1000 - 1.) * 3.3;
doubleval = sa02adc2Vm(val);
sa02Printf("VSS = %6.3f V\n",doubleval);
sdata[i++]=doubleval;
 
889,9 → 923,9
cmd=FEB_ADC_READ;
val=sa02Cmd(board, cmd, data, chip, channel ,1,response);
if (sa02BoardType>2)
doubleval = (2*((val & 0xFFF) + 0.5)/0x1000 - 1.) * 3.3;
doubleval = sa02adc2Vm(val);
else
doubleval = ((val & 0xFFF) + 0.5)/0x1000 * 3.3;
doubleval = sa02adc2V(val);
sa02Printf("VTH1 = %6.3f V\n",doubleval);
sdata[i++]=doubleval;
 
902,9 → 936,9
cmd=FEB_ADC_READ;
val=sa02Cmd(board, cmd, data, chip, channel ,1,response);
if (sa02BoardType>2)
doubleval = (2*((val & 0xFFF) + 0.5)/0x1000 - 1.) * 3.3;
doubleval = sa02adc2Vm(val);
else
doubleval = ((val & 0xFFF) + 0.5)/0x1000 * 3.3;
doubleval = sa02adc2V(val);
sa02Printf("VTH2 = %6.3f V\n",doubleval);
sdata[i++]=doubleval;
 
914,7 → 948,7
Delay(0.01);
cmd=FEB_ADC_READ;
val=sa02Cmd(board, cmd, data, chip, channel ,1,response);
doubleval = ((val & 0xFFF) + 0.5)/0x1000 * 3.3;
doubleval = sa02adc2Vp(val);
sa02Printf("VCC12 = %6.3f V\n",doubleval);
sdata[i++]=doubleval;
 
924,7 → 958,7
Delay(0.01);
cmd=FEB_ADC_READ;
val=sa02Cmd(board, cmd, data, chip, channel ,1,response);
doubleval = ((val & 0xFFF) + 0.5)/0x1000 * 3.3;
doubleval = sa02adc2Vp(val);
sa02Printf("VCC15 = %6.3f V\n",doubleval);
sdata[i++]=doubleval;
 
934,7 → 968,7
Delay(0.01);
cmd=FEB_ADC_READ;
val=sa02Cmd(board, cmd, data, chip, channel ,1,response);
doubleval = ((val & 0xFFF) + 0.5)/0x1000 * 3.3;
doubleval = sa02adc2Vp(val);
sa02Printf("VCC25 = %6.3f V\n",doubleval);
sdata[i++]=doubleval;
 
944,7 → 978,7
Delay(0.01);
cmd=FEB_ADC_READ;
val=sa02Cmd(board, cmd, data, chip, channel ,1,response);
doubleval = 2 * ((val & 0xFFF) + 0.5)/0x1000 * 3.3;
doubleval = sa02adc2V38(val);
sa02Printf("V+3.8 = %6.3f V\n",doubleval);
sdata[i++]=doubleval;