#!/usr/bin/env python3 from perseus.client import ModuleClient import sys, time # Initializes the clock generator, ADC, and trigger system. At the end, # will print some statistics from the ADC for sanity-check purposes. # # Run as: python om-init.py discokraken_XXXXXX.local m = ModuleClient(sys.argv[1]) m.tuber_resolve() print("Initializing clocks") m.timing.init_ad9546() if m.timing.status()["ref_status"]["B"]["flags"] == ["valid"]: start_time = time.time() while time.time() - start_time < 120: time.sleep(2) skew = m.timing.skew() print(skew) if skew != 0 and abs(skew) < 10: break print("Final skew:", skew) else: print("No timing SFP installed! Operating in standalone mode") print("Initializing DAQ") try: m.adc.init() if not m.adc.rx_status()["global_aligned"]: time.sleep(1) m.adc.init() except: print(m.adc.rx_status()) raise print("RX status:") rxstat = m.adc.rx_status() print(rxstat) print("Aligned: ", rxstat["global_aligned"]) if not rxstat["global_aligned"]: raise RuntimeError("ADC initialization failed") time.sleep(2) t = m.trigger print("Running for %.2f seconds" % (t.current_sample() / 208.33333e6)) print("Mean: ", t.channel_means(100)) print("RMS: ", t.channel_rms(100)) print(t.timecode_sync_data())