From a61dcfa9f79c7682640559c706660c1bc0087803 Mon Sep 17 00:00:00 2001 From: Frank Mori Hess Date: Fri, 13 Jun 2003 21:49:27 +0000 Subject: [PATCH] use bipolar range when pegging pregain offset before unipolar postgain calibration --- comedi_calibrate/cal_common.c | 16 ++++++++++------ comedi_calibrate/cb.c | 2 +- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/comedi_calibrate/cal_common.c b/comedi_calibrate/cal_common.c index 8db2c1c..18739c3 100644 --- a/comedi_calibrate/cal_common.c +++ b/comedi_calibrate/cal_common.c @@ -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 ), diff --git a/comedi_calibrate/cb.c b/comedi_calibrate/cb.c index 1093966..034e366 100644 --- a/comedi_calibrate/cb.c +++ b/comedi_calibrate/cb.c @@ -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; } -- 2.26.2