use bipolar range when pegging pregain offset before unipolar postgain

calibration
This commit is contained in:
Frank Mori Hess 2003-06-13 21:49:27 +00:00
parent 07b25b2b9f
commit a61dcfa9f7
2 changed files with 11 additions and 7 deletions

View file

@ -71,6 +71,7 @@ void generic_prep_adc_caldacs( calibration_setup_t *setup,
reset_caldac( setup, layout->adc_gain( channel ) );
reset_caldac( setup, layout->adc_offset_fine( channel ) );
reset_caldac( setup, layout->adc_gain_fine( channel ) );
reset_caldac( setup, layout->adc_postgain_offset( channel ) );
}else
{
retval = comedi_apply_parsed_calibration( setup->dev, setup->ad_subdev,
@ -82,6 +83,7 @@ void generic_prep_adc_caldacs( calibration_setup_t *setup,
reset_caldac( setup, layout->adc_gain( channel ) );
reset_caldac( setup, layout->adc_offset_fine( channel ) );
reset_caldac( setup, layout->adc_gain_fine( channel ) );
reset_caldac( setup, layout->adc_postgain_offset( channel ) );
}
}
}
@ -174,25 +176,27 @@ static void generic_do_adc_postgain_offset( calibration_setup_t *setup, const ge
comedi_calibration_setting_t *current_cal, unsigned int channel, int unipolar )
{
int lowgain, highgain;
int bip_lowgain;
bip_lowgain = get_bipolar_lowgain( setup->dev, setup->ad_subdev );
if( unipolar )
{
lowgain = get_unipolar_lowgain( setup->dev, setup->ad_subdev );
highgain = get_unipolar_highgain( setup->dev, setup->ad_subdev );
}else
{
lowgain = get_bipolar_lowgain( setup->dev, setup->ad_subdev );
lowgain = bip_lowgain;
highgain = get_bipolar_highgain( setup->dev, setup->ad_subdev );
}
generic_prep_adc_caldacs( setup, layout, channel, highgain );
if( unipolar )
{
reset_caldac( setup, layout->adc_postgain_offset( channel ) );
/* need to make sure we aren't stuck on zero for unipolar,
* by setting pregain offset to maximum */
generic_peg( setup, layout->adc_ground_observable( setup, channel, lowgain ),
/* Need to make sure we aren't stuck on zero for unipolar,
* by setting pregain offset to maximum. Use bipolar lowgain
* for pegs to make sure we aren't out-of-range. */
generic_peg( setup, layout->adc_ground_observable( setup, channel, bip_lowgain ),
layout->adc_offset( channel ), 1 );
generic_peg( setup, layout->adc_ground_observable( setup, channel, lowgain ),
generic_peg( setup, layout->adc_ground_observable( setup, channel, bip_lowgain ),
layout->adc_offset_fine( channel ), 1 );
}
generic_do_relative( setup, current_cal, layout->adc_ground_observable( setup, channel, lowgain ),

View file

@ -573,6 +573,6 @@ int cb_actual_source_voltage( comedi_t *dev, unsigned int subdevice, unsigned in
return -1;
}
DPRINT(0, "eeprom ch 0x%x gives calibration source of %gV\n", eeprom_channel, *voltage);
DPRINT(1, "eeprom ch 0x%x gives calibration source of %gV\n", eeprom_channel, *voltage);
return 0;
}