forked from M-Labs/nix-servo
test nixbld
This commit is contained in:
parent
8b20379427
commit
79315d3d1b
49
fast-servo/pyfastservo/loopback.py
Normal file
49
fast-servo/pyfastservo/loopback.py
Normal file
@ -0,0 +1,49 @@
|
||||
import time
|
||||
from pyfastservo import adc, dac
|
||||
from pyfastservo.common import (
|
||||
ADC_CH0_HIGH_ADDR,
|
||||
ADC_CH0_LOW_ADDR,
|
||||
CH0_HIGH_WORD_ADDR,
|
||||
CH0_LOW_WORD_ADDR,
|
||||
read_from_memory,
|
||||
write_to_memory
|
||||
)
|
||||
###
|
||||
|
||||
def read_adc():
|
||||
adc_value = adc.read_adc_channel(ADC_CH0_HIGH_ADDR, ADC_CH0_LOW_ADDR)
|
||||
return adc_value
|
||||
|
||||
def write_dac(value):
|
||||
dac.set_dac_output(value)
|
||||
|
||||
def read_dac():
|
||||
high_word = read_from_memory(CH0_HIGH_WORD_ADDR, 1)[0]
|
||||
low_word = read_from_memory(CH0_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()
|
Loading…
Reference in New Issue
Block a user