Triggers
Triggers
What Is a Trigger?
When you are debugging firmware, the waveform display shows everything your device is doing. Hundreds or thousands of events per second. Most of the time, you do not care about everything. You care about one specific moment: the exact instant your device sends a particular message, a voltage crosses a threshold, or a digital line changes state.
A trigger is a rule that tells the ACTIVE-PRO Debugger which specific event to look for. When the trigger fires (that is, when the captured data matches your rule), the software automatically snaps the waveform view to that moment in time so you can see exactly what happened just before and just after it.
Without a trigger you would have to manually scroll through potentially hours of data looking for the event you care about. With a trigger, the software does that work for you and takes you directly there.
Opening the Trigger Tab
The Trigger panel lives in the right-side tab bar. Click the Trigger tab to open it. A close button at the top of the panel dismisses it back to the tab bar.
All trigger settings take effect immediately. You do not need to restart a capture after changing them.
Trigger Mode
The MODE section is the first thing you set. It controls whether the trigger system is active and what it does when a trigger fires.
There are three buttons arranged in two rows. Only one can be active at a time. The currently selected mode is highlighted.
Off
The trigger system is completely disabled. The waveform scrolls freely during a live capture and no trigger markers are placed. This is the default state when you launch the application.
Use Off when you are exploring captured data and do not need to hunt for a specific event.
Normal
The trigger system is active. Every time a trigger condition fires in the captured data, the waveform display snaps to that event and centers it in the window. Each new trigger replaces the previous view.
During a live capture, Normal mode keeps the view pinned to the most recent trigger. If triggers are firing rapidly the view updates continuously. If triggers stop, the view stays on the last one.
Use Normal when you want to watch every occurrence of an event in real time.
Auto
Auto mode behaves exactly like Normal when triggers are firing. The difference is what happens when triggers stop: after one second with no trigger, the view automatically reverts to live-edge scrolling, just as if you had clicked DISPLAY LIVE DATA.
Auto mode is useful when your firmware triggers intermittently. You see each trigger when it fires, but you never end up staring at a frozen screen between events.
Trigger Source
The SOURCE section defines what the trigger looks at. It has two controls that work together.
Source Type
The Source Type drop-down selects the broad category of signal to monitor:
| Source Type | What It Monitors |
|---|---|
| Analog | One of the analog voltage input channels (CH1, CH2, CH3, etc.) |
| Digital | One of the digital logic input channels (0-7) |
| DeviceChannel | Text or value output from the Active Debug Port (ADP). Your firmware sends this data explicitly using ACTIVEText, ACTIVEprintf, or ACTIVEValue. |
Channel
The Channel drop-down lists the available channels for the selected Source Type. Pick the specific channel you want to trigger on.
Tip: Only channels that are currently enabled for capture appear in the Channel list. If a channel you want is missing, go to the Channels and Signals tab and enable it first.
Trigger Condition
The Condition drop-down specifies exactly what has to happen on the selected channel to fire the trigger. The conditions available depend on the Source Type you chose.
Edge Conditions (Analog and Digital)
| Condition | When It Fires |
|---|---|
| Rising Edge | The signal transitions from low to high (digital), or crosses the threshold voltage from below (analog) |
| Falling Edge | The signal transitions from high to low (digital), or crosses the threshold voltage from above (analog) |
These are the most common conditions. Use Rising Edge to catch the start of a pulse or the assertion of a signal. Use Falling Edge to catch the end of a pulse or a de-assertion.
Pulse Width Conditions (Digital)
Pulse width conditions fire only when the pulse on the selected digital channel is wider or narrower than a specified duration. This lets you distinguish between normal pulses and anomalous ones.
| Condition | When It Fires |
|---|---|
| Pulse Width Pos Greater | A positive (high) pulse lasts longer than the specified width |
| Pulse Width Pos Less | A positive (high) pulse lasts shorter than the specified width |
| Pulse Width Neg Greater | A negative (low) pulse lasts longer than the specified width |
| Pulse Width Neg Less | A negative (low) pulse lasts shorter than the specified width |
"Positive" means the signal is high; "negative" means the signal is low. For example, if your firmware produces a 100 µs enable pulse but you suspect it is occasionally generating a spuriously short pulse, set the condition to Pulse Width Pos Less with a width of 100 µs. The trigger will fire only on the short ones.
Text Conditions (DeviceChannel)
When the Source Type is set to DeviceChannel, the condition matches against the text content of ADP messages your firmware sends:
| Condition | When It Fires |
|---|---|
| Text Contains | The ADP message includes the pattern anywhere in the string |
| Text Equals | The ADP message exactly matches the pattern |
For example, if your firmware sends "ERROR: timeout reached", a Text Contains trigger on "ERROR" will catch it. A Text Equals trigger would need the full string to match exactly.
Additional Parameters
Depending on the Condition you select, one or more additional controls appear below the Condition row.
Threshold (Analog: Rising Edge and Falling Edge)
Sets the voltage level that defines the crossing point for the trigger. The control shows the value in volts with three decimal places and a step size of 0.01 V. The range is -100 V to +100 V.
For a Rising Edge trigger, the event fires when the analog signal crosses upward through this voltage. For a Falling Edge trigger, it fires when the signal crosses downward through it.
Set the threshold to the midpoint of your logic swing. For example, on a 3.3 V system, 1.65 V is a common choice. On a 1.8 V system, 0.9 V is appropriate.
Width (Pulse Width Conditions)
Sets the reference pulse duration for the selected pulse-width condition. Enter the numeric value in the spin box and choose the unit from the adjacent drop-down:
| Unit | Symbol |
|---|---|
| Nanoseconds | ns |
| Microseconds | µs |
| Milliseconds | ms |
| Seconds | s |
The duration range is 0 to 100,000 in the selected unit. The step size is 1 unit; you can also type a value directly.
Text (Text Contains and Text Equals)
A text field labeled Text: appears when a text condition is active. Type the string you want to match. The field shows a match text... placeholder when empty.
- Text Contains matching is a substring search. It finds the pattern anywhere in the message.
- Text Equals requires the entire ADP message to match the pattern exactly, including capitalization and spaces.
Reprocess Triggers
The Reprocess Triggers button re-scans the entire captured data buffer from start to finish using the current trigger settings, rebuilding the trigger list from scratch.
Use this button any time after:
- Changing the trigger mode, source, condition, or any parameter while a capture is already loaded
- Opening a saved
.activefile and wanting to apply triggers to existing data - Adjusting settings that did not automatically update the trigger count
After reprocessing, the trigger counter updates and you can immediately navigate to any found trigger.
Note: Reprocessing runs in the foreground and may take a moment on very large captures. The display updates when complete.
Navigating Between Triggers
Once triggers have been found, either during a live capture or after reprocessing, the NAVIGATE section lets you step through them one by one.
<< Previous Trigger
Jumps the waveform view backward to the previous trigger event. The button auto-repeats if you hold it down: it waits 500 ms before it starts repeating, then steps every 100 ms.
Center Trigger
Centers the current trigger event horizontally in the waveform window. Use this if you have scrolled or zoomed away from the trigger position and want to return to it.
Adjusting the Trigger Position
After the waveform snaps to a trigger, you can freely reposition what you see around that event using the normal waveform navigation controls:
- Mouse scroll wheel: zoom in or out, keeping the trigger visible at a different scale
- Left-click and drag: pan the waveform left or right to shift how much pre- or post-trigger data is visible
- I / O keys: zoom in or out at the current mouse position
- Arrow Left / Arrow Right keys: step-pan the view one screen width in either direction
The trigger position remembered by the software does not change when you pan or zoom. Only the portion of surrounding data that is visible changes. Clicking Center Trigger at any time snaps back to the trigger event at the current zoom level.
>> Next Trigger
Jumps the waveform view forward to the next trigger event, with the same auto-repeat behavior as the Previous button.
Trigger Counter
Below the navigation buttons, a label shows your current position in the trigger list:
3 of 17
This means you are viewing the 3rd trigger out of 17 total found. The counter shows No triggers when no events have been detected yet.
Tip: The << and >> buttons work even during a live capture. As new triggers arrive, the total count updates and you can step through them while data is still streaming in.
How Triggers Appear in the Waveform
When a trigger fires, the timeline ruler at the top of the waveform display flashes briefly to indicate a new event. A red diamond with a white T is drawn directly on the waveform at the exact event that caused the trigger (on the edge, pulse, or text event that matched your condition). This marker stays in place as you zoom and pan so you can always see precisely where the trigger occurred relative to surrounding activity.
In Normal and Auto modes, the waveform snaps so that the trigger falls at a fixed horizontal position in the window. You always see the same amount of data before the trigger on the left and after it on the right, regardless of where in the capture the trigger occurred.
Practical Examples
Catching a firmware crash
Your device resets unexpectedly. Set the Source Type to Digital, pick the reset line, and set the Condition to Falling Edge (reset is usually active-low). Set the Mode to Normal. The next time the device resets, the trigger fires and the waveform snaps to that exact moment, letting you see all the ADP messages and signal activity that preceded the crash.
Detecting a glitch
You suspect your power rail occasionally drops below 2.5 V. Set the Source Type to Analog, pick your power rail channel (e.g., CH1), set the Condition to Falling Edge, and set the Threshold to 2.500 V. Set the Mode to Normal. Any time the rail dips below 2.5 V, the trigger fires and the waveform shows you the transient.
Finding a specific log message
Your firmware logs many messages but you only care about "FAULT". Set the Source Type to DeviceChannel, pick the ADP channel your firmware uses, set the Condition to Text Contains, and type FAULT in the Text field. Click Reprocess Triggers to scan existing data, or leave Normal mode on during a live capture. Every occurrence is logged and you can step through them with the << and >> buttons.
Isolating a short glitch pulse
A chip enable line should always be asserted for at least 500 µs, but you suspect occasional glitches. Set the Source Type to Digital, pick the enable channel, set the Condition to Pulse Width Pos Less, and set the Width to 500 µs. Click Reprocess Triggers. Only pulses shorter than 500 µs appear in the trigger list.
Related Pages
- Capture: starting, stopping, and saving captures
- Waveform View: zooming, panning, cursors, and measurements
- Channels and Signals: enabling input channels for capture
- Active Debug Port: Firmware Integration: sending text and values from firmware with
ACTIVEText,ACTIVEprintf, andACTIVEValue