import time from pyfastservo import adc, dac from pyfastservo.common import ( ADC_CH1_HIGH_ADDR, ADC_CH1_LOW_ADDR, CH1_HIGH_WORD_ADDR, CH1_LOW_WORD_ADDR, read_from_memory, write_to_memory ) def read_adc(): adc_value = adc.read_adc_channel(ADC_CH1_HIGH_ADDR, ADC_CH1_LOW_ADDR) return adc_value def write_dac(value): dac.set_dac_output(value) def read_dac(): high_word = read_from_memory(CH1_HIGH_WORD_ADDR, 1)[0] low_word = read_from_memory(CH1_LOW_WORD_ADDR, 1)[0] return (high_word << 8) | low_word def perform_loopback_test(test_value): print(f"Setting DAC output to {test_value}...") write_dac(test_value) time.sleep(0.1) # Allow time for the signal to stabilize print("Reading ADC value...") adc_value = read_adc() print(f"ADC readback: {adc_value}") print("Reading DAC value...") dac_value = read_dac() print(f"DAC readback: {dac_value}") if abs(test_value - adc_value) <= 2 and abs(test_value - dac_value) <= 2: print("Loopback test PASSED!") else: print("Loopback test FAILED!") print(f"Expected: {test_value}, ADC: {adc_value}, DAC: {dac_value}") def main(): test_value = 0x2000 # Mid-range value (8192 in decimal) perform_loopback_test(test_value) if __name__ == "__main__": main()