Trigger Settings ================ .. py:module:: Nets :noindex: .. py:class:: TriggerSettings Configure the trigger parameters for capturing a net's waveform. These methods can be use by nets of type :py:class:`Analog` and :py:class:`Logic`. .. py:method:: get_status() Get the net's current trigger status. .. code-block:: python :emphasize-lines: 8 from lager import Net, NetType, TriggerStatus v33_net = Net.get('+3.3V', type=NetType.Analog, setup_function=setup_net, teardown_function=teardown_net) v33_net.enable() status = v33_net.trigger_settings.get_trigger_status() print(status) :return: status :rtype: TriggerStatus .. py:method:: set_mode_auto() Enable continuous triggering on the given net, regardless of trigger conditions. .. code-block:: python :emphasize-lines: 8 from lager.pcb.net import Net, NetType v33_net = Net.get('+3.3V', type=NetType.Analog, setup_function=setup_net, teardown_function=teardown_net) v33_net.enable() v33_net.trigger_settings.set_mode_auto() .. py:method:: set_mode_normal() Trigger a waveform capture if all conditions of the trigger are met. .. code-block:: python :emphasize-lines: 8 from lager.pcb.net import Net, NetType v33_net = Net.get('+3.3V', type=NetType.Analog, setup_function=setup_net, teardown_function=teardown_net) v33_net.enable() v33_net.trigger_settings.set_mode_normal() .. py:method:: set_mode_single() Trigger once then stop. .. code-block:: python :emphasize-lines: 8 from lager.pcb.net import Net, NetType v33_net = Net.get('+3.3V', type=NetType.Analog, setup_function=setup_net, teardown_function=teardown_net) v33_net.enable() v33_net.trigger_settings.set_mode_single() .. py:method:: get_mode() Get the current trigger mode. .. code-block:: python :emphasize-lines: 8 from lager.pcb.net import Net, NetType, TriggerMode v33_net = Net.get('+3.3V', type=NetType.Analog, setup_function=setup_net, teardown_function=teardown_net) v33_net.enable() mode = v33_net.trigger_settings.get_trigger_mode() print(mode) :return: mode :rtype: TriggerMode .. py:method:: set_coupling_AC() Set the trigger coupling to AC .. code-block:: python :emphasize-lines: 8 from lager.pcb.net import Net, NetType v33_net = Net.get('+3.3V', type=NetType.Analog, setup_function=setup_net, teardown_function=teardown_net) v33_net.enable() v33_net.trigger_settings.set_coupling_AC() .. py:method:: set_coupling_DC() Set the trigger coupling to DC .. code-block:: python :emphasize-lines: 8 from lager import Net, NetType v33_net = Net.get('+3.3V', type=NetType.Analog, setup_function=setup_net, teardown_function=teardown_net) v33_net.enable() v33_net.trigger_settings.set_coupling_DC() .. py:method:: set_coupling_low_freq_reject() Enable low frequency rejection coupling .. code-block:: python :emphasize-lines: 8 from lager import Net, NetType v33_net = Net.get('+3.3V', type=NetType.Analog, setup_function=setup_net, teardown_function=teardown_net) v33_net.enable() v33_net.trigger_settings.set_coupling_low_freq_reject() .. py:method:: set_coupling_high_freq_reject() Enable high frequency rejection coupling .. code-block:: python :emphasize-lines: 8 from lager import Net, NetType v33_net = Net.get('+3.3V', type=NetType.Analog, setup_function=setup_net, teardown_function=teardown_net) v33_net.enable() v33_net.trigger_settings.set_coupling_high_freq_reject() .. py:method:: get_coupling() Get coupling type .. code-block:: python :emphasize-lines: 8 from lager import Net, NetType, TriggerCoupling v33_net = Net.get('+3.3V', type=NetType.Analog, setup_function=setup_net, teardown_function=teardown_net) v33_net.enable() coupling = v33_net.trigger_settings.get_coupling() print(coupling) :return: mode :rtype: TriggerCoupling .. py:method:: set_type(trigger_type) Set the trigger type .. code-block:: python :emphasize-lines: 8 from lager import Net, NetType, TriggerType v33_net = Net.get('+3.3V', type=NetType.Analog, setup_function=setup_net, teardown_function=teardown_net) v33_net.enable() v33_net.trigger_settings.set_type(TriggerType.Edge) :param TriggerType trigger_type: Type of trigger to use .. py:method:: get_type() Get the trigger type .. code-block:: python :emphasize-lines: 8 from lager import Net, NetType, TriggerType v33_net = Net.get('+3.3V', type=NetType.Analog, setup_function=setup_net, teardown_function=teardown_net) v33_net.enable() type = v33_net.trigger_settings.get_trigger_type() print(type) :return: type :rtype: TriggerType .. py:class:: TriggerSettingsEdge Configure edge triggers. These methods can be use by nets that support :py:class:`TriggerSettings`. .. py:method:: set_slope_rising() Set the edge trigger parameter to rising edge .. code-block:: python :emphasize-lines: 9 from lager import Net, NetType v33_net = Net.get('+3.3V', type=NetType.Analog, setup_function=setup_net, teardown_function=teardown_net) v33_net.enable() v33_net.trigger_settings.set_type(TriggerType.Edge) v33_net.trigger_settings.edge.set_slope_rising() .. py:method:: set_slope_falling() Set the edge trigger parameter to falling edge .. code-block:: python :emphasize-lines: 9 from lager import Net, NetType, TriggerType v33_net = Net.get('+3.3V', type=NetType.Analog, setup_function=setup_net, teardown_function=teardown_net) v33_net.enable() v33_net.trigger_settings.set_type(TriggerType.Edge) v33_net.trigger_settings.edge.set_slope_falling() .. py:method:: set_slope_both() Set the edge trigger parameter to both edges (rising and falling) .. code-block:: python :emphasize-lines: 9 from lager import Net, NetType, TriggerType v33_net = Net.get('+3.3V', type=NetType.Analog, setup_function=setup_net, teardown_function=teardown_net) v33_net.enable() v33_net.trigger_settings.set_type(TriggerType.Edge) v33_net.trigger_settings.edge.set_slope_both() .. py:method:: get_slope() Get the trigger edge slope condition .. code-block:: python :emphasize-lines: 10 from lager import Net, NetType, TriggerType v33_net = Net.get('+3.3V', type=NetType.Analog, setup_function=setup_net, teardown_function=teardown_net) v33_net.enable() v33_net.trigger_settings.set_type(TriggerType.Edge) v33_net.trigger_settings.edge.set_slope_both() slope = v33_net.trigger_settings.edge.get_slope() print(slope) :return: Edge slope type :rtype: TriggerEdgeSlope .. py:method:: set_level(level) Set the trigger edge level .. code-block:: python :emphasize-lines: 9 from lager import Net, NetType, TriggerType v33_net = Net.get('+3.3V', type=NetType.Analog, setup_function=setup_net, teardown_function=teardown_net) v33_net.enable() v33_net.trigger_settings.set_type(TriggerType.Edge) v33_net.trigger_settings.edge.set_level(1.8) #Set trigger value to 1.8V :param float level: voltage level for trigger value in Volts .. py:method:: get_level() Get the edge slope .. code-block:: python :emphasize-lines: 10 from lager import Net, NetType, TriggerType v33_net = Net.get('+3.3V', type=NetType.Analog, setup_function=setup_net, teardown_function=teardown_net) v33_net.enable() v33_net.trigger_settings.set_type(TriggerType.Edge) v33_net.trigger_settings.edge.set_level(1.8) level = v33_net.trigger_settings.edge.get_level() print(level) :return: Edge voltage level in Volts :rtype: float .. py:method:: set_source(net) Set the trigger edge source .. code-block:: python :emphasize-lines: 14 from lager import Net, NetType, TriggerType v33_net = Net.get('+3.3V', type=NetType.Analog, setup_function=setup_net, teardown_function=teardown_net) button_net = Net.get('BTN', type=NetType.Analog, setup_function=setup_net, teardown_function=teardown_net) v33_net.enable() v33_net.trigger_settings.set_type(TriggerType.Edge) v33_net.trigger_settings.edge.set_source(button_net) :param Net source: Trigger source .. py:class:: TriggerSettingsPulse Configure pulse triggers. These methods can be use by nets that support :py:class:`TriggerSettings`. .. py:method:: set_level(level) Set minimum required voltage level for pulse signal to be used as trigger. .. code-block:: python :emphasize-lines: 10 from lager import Net, NetType, TriggerType pwm_net = Net.get('MOTOR_PWM', type=NetType.Analog, setup_function=setup_net, teardown_function=teardown_net) pwm_net.enable() pwm_net.trigger_settings.set_type(TriggerType.Pulse) pwm_net.trigger_settings.pulse.set_level(2.3) :param float level: voltage level .. py:method:: get_level() Get minimum required voltage level of trigger source. .. code-block:: python :emphasize-lines: 10 from lager import Net, NetType, TriggerType pwm_net = Net.get('MOTOR_PWM', type=NetType.Analog, setup_function=setup_net, teardown_function=teardown_net) pwm_net.enable() pwm_net.trigger_settings.set_type(TriggerType.Pulse) print(pwm_net.trigger_settings.pulse.get_level()) :return: Minimum voltage level :rtype: float .. py:method:: set_trigger_on_pulse_greater_than_width(pulse_width) Trigger a waveform capture if pulse width is greater than set width. .. code-block:: python :emphasize-lines: 10 from lager import Net, NetType, TriggerType pwm_net = Net.get('MOTOR_PWM', type=NetType.Analog, setup_function=setup_net, teardown_function=teardown_net) pwm_net.enable() pwm_net.trigger_settings.set_type(TriggerType.Pulse) pwm_net.trigger_settings.pulse.set_trigger_on_pulse_greater_than_width(.0001) :param float pulse_width: Minimum pulse width for capture to be triggered .. py:method:: set_trigger_on_pulse_less_than_width(pulse_width) Trigger a waveform capture if pulse width is less than set width. .. code-block:: python :emphasize-lines: 10 from lager import Net, NetType, TriggerType pwm_net = Net.get('MOTOR_PWM', type=NetType.Analog, setup_function=setup_net, teardown_function=teardown_net) pwm_net.enable() pwm_net.trigger_settings.set_type(TriggerType.Pulse) pwm_net.trigger_settings.pulse.set_trigger_on_pulse_less_than_width(.001) :param float pulse_width: Minimum pulse width for capture to be triggered .. py:method:: set_trigger_on_pulse_less_than_greater_than(max_pulse_width=None, min_pulse_width=None) Trigger a waveform capture if pulse width is between the lower and upper bound. .. code-block:: python :emphasize-lines: 10 from lager import Net, NetType, TriggerType pwm_net = Net.get('MOTOR_PWM', type=NetType.Analog, setup_function=setup_net, teardown_function=teardown_net) pwm_net.enable() pwm_net.trigger_settings.set_type(TriggerType.Pulse) pwm_net.trigger_settings.pulse.set_trigger_on_pulse_less_than_width(.001) :param float max_pulse_width: Maximum pulse width for capture to be triggered :param float min_pulse_width: Minimum pulse width for capture to be triggered .. py:method:: set_source(net) Set trigger pulse source. .. code-block:: python :emphasize-lines: 10 from lager import Net, NetType, TriggerType pwm_net = Net.get('MOTOR_PWM', type=NetType.Analog, setup_function=setup_net, teardown_function=teardown_net) pwm_net.enable() pwm_net.trigger_settings.set_type(TriggerType.Pulse) pwm_net.trigger_settings.pulse.set_source(pwm_net) :param Net source: Trigger source .. py:class:: TriggerSettingsUART Configure UART triggers. These methods can be use by nets that support :py:class:`TriggerSettings`. .. py:method:: set_level(level) Set minimum required voltage level for UART signal to be used as trigger. .. code-block:: python :emphasize-lines: 10 from lager import Net, NetType, TriggerType tx_net = Net.get('UART.TX', type=NetType.Analog, setup_function=setup_net, teardown_function=teardown_net) tx_net.enable() tx_net.trigger_settings.set_type(TriggerType.UART) tx_net.trigger_settings.uart.set_level(2.3) :param float level: voltage level .. py:method:: get_level() Get minimum required voltage level of uart trigger source. .. code-block:: python :emphasize-lines: 10 from lager import Net, NetType, TriggerType tx_net = Net.get('UART.TX', type=NetType.Analog, setup_function=setup_net, teardown_function=teardown_net) tx_net.enable() tx_net.trigger_settings.set_type(TriggerType.UART) print(tx_net.trigger_settings.uart.get_level()) :return: Minimum voltage level :rtype: float .. py:method:: set_uart_params(parity=None, stopbits=None, baud=None, bits=None) Set UART trigger bus parameters. .. code-block:: python :emphasize-lines: 10 from lager import Net, NetType, TriggerType, TriggerUARTParity tx_net = Net.get('UART.TX', type=NetType.Analog, setup_function=setup_net, teardown_function=teardown_net) tx_net.enable() tx_net.trigger_settings.set_type(TriggerType.UART) tx_net.trigger_settings.uart.set_uart_params(parity=None, stopbits=1, baud=115200, bits=8) :param TriggerUARTParity parity: UART parity :param float stopbits: Number of stopbits in data packet :param float baud: UART baud rate :param int bits: Width in bits of data .. py:method:: set_trigger_on_start() Set to trigger on start bit of UART communication. .. code-block:: python :emphasize-lines: 10 from lager import Net, NetType, TriggerType tx_net = Net.get('UART.TX', type=NetType.Analog, setup_function=setup_net, teardown_function=teardown_net) tx_net.enable() tx_net.trigger_settings.set_type(TriggerType.UART) tx_net.trigger_settings.uart.set_trigger_on_start() .. py:method:: set_trigger_on_frame_error() Set to trigger on a frame error. .. code-block:: python :emphasize-lines: 10 from lager import Net, NetType, TriggerType tx_net = Net.get('UART.TX', type=NetType.Analog, setup_function=setup_net, teardown_function=teardown_net) tx_net.enable() tx_net.trigger_settings.set_type(TriggerType.UART) tx_net.trigger_settings.uart.set_trigger_on_frame_error() .. py:method:: set_trigger_on_check_error() Set to trigger on a check error. .. code-block:: python :emphasize-lines: 10 from lager import Net, NetType, TriggerType tx_net = Net.get('UART.TX', type=NetType.Analog, setup_function=setup_net, teardown_function=teardown_net) tx_net.enable() tx_net.trigger_settings.set_type(TriggerType.UART) tx_net.trigger_settings.uart.set_trigger_on_check_error() .. py:method:: set_trigger_on_data(data=None) Set to trigger on a specific data value .. code-block:: python :emphasize-lines: 10 from lager import Net, NetType, TriggerType tx_net = Net.get('UART.TX', type=NetType.Analog, setup_function=setup_net, teardown_function=teardown_net) tx_net.enable() tx_net.trigger_settings.set_type(TriggerType.UART) tx_net.trigger_settings.uart.set_trigger_on_data(0xab) :param int data: UART data to trigger on .. py:method:: set_source(net) Set UART source for trigger. .. code-block:: python :emphasize-lines: 10 from lager import Net, NetType, TriggerType tx_net = Net.get('UART.TX', type=NetType.Analog, setup_function=setup_net, teardown_function=teardown_net) tx_net.enable() tx_net.trigger_settings.set_type(TriggerType.UART) tx_net.trigger_settings.uart.set_source(tx_net) :param Net source: Trigger source .. py:class:: TriggerSettingsI2C Configure I2C triggers. These methods can be use by nets that support :py:class:`TriggerSettings`. .. py:method:: set_scl_trigger_level(level) Set minimum voltage level for scl trigger source .. code-block:: python :emphasize-lines: 10 from lager import Net, NetType, TriggerType sda_net = Net.get('I2C.SDA', type=NetType.Analog, setup_function=setup_net, teardown_function=teardown_net) sda_net.enable() sda_net.trigger_settings.set_type(TriggerType.I2C) sda_net.trigger_settings.i2c.set_scl_trigger_level(1.5) :param float level: Voltage level .. py:method:: get_scl_trigger_level() Set minimum voltage level for scl trigger source .. code-block:: python :emphasize-lines: 10 from lager import Net, NetType, TriggerType sda_net = Net.get('I2C.SDA', type=NetType.Analog, setup_function=setup_net, teardown_function=teardown_net) sda_net.enable() sda_net.trigger_settings.set_type(TriggerType.I2C) print(sda_net.trigger_settings.i2c.get_scl_trigger_level()) :return: Minimum voltage level :rtype: float .. py:method:: set_sda_trigger_level(level) Set minimum voltage level for sda trigger source .. code-block:: python :emphasize-lines: 10 from lager import Net, NetType, TriggerType sda_net = Net.get('I2C.SDA', type=NetType.Analog, setup_function=setup_net, teardown_function=teardown_net) sda_net.enable() sda_net.trigger_settings.set_type(TriggerType.I2C) sda_net.trigger_settings.i2c.set_sda_trigger_level(1.5) :param float level: Voltage level .. py:method:: get_sda_trigger_level() Set minimum voltage level for sda trigger source .. code-block:: python :emphasize-lines: 10 from lager import Net, NetType, TriggerType sda_net = Net.get('I2C.SDA', type=NetType.Analog, setup_function=setup_net, teardown_function=teardown_net) sda_net.enable() sda_net.trigger_settings.set_type(TriggerType.I2C) print(sda_net.trigger_settings.i2c.get_sda_trigger_level()) :return: Minimum voltage level :rtype: float .. py:method:: set_trigger_on_start() Set trigger on start bit of I2C communications. .. code-block:: python :emphasize-lines: 10 from lager import Net, NetType, TriggerType sda_net = Net.get('I2C.SDA', type=NetType.Analog, setup_function=setup_net, teardown_function=teardown_net) sda_net.enable() sda_net.trigger_settings.set_type(TriggerType.I2C) sda_net.trigger_settings.i2c.set_trigger_on_start() .. py:method:: set_trigger_on_restart() Set trigger on re-start bit of I2C communications. .. code-block:: python :emphasize-lines: 10 from lager import Net, NetType, TriggerType sda_net = Net.get('I2C.SDA', type=NetType.Analog, setup_function=setup_net, teardown_function=teardown_net) sda_net.enable() sda_net.trigger_settings.set_type(TriggerType.I2C) sda_net.trigger_settings.i2c.set_trigger_on_restart() .. py:method:: set_trigger_on_stop() Set trigger on stop bit of I2C communications. .. code-block:: python :emphasize-lines: 10 from lager import Net, NetType, TriggerType sda_net = Net.get('I2C.SDA', type=NetType.Analog, setup_function=setup_net, teardown_function=teardown_net) sda_net.enable() sda_net.trigger_settings.set_type(TriggerType.I2C) sda_net.trigger_settings.i2c.set_trigger_on_stop() .. py:method:: set_trigger_on_nack() Set trigger on NACK from slave device. .. code-block:: python :emphasize-lines: 10 from lager import Net, NetType, TriggerType sda_net = Net.get('I2C.SDA', type=NetType.Analog, setup_function=setup_net, teardown_function=teardown_net) sda_net.enable() sda_net.trigger_settings.set_type(TriggerType.I2C) sda_net.trigger_settings.i2c.set_trigger_on_nack() .. py:method:: set_trigger_on_address(bits=None, direction=None, address=None) Set trigger on communication to specific device address. .. code-block:: python :emphasize-lines: 10 from lager import Net, NetType, TriggerType, TriggerI2CDirection sda_net = Net.get('I2C.SDA', type=NetType.Analog, setup_function=setup_net, teardown_function=teardown_net) sda_net.enable() sda_net.trigger_settings.set_type(TriggerType.I2C) sda_net.trigger_settings.i2c.set_trigger_on_address(bits=7, direction=TriggerI2CDirection.Write, address=0x01) :param int bits: Width in bits of device address :param TriggerI2CDirection direction: Direction of I2C communication :param int address: Device Address .. py:method:: set_trigger_on_data(width=None, data=None) Set trigger on communication to specific data. .. code-block:: python :emphasize-lines: 10 from lager import Net, NetType, TriggerType sda_net = Net.get('I2C.SDA', type=NetType.Analog, setup_function=setup_net, teardown_function=teardown_net) sda_net.enable() sda_net.trigger_settings.set_type(TriggerType.I2C) sda_net.trigger_settings.i2c.set_trigger_on_data(width=1, data=0xab) :param int width: Width in bytes of data :param int data: Device data .. py:method:: set_trigger_on_addr_data(bits=None, direction=None, address=None, width=None, data=None) Set trigger on communication to specific device address. .. code-block:: python :emphasize-lines: 10 from lager import Net, NetType, TriggerType, TriggerI2CDirection sda_net = Net.get('I2C.SDA', type=NetType.Analog, setup_function=setup_net, teardown_function=teardown_net) sda_net.enable() sda_net.trigger_settings.set_type(TriggerType.I2C) sda_net.trigger_settings.i2c.set_trigger_on_addr_data(bits=7, direction=TriggerI2CDirection.Write, address=0x01, width=1, data=0xab) :param int bits: Width in bits of device address :param TriggerI2CDirection direction: Direction of I2C communication :param int address: Device Address :param int width: Width in bytes of data :param int data: Device data .. py:method:: set_source(net_scl=None, net_sda=None) Set I2C sources for trigger. .. code-block:: python :emphasize-lines: 15 from lager import Net, NetType, TriggerType sda_net = Net.get('I2C.SDA', type=NetType.Analog, setup_function=setup_net, teardown_function=teardown_net) scl_net = Net.get('I2C.SCL', type=NetType.Analog, setup_function=setup_net, teardown_function=teardown_net) sda_net.enable() sda_net.trigger_settings.set_type(TriggerType.I2C) sda_net.trigger_settings.i2c.set_source(net_scl=scl_net, net_sda=sda_net) :param Net net_scl: I2C trigger clock source :param Net net_sda: I2C trigger data source .. py:class:: TriggerSettingsSPI Configure SPI triggers. These methods can be use by nets that support :py:class:`TriggerSettings`. .. py:method:: set_sck_trigger_level(level) Set minimum voltage level for clock trigger source .. code-block:: python :emphasize-lines: 10 from lager import Net, NetType, TriggerType mosi_net = Net.get('SPI.MOSI', type=NetType.Analog, setup_function=setup_net, teardown_function=teardown_net) mosi_net.enable() mosi_net.trigger_settings.set_type(TriggerType.SPI) mosi_net.trigger_settings.spi.set_sck_trigger_level(1.5) :param float level: Voltage level .. py:method:: get_sck_trigger_level() Set minimum voltage level for clock trigger source .. code-block:: python :emphasize-lines: 10 from lager import Net, NetType, TriggerType mosi_net = Net.get('SPI.MOSI', type=NetType.Analog, setup_function=setup_net, teardown_function=teardown_net) mosi_net.enable() mosi_net.trigger_settings.set_type(TriggerType.SPI) print(mosi_net.trigger_settings.spi.get_sck_trigger_level()) :return: Minimum voltage level :rtype: float .. py:method:: set_mosi_miso_trigger_level(level) Set minimum voltage level for data trigger source .. code-block:: python :emphasize-lines: 10 from lager import Net, NetType, TriggerType mosi_net = Net.get('SPI.MOSI', type=NetType.Analog, setup_function=setup_net, teardown_function=teardown_net) mosi_net.enable() mosi_net.trigger_settings.set_type(TriggerType.SPI) mosi_net.trigger_settings.spi.set_mosi_miso_trigger_level(1.5) :param float level: Voltage level .. py:method:: get_mosi_miso_trigger_level() Set minimum voltage level for data trigger source .. code-block:: python :emphasize-lines: 10 from lager import Net, NetType, TriggerType mosi_net = Net.get('SPI.MOSI', type=NetType.Analog, setup_function=setup_net, teardown_function=teardown_net) mosi_net.enable() mosi_net.trigger_settings.set_type(TriggerType.SPI) print(mosi_net.trigger_settings.spi.get_mosi_miso_trigger_level()) :return: Minimum voltage level :rtype: float .. py:method:: set_cs_trigger_level(level) Set minimum voltage level for chip select trigger source .. code-block:: python :emphasize-lines: 10 from lager import Net, NetType, TriggerType mosi_net = Net.get('SPI.MOSI', type=NetType.Analog, setup_function=setup_net, teardown_function=teardown_net) mosi_net.enable() mosi_net.trigger_settings.set_type(TriggerType.SPI) mosi_net.trigger_settings.spi.set_cs_trigger_level(1.5) :param float level: Voltage level .. py:method:: get_cs_trigger_level() Set minimum voltage level for chip select trigger source .. code-block:: python :emphasize-lines: 10 from lager import Net, NetType, TriggerType mosi_net = Net.get('SPI.MOSI', type=NetType.Analog, setup_function=setup_net, teardown_function=teardown_net) mosi_net.enable() mosi_net.trigger_settings.set_type(TriggerType.SPI) print(mosi_net.trigger_settings.spi.get_cs_trigger_level()) :return: Minimum voltage level :rtype: float .. py:method:: set_clk_edge_positive() Set trigger for clock sampling data on positive edge .. code-block:: python :emphasize-lines: 10 from lager import Net, NetType, TriggerType mosi_net = Net.get('SPI.MOSI', type=NetType.Analog, setup_function=setup_net, teardown_function=teardown_net) mosi_net.enable() mosi_net.trigger_settings.set_type(TriggerType.SPI) mosi_net.trigger_settings.spi.set_clk_edge_positive() .. py:method:: set_clk_edge_negative() Set trigger for clock sampling data on negative edge .. code-block:: python :emphasize-lines: 10 from lager import Net, NetType, TriggerType mosi_net = Net.get('SPI.MOSI', type=NetType.Analog, setup_function=setup_net, teardown_function=teardown_net) mosi_net.enable() mosi_net.trigger_settings.set_type(TriggerType.SPI) mosi_net.trigger_settings.spi.set_clk_edge_negative() .. py:method:: get_clk_edge_slope() Set minimum voltage level for chip select trigger source .. code-block:: python :emphasize-lines: 10 from lager import Net, NetType, TriggerType, TriggerSPISlope mosi_net = Net.get('SPI.MOSI', type=NetType.Analog, setup_function=setup_net, teardown_function=teardown_net) mosi_net.enable() mosi_net.trigger_settings.set_type(TriggerType.SPI) print(mosi_net.trigger_settings.spi.get_clk_edge_slope()) :return: Minimum voltage level :rtype: float .. py:method:: set_trigger_on_timeout(timeout) Set timeout value for when to trigger after the start of SPI communication start. .. code-block:: python :emphasize-lines: 10 from lager import Net, NetType, TriggerType mosi_net = Net.get('SPI.MOSI', type=NetType.Analog, setup_function=setup_net, teardown_function=teardown_net) mosi_net.enable() mosi_net.trigger_settings.set_type(TriggerType.SPI) mosi_net.trigger_settings.spi.set_trigger_on_timeout(.0004) :param float timeout: Communication trigger timeout .. py:method:: get_trigger_timeout() Get SPI trigger timeout .. code-block:: python :emphasize-lines: 10 from lager import Net, NetType, TriggerType mosi_net = Net.get('SPI.MOSI', type=NetType.Analog, setup_function=setup_net, teardown_function=teardown_net) mosi_net.enable() mosi_net.trigger_settings.set_type(TriggerType.SPI) print(mosi_net.trigger_settings.spi.get_trigger_timeout()) :return: Timeout value :rtype: float .. py:method:: set_trigger_on_cs_high() Set trigger when chip select line goes high .. code-block:: python :emphasize-lines: 10 from lager import Net, NetType, TriggerType mosi_net = Net.get('SPI.MOSI', type=NetType.Analog, setup_function=setup_net, teardown_function=teardown_net) mosi_net.enable() mosi_net.trigger_settings.set_type(TriggerType.SPI) mosi_net.trigger_settings.spi.set_trigger_on_cs_high() .. py:method:: set_trigger_on_cs_low() Set trigger when chip select line goes low .. code-block:: python :emphasize-lines: 10 from lager import Net, NetType, TriggerType mosi_net = Net.get('SPI.MOSI', type=NetType.Analog, setup_function=setup_net, teardown_function=teardown_net) mosi_net.enable() mosi_net.trigger_settings.set_type(TriggerType.SPI) mosi_net.trigger_settings.spi.set_trigger_on_cs_low() .. py:method:: set_trigger_data(bits=None, data=None) Set trigger for data value with given width. .. code-block:: python :emphasize-lines: 10 from lager import Net, NetType, TriggerType mosi_net = Net.get('SPI.MOSI', type=NetType.Analog, setup_function=setup_net, teardown_function=teardown_net) mosi_net.enable() mosi_net.trigger_settings.set_type(TriggerType.SPI) mosi_net.trigger_settings.spi.set_trigger_data(bit=8, data=0xba) :param int bits: Width in bits of data :param int data: SPI data value .. py:method:: set_source(net_sck=None, net_mosi_miso=None, net_cs=None) Set SPI sources for trigger. .. code-block:: python :emphasize-lines: 20 from lager import Net, NetType, TriggerType mosi_net = Net.get('SPI.MOSI', type=NetType.Analog, setup_function=setup_net, teardown_function=teardown_net) sck_net = Net.get('SPI.SCK', type=NetType.Analog, setup_function=setup_net, teardown_function=teardown_net) cs_net = Net.get('SPI.CS', type=NetType.Analog, setup_function=setup_net, teardown_function=teardown_net) sda_net.enable() sda_net.trigger_settings.set_type(TriggerType.SPI) sda_net.trigger_settings.spi.set_source(net_sck=sck_net, net_mosi_miso=mosi_net, net_cs=cs_net) :param Net net_sck: SPI trigger clock source :param Net net_mosi_miso: SPI trigger data source :param Net net_cs: SPI trigger chip select source .. py:class:: TriggerSettingsCAN Configure CAN triggers. These methods can be use by nets that support :py:class:`TriggerSettings`. .. py:method:: set_level(level) Set minimum required voltage level for CAN signal to be used as trigger. .. code-block:: python :emphasize-lines: 10 from lager import Net, NetType, TriggerType tx_net = Net.get('CAN.TX', type=NetType.Analog, setup_function=setup_net, teardown_function=teardown_net) tx_net.enable() tx_net.trigger_settings.set_type(TriggerType.CAN) tx_net.trigger_settings.can.set_level(2.3) :param float level: voltage level .. py:method:: get_level() Get minimum required voltage level of CAN trigger source. .. code-block:: python :emphasize-lines: 10 from lager import Net, NetType, TriggerType tx_net = Net.get('CAN.TX', type=NetType.Analog, setup_function=setup_net, teardown_function=teardown_net) tx_net.enable() tx_net.trigger_settings.set_type(TriggerType.CAN) print(tx_net.trigger_settings.can.get_level()) :return: Minimum voltage level :rtype: float .. py:method:: set_baud(baud) Set CAN trigger BAUD. .. code-block:: python :emphasize-lines: 10 from lager import Net, NetType, TriggerType tx_net = Net.get('CAN.TX', type=NetType.Analog, setup_function=setup_net, teardown_function=teardown_net) tx_net.enable() tx_net.trigger_settings.set_type(TriggerType.CAN) tx_net.trigger_settings.can.set_baud(500_000) :param float baud: CAN baud rate .. py:method:: get_baud() Get CAN trigger BAUD. .. code-block:: python :emphasize-lines: 10 from lager import Net, NetType, TriggerType tx_net = Net.get('CAN.TX', type=NetType.Analog, setup_function=setup_net, teardown_function=teardown_net) tx_net.enable() tx_net.trigger_settings.set_type(TriggerType.CAN) print(tx_net.trigger_settings.can.get_baud()) :return: baud rate :rtype: float .. py:method:: set_sample_point(sample_point) Where in data bit to sample as a percentage. .. code-block:: python :emphasize-lines: 10 from lager import Net, NetType, TriggerType tx_net = Net.get('CAN.TX', type=NetType.Analog, setup_function=setup_net, teardown_function=teardown_net) tx_net.enable() tx_net.trigger_settings.set_type(TriggerType.CAN) tx_net.trigger_settings.can.set_sample_point(50) :param float sample_point: sample point as percentage .. py:method:: get_sample_point() Get CAN trigger sample point posistion. .. code-block:: python :emphasize-lines: 10 from lager import Net, NetType, TriggerType tx_net = Net.get('CAN.TX', type=NetType.Analog, setup_function=setup_net, teardown_function=teardown_net) tx_net.enable() tx_net.trigger_settings.set_type(TriggerType.CAN) print(tx_net.trigger_settings.can.get_sample_point()) :return: sample point :rtype: int .. py:method:: set_trigger_on_sof() Set to trigger on start of frame. .. code-block:: python :emphasize-lines: 10 from lager import Net, NetType, TriggerType tx_net = Net.get('CAN.TX', type=NetType.Analog, setup_function=setup_net, teardown_function=teardown_net) tx_net.enable() tx_net.trigger_settings.set_type(TriggerType.CAN) tx_net.trigger_settings.can.set_trigger_on_sof() .. py:method:: set_trigger_on_eof() Set to trigger on end of frame. .. code-block:: python :emphasize-lines: 10 from lager import Net, NetType, TriggerType tx_net = Net.get('CAN.TX', type=NetType.Analog, setup_function=setup_net, teardown_function=teardown_net) tx_net.enable() tx_net.trigger_settings.set_type(TriggerType.CAN) tx_net.trigger_settings.can.set_trigger_on_eof() .. py:method:: set_trigger_on_id_remote() Set to trigger on a remote frame. .. code-block:: python :emphasize-lines: 10 from lager import Net, NetType, TriggerType tx_net = Net.get('CAN.TX', type=NetType.Analog, setup_function=setup_net, teardown_function=teardown_net) tx_net.enable() tx_net.trigger_settings.set_type(TriggerType.CAN) tx_net.trigger_settings.can.set_trigger_on_id_remote() .. py:method:: set_trigger_on_over_load() Set to trigger on an over load. .. code-block:: python :emphasize-lines: 10 from lager import Net, NetType, TriggerType tx_net = Net.get('CAN.TX', type=NetType.Analog, setup_function=setup_net, teardown_function=teardown_net) tx_net.enable() tx_net.trigger_settings.set_type(TriggerType.CAN) tx_net.trigger_settings.can.set_trigger_on_over_load() .. py:method:: set_trigger_on_id_frame() Set to trigger on an ID frame. .. code-block:: python :emphasize-lines: 10 from lager import Net, NetType, TriggerType tx_net = Net.get('CAN.TX', type=NetType.Analog, setup_function=setup_net, teardown_function=teardown_net) tx_net.enable() tx_net.trigger_settings.set_type(TriggerType.CAN) tx_net.trigger_settings.can.set_trigger_on_id_frame() .. py:method:: set_trigger_on_data_frame() Set to trigger on a data frame. .. code-block:: python :emphasize-lines: 10 from lager import Net, NetType, TriggerType tx_net = Net.get('CAN.TX', type=NetType.Analog, setup_function=setup_net, teardown_function=teardown_net) tx_net.enable() tx_net.trigger_settings.set_type(TriggerType.CAN) tx_net.trigger_settings.can.set_trigger_on_data_frame() .. py:method:: set_trigger_on_id_data() Set to trigger on a ID data. .. code-block:: python :emphasize-lines: 10 from lager import Net, NetType, TriggerType tx_net = Net.get('CAN.TX', type=NetType.Analog, setup_function=setup_net, teardown_function=teardown_net) tx_net.enable() tx_net.trigger_settings.set_type(TriggerType.CAN) tx_net.trigger_settings.can.set_trigger_on_id_data() .. py:method:: set_trigger_on_error_frame() Set to trigger on an error frame. .. code-block:: python :emphasize-lines: 10 from lager import Net, NetType, TriggerType tx_net = Net.get('CAN.TX', type=NetType.Analog, setup_function=setup_net, teardown_function=teardown_net) tx_net.enable() tx_net.trigger_settings.set_type(TriggerType.CAN) tx_net.trigger_settings.can.set_trigger_on_error_frame() .. py:method:: set_trigger_on_error_reply() Set to trigger on an error reply. .. code-block:: python :emphasize-lines: 10 from lager import Net, NetType, TriggerType tx_net = Net.get('CAN.TX', type=NetType.Analog, setup_function=setup_net, teardown_function=teardown_net) tx_net.enable() tx_net.trigger_settings.set_type(TriggerType.CAN) tx_net.trigger_settings.can.set_trigger_on_error_reply() .. py:method:: set_trigger_on_error_checksum() Set to trigger on an crc error. .. code-block:: python :emphasize-lines: 10 from lager import Net, NetType, TriggerType tx_net = Net.get('CAN.TX', type=NetType.Analog, setup_function=setup_net, teardown_function=teardown_net) tx_net.enable() tx_net.trigger_settings.set_type(TriggerType.CAN) tx_net.trigger_settings.can.set_trigger_on_error_checksum() .. py:method:: set_trigger_on_error_format() Set to trigger on a formatting error .. code-block:: python :emphasize-lines: 10 from lager import Net, NetType, TriggerType tx_net = Net.get('CAN.TX', type=NetType.Analog, setup_function=setup_net, teardown_function=teardown_net) tx_net.enable() tx_net.trigger_settings.set_type(TriggerType.CAN) tx_net.trigger_settings.can.set_trigger_on_error_format() .. py:method:: set_trigger_on_error_random() Set to trigger on a random error .. code-block:: python :emphasize-lines: 10 from lager import Net, NetType, TriggerType tx_net = Net.get('CAN.TX', type=NetType.Analog, setup_function=setup_net, teardown_function=teardown_net) tx_net.enable() tx_net.trigger_settings.set_type(TriggerType.CAN) tx_net.trigger_settings.can.set_trigger_on_error_random() .. py:method:: set_trigger_on_error_bit() Set to trigger on a bit stuff error .. code-block:: python :emphasize-lines: 10 from lager import Net, NetType, TriggerType tx_net = Net.get('CAN.TX', type=NetType.Analog, setup_function=setup_net, teardown_function=teardown_net) tx_net.enable() tx_net.trigger_settings.set_type(TriggerType.CAN) tx_net.trigger_settings.can.set_trigger_on_error_bit() .. py:method:: get_trigger_condition() Get "trigger on" condition .. code-block:: python :emphasize-lines: 10 from lager import Net, NetType, TriggerType, TriggerCANCondition tx_net = Net.get('CAN.TX', type=NetType.Analog, setup_function=setup_net, teardown_function=teardown_net) tx_net.enable() tx_net.trigger_settings.set_type(TriggerType.CAN) print(tx_net.trigger_settings.can.get_trigger_condition()) :return: sample point :rtype: TriggerCANCondition .. py:method:: set_signal_type_can_high() Set trigger signal type to raw CAN high line. .. code-block:: python :emphasize-lines: 10 from lager import Net, NetType, TriggerType tx_net = Net.get('CAN.TX', type=NetType.Analog, setup_function=setup_net, teardown_function=teardown_net) tx_net.enable() tx_net.trigger_settings.set_type(TriggerType.CAN) tx_net.trigger_settings.can.set_signal_type_can_high() .. py:method:: set_signal_type_can_low() Set trigger signal type to raw CAN low line. .. code-block:: python :emphasize-lines: 10 from lager import Net, NetType, TriggerType tx_net = Net.get('CAN.TX', type=NetType.Analog, setup_function=setup_net, teardown_function=teardown_net) tx_net.enable() tx_net.trigger_settings.set_type(TriggerType.CAN) tx_net.trigger_settings.can.set_signal_type_can_low() .. py:method:: set_signal_type_can_diff() Set trigger signal type to raw CAN differential signal. .. code-block:: python :emphasize-lines: 10 from lager import Net, NetType, TriggerType tx_net = Net.get('CAN.TX', type=NetType.Analog, setup_function=setup_net, teardown_function=teardown_net) tx_net.enable() tx_net.trigger_settings.set_type(TriggerType.CAN) tx_net.trigger_settings.can.set_signal_type_can_diff() .. py:method:: set_signal_type_can_txrx() Set trigger signal type to tx/rx transceiver. .. code-block:: python :emphasize-lines: 10 from lager import Net, NetType, TriggerType tx_net = Net.get('CAN.TX', type=NetType.Analog, setup_function=setup_net, teardown_function=teardown_net) tx_net.enable() tx_net.trigger_settings.set_type(TriggerType.CAN) tx_net.trigger_settings.can.set_signal_type_can_txrx() .. py:method:: get_signal_type() Get trigger signal type .. code-block:: python :emphasize-lines: 10 from lager import Net, NetType, TriggerType, TriggerCANSigType tx_net = Net.get('CAN.TX', type=NetType.Analog, setup_function=setup_net, teardown_function=teardown_net) tx_net.enable() tx_net.trigger_settings.set_type(TriggerType.CAN) print(tx_net.trigger_settings.can.get_signal_type()) :return: sample point :rtype: TriggerCANSigType .. py:method:: set_source(net) Set CAN source for trigger. .. code-block:: python :emphasize-lines: 10 from lager import Net, NetType, TriggerType tx_net = Net.get('CAN.TX', type=NetType.Analog, setup_function=setup_net, teardown_function=teardown_net) tx_net.enable() tx_net.trigger_settings.set_type(TriggerType.CAN) tx_net.trigger_settings.can.set_source(tx_net) .. py:class:: TriggerStatus(enum) Status of the trigger. .. py:data:: TRIGGERED .. py:data:: WAITING .. py:data:: TRIGGERING .. py:data:: AUTO_TRIGGERING .. py:data:: STOPPED .. py:class:: TriggerMode(enum) Operation mode of a trigger. .. py:data:: Auto .. py:data:: Normal .. py:data:: Single .. py:class:: TriggerCoupling(enum) Coupling modes of a trigger. .. py:data:: AC .. py:data:: DC .. py:data:: LF_Reject .. py:data:: HF_Reject .. py:class:: TriggerType(enum) Types of waveform capture triggers. .. py:data:: Edge .. py:data:: Pulse .. py:data:: UART .. py:data:: I2C .. py:data:: SPI .. py:data:: CAN .. py:class:: TriggerEdgeSlope(enum) Possible trigger edge slopes. .. py:data:: Positive .. py:data:: Negative .. py:data:: Either .. py:class:: TriggerUARTParity(enum) UART Parity Options .. py:data:: Even .. py:data:: Odd .. py:data:: NoParity .. py:class:: TriggerI2CDirection(enum) I2C Data Direction Options .. py:data:: Read .. py:data:: Write .. py:data:: RW .. py:class:: TriggerSPISlope(enum) I2C Data Direction Options .. py:data:: Positive .. py:data:: Negative .. py:class:: TriggerCANCondition(enum) CAN Bus Trigger Condition .. py:data:: SOF .. py:data:: EOF .. py:data:: IDRemote .. py:data:: OverLoad .. py:data:: IDFrame .. py:data:: DataFrame .. py:data:: IDData .. py:data:: ErrorFrame .. py:data:: ErrorAnswer .. py:data:: ErrorCheck .. py:data:: ErrorFormat .. py:data:: ErrorRandom .. py:data:: ErrorBit .. py:class:: TriggerCANSigType(enum) CAN Bus Trigger Condition .. py:data:: TXRX .. py:data:: CANHigh .. py:data:: CANLow .. py:data:: Differential