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; |
|