From b2b9861b954ecac4efe50f73cabc3b2f5369a5d5 Mon Sep 17 00:00:00 2001 From: sjpark608 Date: Wed, 26 Oct 2022 10:12:52 -0700 Subject: [PATCH 1/6] adc testing being added --- src/edgepi/adc/adc_constants.py | 5 ++++ src/edgepi/adc/edgepi_adc.py | 17 ++++++++++--- .../unit_tests/test_adc/test_edgepi_adc.py | 25 ++++++++++++++++++- 3 files changed, 43 insertions(+), 4 deletions(-) diff --git a/src/edgepi/adc/adc_constants.py b/src/edgepi/adc/adc_constants.py index 6a943d21..78a195f1 100644 --- a/src/edgepi/adc/adc_constants.py +++ b/src/edgepi/adc/adc_constants.py @@ -190,6 +190,11 @@ class FilterMode(Enum): SINC4 = OpCode(0x60, ADCReg.REG_MODE1.value, ADCMasks.FILTER_BITS.value) FIR = OpCode(0x80, ADCReg.REG_MODE1.value, ADCMasks.FILTER_BITS.value) +class ADCReferenceSwitching(Enum): + """ Each ADC Reference ground can be configured """ + GND_SW1 = 1 + GND_SW2 = 2 + GND_SW_BOTH = 3 class ADCPower(Enum): """OpCodes for configuring the ADS1263 POWER register""" diff --git a/src/edgepi/adc/edgepi_adc.py b/src/edgepi/adc/edgepi_adc.py index c2b680a8..4c2d7907 100644 --- a/src/edgepi/adc/edgepi_adc.py +++ b/src/edgepi/adc/edgepi_adc.py @@ -19,6 +19,7 @@ ConvMode, ADCReg, FilterMode, + ADCReferenceSwitching, ADC_NUM_REGS, ADC_VOLTAGE_READ_LEN, CheckMode, @@ -95,9 +96,6 @@ def __init__(self): super().__init__(bus_num=6, dev_id=1) self.adc_ops = ADCCommands() self.gpio = EdgePiGPIO(GpioConfigs.ADC.value) - self.gpio.set_expander_default() - # TODO: expander_pin might need changing in the future - self.gpio.set_expander_pin("GNDSW_IN1") # internal state self.__state = ADCState(reg_map=None) self.__set_power_on_configs() @@ -111,6 +109,8 @@ def __set_power_on_configs(self): checksum_mode=CheckMode.CHECK_BYTE_CRC, reset_clear=ADCPower.RESET_CLEAR, ) + self.gpio.clear_expander_pin("GNDSW_IN1") + self.gpio.clear_expander_pin("GNDSW_IN2") def __read_register(self, start_addx: ADCReg, num_regs: int = 1): """ @@ -157,6 +157,17 @@ def __write_register(self, start_addx: ADCReg, data: list[int]): return out + def set_adc_reference(self, reference_config: ADCReferenceSwitching = None): + if reference_config == ADCReferenceSwitching.GND_SW1.value: + self.gpio.set_expander_pin("GNDSW_IN1") + self.gpio.clear_expander_pin("GNDSW_IN2") + elif reference_config == ADCReferenceSwitching.GND_SW2.value: + self.gpio.set_expander_pin("GNDSW_IN2") + self.gpio.clear_expander_pin("GNDSW_IN1") + else : + self.gpio.set_expander_pin("GNDSW_IN1") + self.gpio.set_expander_pin("GNDSW_IN2") + def stop_conversions(self): """ Halt voltage read conversions when ADC is set to perform continuous conversions diff --git a/src/test_edgepi/unit_tests/test_adc/test_edgepi_adc.py b/src/test_edgepi/unit_tests/test_adc/test_edgepi_adc.py index 9142f13b..e3e2a27e 100644 --- a/src/test_edgepi/unit_tests/test_adc/test_edgepi_adc.py +++ b/src/test_edgepi/unit_tests/test_adc/test_edgepi_adc.py @@ -12,7 +12,12 @@ import pytest from edgepi.adc.edgepi_adc import ADCRegisterUpdateError, EdgePiADC -from edgepi.adc.adc_constants import ADC_NUM_REGS, ADCChannel as CH, ADCReg +from edgepi.adc.adc_constants import ( + ADC_NUM_REGS, + ADCReg, + ADCChannel as CH, + ADCReferenceSwitching +) from edgepi.reg_helper.reg_helper import OpCode, BitMask adc_default_vals = [ @@ -53,6 +58,12 @@ def fixture_adc(mocker): mocker.patch("edgepi.adc.edgepi_adc.EdgePiADC._EdgePiADC__write_register") yield EdgePiADC() +@pytest.fixture(name="adc_gpio_test") +def fixture_adc_gpio_test(mocker): + mocker.patch("edgepi.peripherals.spi.SPI") + mocker.patch("edgepi.adc.edgepi_adc.EdgePiADC.EdgePiGPIO") + mocker.patch("edgepi.adc.edgepi_adc.EdgePiADC._EdgePiADC__write_register") + yield EdgePiADC() def test_read_registers_to_map(mocker, adc): mocker.patch( @@ -567,3 +578,15 @@ def test_validate_updates(mocker, updated_regs, actual_regs, err, adc): ) with err: assert adc._EdgePiADC__validate_updates(updated_regs) + +@pytest.mark.parametrize("reference_config, pin_name", + [(ADCReferenceSwitching.GND_SW1.value, ["GNDSW_IN1", "GNDSW_IN2"]), + (ADCReferenceSwitching.GND_SW2.value, ["GNDSW_IN2", "GNDSW_IN1"]), + (ADCReferenceSwitching.GND_SW_BOTH.value, ["GNDSW_IN1", "GNDSW_IN2"])]) +def test_set_adc_reference(mocker,reference_config, pin_name, adc_gpio_test): + set_pin = mocker.patch("edgepi.gpio.edgepi_gpio.EdgePiGPIO.set_expander_pin") + clear_pin = mocker.patch("edgepi.gpio.edgepi_gpio.EdgePiGPIO.clear_expander_pin") + adc_gpio_test.set_adc_reference(reference_config) + set_pin.assert_called_once_with(pin_name[0]) + clear_pin.assert_called_once_with(pin_name[0]) + From 74ac36ac49f173532b7760be27bf524ee727fee8 Mon Sep 17 00:00:00 2001 From: sjpark608 Date: Wed, 26 Oct 2022 10:49:14 -0700 Subject: [PATCH 2/6] added test --- src/edgepi/adc/adc_constants.py | 1 + src/edgepi/adc/edgepi_adc.py | 12 ++++++++- .../unit_tests/test_adc/test_edgepi_adc.py | 26 +++++++++---------- 3 files changed, 24 insertions(+), 15 deletions(-) diff --git a/src/edgepi/adc/adc_constants.py b/src/edgepi/adc/adc_constants.py index 78a195f1..4650a48d 100644 --- a/src/edgepi/adc/adc_constants.py +++ b/src/edgepi/adc/adc_constants.py @@ -192,6 +192,7 @@ class FilterMode(Enum): class ADCReferenceSwitching(Enum): """ Each ADC Reference ground can be configured """ + GND_SW_NONE = 0 GND_SW1 = 1 GND_SW2 = 2 GND_SW_BOTH = 3 diff --git a/src/edgepi/adc/edgepi_adc.py b/src/edgepi/adc/edgepi_adc.py index 4c2d7907..3baf8378 100644 --- a/src/edgepi/adc/edgepi_adc.py +++ b/src/edgepi/adc/edgepi_adc.py @@ -158,15 +158,25 @@ def __write_register(self, start_addx: ADCReg, data: list[int]): return out def set_adc_reference(self, reference_config: ADCReferenceSwitching = None): + """ + Setting ADC referene terminal state. pin 18 and 23 labeled IN GND on the enclosure. It can + be configured as regular 0V GND or 12V GND. + + Args: + reference_config: (ADCReferenceSwitching): selecting none, 1, 2, both + """ if reference_config == ADCReferenceSwitching.GND_SW1.value: self.gpio.set_expander_pin("GNDSW_IN1") self.gpio.clear_expander_pin("GNDSW_IN2") elif reference_config == ADCReferenceSwitching.GND_SW2.value: self.gpio.set_expander_pin("GNDSW_IN2") self.gpio.clear_expander_pin("GNDSW_IN1") - else : + elif reference_config == ADCReferenceSwitching.GND_SW_BOTH.value: self.gpio.set_expander_pin("GNDSW_IN1") self.gpio.set_expander_pin("GNDSW_IN2") + elif reference_config == ADCReferenceSwitching.GND_SW_NONE.value: + self.gpio.clear_expander_pin("GNDSW_IN1") + self.gpio.clear_expander_pin("GNDSW_IN2") def stop_conversions(self): """ diff --git a/src/test_edgepi/unit_tests/test_adc/test_edgepi_adc.py b/src/test_edgepi/unit_tests/test_adc/test_edgepi_adc.py index e3e2a27e..d4cf971f 100644 --- a/src/test_edgepi/unit_tests/test_adc/test_edgepi_adc.py +++ b/src/test_edgepi/unit_tests/test_adc/test_edgepi_adc.py @@ -58,13 +58,6 @@ def fixture_adc(mocker): mocker.patch("edgepi.adc.edgepi_adc.EdgePiADC._EdgePiADC__write_register") yield EdgePiADC() -@pytest.fixture(name="adc_gpio_test") -def fixture_adc_gpio_test(mocker): - mocker.patch("edgepi.peripherals.spi.SPI") - mocker.patch("edgepi.adc.edgepi_adc.EdgePiADC.EdgePiGPIO") - mocker.patch("edgepi.adc.edgepi_adc.EdgePiADC._EdgePiADC__write_register") - yield EdgePiADC() - def test_read_registers_to_map(mocker, adc): mocker.patch( "edgepi.peripherals.spi.SpiDevice.transfer", @@ -579,14 +572,19 @@ def test_validate_updates(mocker, updated_regs, actual_regs, err, adc): with err: assert adc._EdgePiADC__validate_updates(updated_regs) -@pytest.mark.parametrize("reference_config, pin_name", +@pytest.mark.parametrize("reference_config, pin_name", [(ADCReferenceSwitching.GND_SW1.value, ["GNDSW_IN1", "GNDSW_IN2"]), (ADCReferenceSwitching.GND_SW2.value, ["GNDSW_IN2", "GNDSW_IN1"]), - (ADCReferenceSwitching.GND_SW_BOTH.value, ["GNDSW_IN1", "GNDSW_IN2"])]) -def test_set_adc_reference(mocker,reference_config, pin_name, adc_gpio_test): + (ADCReferenceSwitching.GND_SW_BOTH.value, ["GNDSW_IN1", "GNDSW_IN2"]), + (ADCReferenceSwitching.GND_SW_NONE.value, ["GNDSW_IN1", "GNDSW_IN2"])]) +def test_set_adc_reference(mocker,reference_config, pin_name, adc): set_pin = mocker.patch("edgepi.gpio.edgepi_gpio.EdgePiGPIO.set_expander_pin") clear_pin = mocker.patch("edgepi.gpio.edgepi_gpio.EdgePiGPIO.clear_expander_pin") - adc_gpio_test.set_adc_reference(reference_config) - set_pin.assert_called_once_with(pin_name[0]) - clear_pin.assert_called_once_with(pin_name[0]) - + adc.set_adc_reference(reference_config) + if reference_config == 1 or reference_config == 2: + set_pin.assert_called_once_with(pin_name[0]) + clear_pin.assert_called_once_with(pin_name[1]) + elif reference_config == 3: + set_pin.assert_has_calls([mock.call(pin_name[0]), mock.call(pin_name[1])]) + elif reference_config == 0: + clear_pin.assert_has_calls([mock.call(pin_name[0]), mock.call(pin_name[1])]) From e43ca5ad69fe8e98a7be96c012060a762139ebd4 Mon Sep 17 00:00:00 2001 From: sjpark608 <78987042+sjpark608@users.noreply.github.com> Date: Wed, 26 Oct 2022 10:37:18 -0700 Subject: [PATCH 3/6] Individual channel modification (#108) * Individual channel modification #103 - Only single pins gets accessed - simplified code calculate for now, calibration to be added * fixed voltage_to_code and code_to_voltage calculation * applying suggested fix --- src/edgepi/dac/dac_commands.py | 9 +++---- src/edgepi/dac/edgepi_dac.py | 16 +++++++------ .../unit_tests/test_dac/test_dac_commands.py | 24 +++++++++---------- .../unit_tests/test_dac/test_edgepi_dac.py | 20 ++++++++++++++++ 4 files changed, 46 insertions(+), 23 deletions(-) diff --git a/src/edgepi/dac/dac_commands.py b/src/edgepi/dac/dac_commands.py index da590019..601dfbff 100644 --- a/src/edgepi/dac/dac_commands.py +++ b/src/edgepi/dac/dac_commands.py @@ -29,9 +29,10 @@ def generate_write_and_update_command(self, ch: int, data: int) -> list: def __voltage_to_float_code(self, ch: int, expected: float): """Convert a voltage to full precision binary code value""" - float_code =(expected + self.dict_calib_param[ch].offset_1) / \ - (self.dict_calib_param[ch].gain_1 + - (CALIB_CONSTS.VOLTAGE_REF.value / CALIB_CONSTS.RANGE.value)) + # TODO: apply proper calculation + float_code =(expected + self.dict_calib_param[ch].offset_1) * \ + (CALIB_CONSTS.RANGE.value / \ + (CALIB_CONSTS.VOLTAGE_REF.value * self.dict_calib_param[ch].gain_1)) _logger.debug(f"Full code generated {float_code}") return float_code @@ -82,7 +83,7 @@ def extract_read_data(read_code: list) -> int: def __code_to_float_voltage(self, ch: int, code: int) -> float: """Convert a voltage to float voltage""" voltage = (CALIB_CONSTS.VOLTAGE_REF.value / - CALIB_CONSTS.RANGE.value + self.dict_calib_param[ch].gain_1) *\ + CALIB_CONSTS.RANGE.value * self.dict_calib_param[ch].gain_1) *\ code - self.dict_calib_param[ch].offset_1 return voltage diff --git a/src/edgepi/dac/edgepi_dac.py b/src/edgepi/dac/edgepi_dac.py index f7c00e61..fb7c3e79 100644 --- a/src/edgepi/dac/edgepi_dac.py +++ b/src/edgepi/dac/edgepi_dac.py @@ -24,7 +24,6 @@ from edgepi.gpio.gpio_configs import GpioConfigs -_logger = logging.getLogger(__name__) class EdgePiDAC(spi): @@ -62,7 +61,8 @@ class EdgePiDAC(spi): [2.5, 0, 5.0, 0], [2.5, 0, 5.0, 0]] def __init__(self): - _logger.info("Initializing DAC Bus") + self.log = logging.getLogger(__name__) + self.log.info("Initializing DAC Bus") super().__init__(bus_num=6, dev_id=3, mode=1, max_speed=1000000) self.dac_ops = DACCommands(generate_dict_calibration(DACcalibParam, @@ -71,7 +71,6 @@ def __init__(self): ), self.__analog_out_calib_param)) self.gpio = EdgePiGPIO(GpioConfigs.DAC.value) - self.gpio.set_expander_default() self.__dac_power_state = { CH.DAC7.value: PowerMode.NORMAL.value, @@ -113,7 +112,12 @@ def write_voltage(self, analog_out: int, voltage: float): self.dac_ops.check_range(voltage, 0, UPPER_LIMIT) dac_ch = self.__analog_out_to_dac_ch[analog_out] code = self.dac_ops.voltage_to_code(dac_ch, voltage) - print(code) + self.log.debug(f'Code: {code}') + + if self.gpio.get_pin_direction(self.__analog_out_pin_map[analog_out].value): + self.gpio.clear_expander_pin(self.__analog_out_pin_map[analog_out].value) + self.gpio.set_pin_direction_out(self.__analog_out_pin_map[analog_out].value) + # update DAC register self.transfer(self.dac_ops.generate_write_and_update_command(dac_ch, code)) # send voltage to analog out pin @@ -146,8 +150,6 @@ def reset(self): """ cmd = self.dac_ops.combine_command(COM.COM_SW_RESET.value, NULL_BITS, SW_RESET) self.transfer(cmd) - # return gpio pins to low - self.gpio.set_expander_default() def compute_expected_voltage(self, analog_out: int) -> float: """ @@ -171,6 +173,6 @@ def compute_expected_voltage(self, analog_out: int) -> float: # all zero dummy command to trigger second transfer which # contains the DAC register contents. read_data = self.transfer([NULL_BITS, NULL_BITS, NULL_BITS]) - _logger.debug(f"reading code {read_data}") + self.log.debug(f"reading code {read_data}") code = self.dac_ops.extract_read_data(read_data) return self.dac_ops.code_to_voltage(dac_ch, code) diff --git a/src/test_edgepi/unit_tests/test_dac/test_dac_commands.py b/src/test_edgepi/unit_tests/test_dac/test_dac_commands.py index 05d9f509..ea8d44cb 100644 --- a/src/test_edgepi/unit_tests/test_dac/test_dac_commands.py +++ b/src/test_edgepi/unit_tests/test_dac/test_dac_commands.py @@ -10,14 +10,14 @@ @pytest.fixture(name="dac_ops") def fixture_test_dac_ops(): - dict_calibration_param = {0 : DACcalibParam(2.5/65535, 0, 5.0/65535, 0), - 1 : DACcalibParam(2.5/65535, 0, 5.0/65535, 0), - 2 : DACcalibParam(2.5/65535, 0, 5.0/65535, 0), - 3 : DACcalibParam(2.5/65535, 0, 5.0/65535, 0), - 4 : DACcalibParam(2.5/65535, 0, 5.0/65535, 0), - 5 : DACcalibParam(2.5/65535, 0, 5.0/65535, 0), - 6 : DACcalibParam(2.5/65535, 0, 5.0/65535, 0), - 7 : DACcalibParam(2.5/65535, 0, 5.0/65535, 0)} + dict_calibration_param = {0 : DACcalibParam(2.5, 0, 5.0, 0), + 1 : DACcalibParam(2.5, 0, 5.0, 0), + 2 : DACcalibParam(2.5, 0, 5.0, 0), + 3 : DACcalibParam(2.5, 0, 5.0, 0), + 4 : DACcalibParam(2.5, 0, 5.0, 0), + 5 : DACcalibParam(2.5, 0, 5.0, 0), + 6 : DACcalibParam(2.5, 0, 5.0, 0), + 7 : DACcalibParam(2.5, 0, 5.0, 0)} dac_ops = DACCommands(dict_calibration_param) return dac_ops @@ -107,7 +107,7 @@ def test_dac_generate_write_and_update_command(a, b, c, dac_ops): @pytest.mark.parametrize( - "ch, expected, result", [(1, 2.345, 33798), (0, 2.345, 33798), (3, 2.345, 33798)] + "ch, expected, result", [(1, 2.345, 30030), (0, 2.345, 30030), (3, 2.345, 30030)] ) def test_dac_voltage_to_code(ch, expected, result, dac_ops): assert dac_ops.voltage_to_code(ch, expected) == result @@ -116,9 +116,9 @@ def test_dac_voltage_to_code(ch, expected, result, dac_ops): @pytest.mark.parametrize( "ch, code, result", [ - (1, 33798, 2.345), - (0, 33798, 2.345), - (3, 33798, 2.345), + (1, 33798, 2.639), + (0, 33798, 2.639), + (3, 33798, 2.639), ], ) def test_dac_code_to_voltage(ch, code, result, dac_ops): diff --git a/src/test_edgepi/unit_tests/test_dac/test_edgepi_dac.py b/src/test_edgepi/unit_tests/test_dac/test_edgepi_dac.py index f0bcfe5f..3e3071e0 100644 --- a/src/test_edgepi/unit_tests/test_dac/test_edgepi_dac.py +++ b/src/test_edgepi/unit_tests/test_dac/test_edgepi_dac.py @@ -25,6 +25,12 @@ def fixture_test_dac(mocker): mocker.patch("edgepi.dac.edgepi_dac.EdgePiGPIO") yield EdgePiDAC() +@pytest.fixture(name="dac_mock_periph") +def fixture_test_dac_write_voltage(mocker): + mocker.patch("edgepi.peripherals.spi.SPI") + mocker.patch("edgepi.peripherals.i2c.I2C") + yield EdgePiDAC() + _default_power_modes = { CH.DAC7.value: PowerMode.NORMAL.value, @@ -169,3 +175,17 @@ def test_send_to_gpio_pins_raises(analog_out, voltage, dac): with pytest.raises(ValueError) as err: dac._EdgePiDAC__send_to_gpio_pins(analog_out, voltage) assert err.value == "voltage cannot be negative" + + +@pytest.mark.parametrize("anaolog_out, voltage, result", + [(1, 2.123, [27187]), + (2, 2.123, [27187]), + (3, 2.123, [27187]), + (4, 2.123, [27187]), + (5, 2.123, [27187]), + (6, 2.123, [27187]), + (7, 2.123, [27187]), + (8, 2.123, [27187]) + ]) +def test_write_voltage(anaolog_out, voltage, result, dac_mock_periph): + assert result[0] == dac_mock_periph.write_voltage(anaolog_out, voltage) From 7f0343b43c6d54e9026e67ecc62ede21523746a0 Mon Sep 17 00:00:00 2001 From: sjpark608 Date: Thu, 27 Oct 2022 15:44:02 -0700 Subject: [PATCH 4/6] added todo and fixed pylint --- src/edgepi/adc/edgepi_adc.py | 3 +++ src/test_edgepi/unit_tests/test_adc/test_edgepi_adc.py | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/edgepi/adc/edgepi_adc.py b/src/edgepi/adc/edgepi_adc.py index 3baf8378..c8c9fc0d 100644 --- a/src/edgepi/adc/edgepi_adc.py +++ b/src/edgepi/adc/edgepi_adc.py @@ -99,6 +99,9 @@ def __init__(self): # internal state self.__state = ADCState(reg_map=None) self.__set_power_on_configs() + # TODO: adc reference should ba a config that customer passes depending on the range of + # voltage they are measuring. To be changed later when range config is implemented + self.set_adc_reference(ADCReferenceSwitching.GND_SW1.value) # TODO: get gain, offset, ref configs from the config module def __set_power_on_configs(self): diff --git a/src/test_edgepi/unit_tests/test_adc/test_edgepi_adc.py b/src/test_edgepi/unit_tests/test_adc/test_edgepi_adc.py index d4cf971f..561b7909 100644 --- a/src/test_edgepi/unit_tests/test_adc/test_edgepi_adc.py +++ b/src/test_edgepi/unit_tests/test_adc/test_edgepi_adc.py @@ -581,7 +581,7 @@ def test_set_adc_reference(mocker,reference_config, pin_name, adc): set_pin = mocker.patch("edgepi.gpio.edgepi_gpio.EdgePiGPIO.set_expander_pin") clear_pin = mocker.patch("edgepi.gpio.edgepi_gpio.EdgePiGPIO.clear_expander_pin") adc.set_adc_reference(reference_config) - if reference_config == 1 or reference_config == 2: + if reference_config in [1, 2]: set_pin.assert_called_once_with(pin_name[0]) clear_pin.assert_called_once_with(pin_name[1]) elif reference_config == 3: From 306063bc7ee9f06030d3efc9f0a5be7ae3072b6b Mon Sep 17 00:00:00 2001 From: sjpark608 Date: Thu, 27 Oct 2022 22:35:38 -0700 Subject: [PATCH 5/6] used enums for pin names --- src/edgepi/adc/edgepi_adc.py | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/edgepi/adc/edgepi_adc.py b/src/edgepi/adc/edgepi_adc.py index c8c9fc0d..9bff4af5 100644 --- a/src/edgepi/adc/edgepi_adc.py +++ b/src/edgepi/adc/edgepi_adc.py @@ -27,7 +27,7 @@ ) from edgepi.adc.adc_voltage import code_to_voltage, check_crc from edgepi.gpio.edgepi_gpio import EdgePiGPIO -from edgepi.gpio.gpio_configs import GpioConfigs +from edgepi.gpio.gpio_configs import GpioConfigs, ADCPins from edgepi.utilities.utilities import filter_dict from edgepi.reg_helper.reg_helper import OpCode, apply_opcodes from edgepi.adc.adc_multiplexers import ( @@ -112,8 +112,8 @@ def __set_power_on_configs(self): checksum_mode=CheckMode.CHECK_BYTE_CRC, reset_clear=ADCPower.RESET_CLEAR, ) - self.gpio.clear_expander_pin("GNDSW_IN1") - self.gpio.clear_expander_pin("GNDSW_IN2") + self.gpio.clear_expander_pin(ADCPins.GNDSW_IN1.value) + self.gpio.clear_expander_pin(ADCPins.GNDSW_IN2.value) def __read_register(self, start_addx: ADCReg, num_regs: int = 1): """ @@ -169,17 +169,17 @@ def set_adc_reference(self, reference_config: ADCReferenceSwitching = None): reference_config: (ADCReferenceSwitching): selecting none, 1, 2, both """ if reference_config == ADCReferenceSwitching.GND_SW1.value: - self.gpio.set_expander_pin("GNDSW_IN1") - self.gpio.clear_expander_pin("GNDSW_IN2") + self.gpio.set_expander_pin(ADCPins.GNDSW_IN1.value) + self.gpio.clear_expander_pin(ADCPins.GNDSW_IN2.value) elif reference_config == ADCReferenceSwitching.GND_SW2.value: - self.gpio.set_expander_pin("GNDSW_IN2") - self.gpio.clear_expander_pin("GNDSW_IN1") + self.gpio.set_expander_pin(ADCPins.GNDSW_IN2.value) + self.gpio.clear_expander_pin(ADCPins.GNDSW_IN1.value) elif reference_config == ADCReferenceSwitching.GND_SW_BOTH.value: - self.gpio.set_expander_pin("GNDSW_IN1") - self.gpio.set_expander_pin("GNDSW_IN2") + self.gpio.set_expander_pin(ADCPins.GNDSW_IN1.value) + self.gpio.set_expander_pin(ADCPins.GNDSW_IN2.value) elif reference_config == ADCReferenceSwitching.GND_SW_NONE.value: - self.gpio.clear_expander_pin("GNDSW_IN1") - self.gpio.clear_expander_pin("GNDSW_IN2") + self.gpio.clear_expander_pin(ADCPins.GNDSW_IN1.value) + self.gpio.clear_expander_pin(ADCPins.GNDSW_IN2.value) def stop_conversions(self): """ From cf6d1335f8a906515baf4cd277668d1796985438 Mon Sep 17 00:00:00 2001 From: sjpark608 Date: Fri, 28 Oct 2022 10:20:01 -0700 Subject: [PATCH 6/6] Update edgepi_adc.py removed clear exapnder to avoid resetting of Ground reference when a new object is instantiated --- src/edgepi/adc/edgepi_adc.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/edgepi/adc/edgepi_adc.py b/src/edgepi/adc/edgepi_adc.py index 9bff4af5..86103b8c 100644 --- a/src/edgepi/adc/edgepi_adc.py +++ b/src/edgepi/adc/edgepi_adc.py @@ -112,8 +112,6 @@ def __set_power_on_configs(self): checksum_mode=CheckMode.CHECK_BYTE_CRC, reset_clear=ADCPower.RESET_CLEAR, ) - self.gpio.clear_expander_pin(ADCPins.GNDSW_IN1.value) - self.gpio.clear_expander_pin(ADCPins.GNDSW_IN2.value) def __read_register(self, start_addx: ADCReg, num_regs: int = 1): """