diff --git a/docs/changes/newsfragments/7837.improved_driver b/docs/changes/newsfragments/7837.improved_driver new file mode 100644 index 000000000000..02fbe24d6a31 --- /dev/null +++ b/docs/changes/newsfragments/7837.improved_driver @@ -0,0 +1 @@ +Add hold parameter, force_jump parameter, and set_event_jump method to the Tektronix AWG70000A driver for improved sequence control. diff --git a/src/qcodes/instrument_drivers/tektronix/AWG70000A.py b/src/qcodes/instrument_drivers/tektronix/AWG70000A.py index c321940bfdfc..542dca4e8e27 100644 --- a/src/qcodes/instrument_drivers/tektronix/AWG70000A.py +++ b/src/qcodes/instrument_drivers/tektronix/AWG70000A.py @@ -199,7 +199,21 @@ def __init__( vals=vals.Ints(0, 1), get_parser=int, ) - """Parameter state""" + """Channel State: (OFF: 0, ON: 1)""" + + self.hold: Parameter = self.add_parameter( + "hold", + label=f"Channel {channel} hold value", + get_cmd=f"OUTPut{channel}:WVALUE:ANALOG:STATE?", + set_cmd=f"OUTPut{channel}:WVALUE:ANALOG:STATE {{}}", + val_mapping={ + "FIRST": "FIRST", + "ZERO": "ZERO", + }, + ) + """ the output condition of a waveform of the specified + channel to hold while the instrument is in the waiting-for-trigger state. + ZERO = 0V, FIRST = first value of next sequence""" ################################################## # FGEN PARAMETERS @@ -587,6 +601,14 @@ def __init__( ) """Parameter all_output_off""" + self.force_jump: Parameter = self.add_parameter( + "force_jump", + label="Force Jump", + set_cmd="SOURCE1:JUMP:FORCE {}", + vals=vals.Ints(1, 16383), + ) + """Parameter force_jump""" + add_channel_list = self.num_channels > 2 # We deem 2 channels too few for a channel list if add_channel_list: @@ -619,6 +641,22 @@ def __init__( self.connect_message() + def set_event_jump( + self, sequence_name: str, current_step: int, next_step: int + ) -> None: + """ + Set event jump for a given step in the sequence + + Args: + sequence_name: The name of the sequence + current_step: The step number in the sequence (1-indexed) + next_step: The step number to jump to (1-indexed) + """ + + self.write( + f"SLISt:SEQuence:STEP{current_step}:EJUMp {sequence_name}, {next_step}" + ) + def force_triggerA(self) -> None: """ Force a trigger A event