Source code for pyrpl.test.test_hardware_modules.test_trig
import logging
logger = logging.getLogger(name=__name__)
import time
import numpy as np
from time import sleep
from qtpy import QtCore, QtWidgets
from pyrpl.test.test_base import TestPyrpl
[docs]class TestScope(TestPyrpl):
[docs] def setup(self):
self.asg = self.pyrpl.asgs.pop("trigtest")
self.t = self.pyrpl.rp.trig
[docs] def teardown(self):
self.pyrpl.asgs.free(self.asg)
[docs] def test_trigger(self):
self.asg = self.pyrpl.rp.asg0
# asg off, confirm trigger remains armed
self.asg.setup(amplitude=0,
offset=0.5,
waveform='sin',
output_direct='off')
self.t.setup(input=self.asg,
output_direct='off',
threshold=self.asg.offset,
hysteresis=1e-3,
armed=True,
auto_rearm=False,
trigger_source='pos_edge',
output_signal='asg0_phase')
assert self.t.armed == True
# asg on, confirm trigger works
self.asg.setup(frequency=10000.0,
amplitude=0.4,
offset=0.5,
waveform='sin',
output_direct='off',
trigger_source='immediately')
assert self.t.armed == False
# confirm that trigger outputs the right phase
asg0phase = self.t.output_signal_to_phase(self.pyrpl.rp.sampler.trig)
assert abs(asg0phase)<=1.0, asg0phase
# confirm that trigger outputs right phase for neg edge as well
self.t.trigger_source='neg_edge'
self.t.armed=True
asg0phase = self.t.output_signal_to_phase(self.pyrpl.rp.sampler.trig)
assert abs(asg0phase-180.0)<=1.0, asg0phase
# test auto_rearm
self.asg.frequency = 10e6 # do this at high frequency
self.t.auto_rearm = True
#assert self.t.armed == False # even auto_rearm must be switched on
self.t.armed = True
# trigger should be armed most of the time (except for the cycle
# after triggering)
armed = 0
for i in range(100):
if self.t.armed:
armed += 1
assert armed >= 99, armed
# trigger should stay low when autorearm is off
self.t.auto_rearm = False
assert self.t.armed == False