55from time import sleep
66import pytest
77from edgepi .adc .edgepi_adc import EdgePiADC
8- from edgepi .adc .adc_constants import AnalogIn , ADCNum , DiffMode
8+ from edgepi .adc .adc_constants import AnalogIn , ADCNum , DiffMode , ADCChannel
99from edgepi .dac .edgepi_dac import EdgePiDAC
1010from edgepi .dac .dac_constants import DACChannel
1111
1212
1313_logger = logging .getLogger (__name__ )
1414
1515
16- NUM_CHANNELS = 8
16+ NUM_CHANNELS = 2
1717READS_PER_WRITE = 1
1818RW_ERROR = 1e-1 # TODO: change to mV
1919MAX_VOLTAGE = 5.0
3636@pytest .fixture (name = "adc_1" , scope = "module" )
3737def fixture_adc_1 ():
3838 adc = EdgePiADC ()
39+ adc .reset ()
3940 adc .start_conversions (ADCNum .ADC_1 )
4041 yield adc
4142 adc .stop_conversions (ADCNum .ADC_1 )
@@ -44,6 +45,7 @@ def fixture_adc_1():
4445@pytest .fixture (name = "adc_2" , scope = "module" )
4546def fixture_adc_2 ():
4647 adc = EdgePiADC ()
48+ adc .reset ()
4749 adc .start_conversions (ADCNum .ADC_2 )
4850 yield adc
4951 adc .stop_conversions (ADCNum .ADC_2 )
@@ -114,11 +116,11 @@ def _generate_diff_test_cases():
114116 f"read_write_error_tolerance: +/- { RW_ERROR } V, num_read_trials: { READS_PER_WRITE } "
115117 )
116118 )
117- for diff in DiffMode :
118- voltage = 0
119- while voltage < MAX_VOLTAGE - VOLTAGE_STEP :
120- voltage += VOLTAGE_STEP
121- yield diff , voltage , voltage
119+ diff = DiffMode . DIFF_2
120+ voltage = 0
121+ while voltage < MAX_VOLTAGE - VOLTAGE_STEP :
122+ voltage += VOLTAGE_STEP
123+ yield diff , voltage
122124
123125
124126def _measure_voltage_differential (
@@ -127,48 +129,52 @@ def _measure_voltage_differential(
127129 # write to DAC channel
128130 for channel , write_voltage in write_voltages .items ():
129131 dac .write_voltage (channel , write_voltage )
130-
132+ write_volt = write_voltage
133+ sleep (WRITE_READ_DELAY )
131134 for _ in range (READS_PER_WRITE ):
132135 read_voltage = adc .read_voltage (adc_num )
133136 _logger .info (f"diff_read_voltage = { read_voltage } " )
134- _assert_approx (0 , read_voltage , RW_ERROR )
137+ _assert_approx (write_volt / 2 , read_voltage , RW_ERROR )
135138
136139
137140_diff_ch_map = {
138- AnalogIn . AIN1 : DACChannel .AOUT1 ,
139- AnalogIn . AIN2 : DACChannel .AOUT2 ,
140- AnalogIn . AIN3 : DACChannel .AOUT3 ,
141- AnalogIn . AIN4 : DACChannel .AOUT4 ,
142- AnalogIn . AIN5 : DACChannel .AOUT5 ,
143- AnalogIn . AIN6 : DACChannel .AOUT6 ,
144- AnalogIn . AIN7 : DACChannel .AOUT7 ,
145- AnalogIn . AIN8 : DACChannel .AOUT8 ,
141+ ADCChannel . AIN0 : DACChannel .AOUT1 ,
142+ ADCChannel . AIN1 : DACChannel .AOUT2 ,
143+ ADCChannel . AIN2 : DACChannel .AOUT3 ,
144+ ADCChannel . AIN3 : DACChannel .AOUT4 ,
145+ ADCChannel . AIN4 : DACChannel .AOUT5 ,
146+ ADCChannel . AIN5 : DACChannel .AOUT6 ,
147+ ADCChannel . AIN6 : DACChannel .AOUT7 ,
148+ ADCChannel . AIN7 : DACChannel .AOUT8 ,
146149}
147150
148151
149- @pytest .mark .parametrize ("diff, mux_p_volt, mux_n_volt " , _generate_diff_test_cases ())
150- def test_differential_rw_adc_1 (diff , mux_p_volt , mux_n_volt , adc_1 , dac ):
152+ @pytest .mark .parametrize ("diff, mux_p_volt" , _generate_diff_test_cases ())
153+ def test_differential_rw_adc_1 (diff , mux_p_volt , adc_1 , dac ):
151154 adc_1 .select_differential (ADCNum .ADC_1 , diff )
155+ adc_1 .start_conversions (ADCNum .ADC_1 )
152156 _logger .info (
153157 f"voltage read/write diff pair: mux_p = { diff .value .mux_p } , mux_n = { diff .value .mux_n } "
154158 )
155- _logger .info (f"mux_p_write_voltage = { mux_p_volt } , mux_n_write_voltage = { mux_n_volt } " )
159+ _logger .info (f"mux_p_write_voltage = { mux_p_volt } " )
156160 write_voltages = {
157- _diff_ch_map [diff .value .mux_p ]: mux_p_volt ,
158- _diff_ch_map [diff .value .mux_n ]: mux_n_volt ,
161+ _diff_ch_map [diff .value .mux_p ]: mux_p_volt
159162 }
160163 _measure_voltage_differential (adc_1 , dac , ADCNum .ADC_1 , write_voltages )
164+ adc_1 .stop_conversions (ADCNum .ADC_1 )
165+
161166
162167
163- @pytest .mark .parametrize ("diff, mux_p_volt, mux_n_volt " , _generate_diff_test_cases ())
164- def test_differential_rw_adc_2 (diff , mux_p_volt , mux_n_volt , adc_2 , dac ):
168+ @pytest .mark .parametrize ("diff, mux_p_volt" , _generate_diff_test_cases ())
169+ def test_differential_rw_adc_2 (diff , mux_p_volt , adc_2 , dac ):
165170 adc_2 .select_differential (ADCNum .ADC_2 , diff )
171+ adc_2 .start_conversions (ADCNum .ADC_2 )
166172 _logger .info (
167173 f"voltage read/write diff pair: mux_p = { diff .value .mux_p } , mux_n = { diff .value .mux_n } "
168174 )
169- _logger .info (f"mux_p_write_voltage = { mux_p_volt } , mux_n_write_voltage = { mux_n_volt } " )
175+ _logger .info (f"mux_p_write_voltage = { mux_p_volt } " )
170176 write_voltages = {
171- _diff_ch_map [diff .value .mux_p ]: mux_p_volt ,
172- _diff_ch_map [diff .value .mux_n ]: mux_n_volt ,
177+ _diff_ch_map [diff .value .mux_p ]: mux_p_volt
173178 }
174179 _measure_voltage_differential (adc_2 , dac , ADCNum .ADC_2 , write_voltages )
180+ adc_2 .stop_conversions (ADCNum .ADC_2 )
0 commit comments