The SI prefix ladder in format_measure() was gated on a non-empty unit, so two decimals of a small unitless value printed `0.00` -- the reading gone, not merely coarse. That is a whole class of channels rather than a corner: a CONFIG need not declare a unit, and a math channel never has one. Below 1e-12 the same loss happened even with a unit, so that range falls back to three significant digits. With no unit the prefix goes tight against the number (`585.24m`), since the space exists to separate the number from its unit and a spaced `m` alone reads as metres. The mock declared `unit="V"` for every data signal, which is why no probe could see this; it now takes `--unit ''`. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
44 lines
2.7 KiB
Plaintext
44 lines
2.7 KiB
Plaintext
<b>Measurements</b>
|
|
|
|
A measurement is a statistic of the <i>visible window</i> of one signal, recomputed as that
|
|
window moves. The pane lists them with their values; each can also draw its result on the plot.
|
|
|
|
<b>How to reach it</b>
|
|
|
|
The measurements button in the toolbar, or <tt>m</tt>. The pane's <tt>+</tt> adds one; clicking
|
|
a row opens the dialog where the signal, the type, the threshold share and the on-plot marks are
|
|
set, with <b>Save</b> and <b>Delete</b>.
|
|
|
|
<b>Worth knowing</b>
|
|
|
|
• The types are average, top, bottom, min, max, peak to peak, amplitude, pulse duration, period
|
|
and frequency. <i>top</i> and <i>bottom</i> are the means of the upper and lower halves, which
|
|
is why a unit sine reads 0.637 (2/π) rather than 1.
|
|
• The on-plot marks come in two kinds and the mix is the reading: a <i>level</i> mark is a ruler
|
|
at a value, a <i>time</i> mark is a marker at a position. An average draws one level mark; a
|
|
max draws a level mark <i>and</i> a time mark at the first sample that reached it.
|
|
• Marks cannot be dragged. A measurement mark says what the measurement measured, so it is
|
|
created unselectable — as is the trigger marker.
|
|
• A pass is throttled to a cadence rather than run every frame, so a ruler over a live view is
|
|
<i>stepped</i>. The number and the ruler come from the same pass, so they always agree.
|
|
• An invalid pass keeps its <i>level</i> marks and drops its <i>time</i> marks. A level is a
|
|
property of the signal and outlives the window; a position inside the window does not. That is
|
|
what stops the rulers blinking off at a mode change.
|
|
• A window with too few crossings reads <tt>invalid</tt> / <tt>--</tt> rather than a plausible
|
|
invented number. Frequency over a window holding one edge is the usual case.
|
|
• <tt>frequency</tt> is reported in Hz and <tt>period</tt>/<tt>pulse duration</tt> in seconds;
|
|
every other type carries the channel's own unit. A value is written with a <i>metric prefix</i>
|
|
so its digits sit in <tt>1..999</tt> — <tt>636.62 mV</tt>, not <tt>0.64 V</tt> — including when
|
|
the stream declares no unit at all, which is always the case for a math channel: there the
|
|
prefix goes tight against the number (<tt>636.62m</tt>), since two decimals of an unprefixed
|
|
small value is <tt>0.00</tt>.
|
|
• Cost is bounded by reading the summary pyramid the producer already maintains, not the raw
|
|
window. The values are still exact: a bucket's sum is a sum.
|
|
|
|
<b>Example</b>
|
|
|
|
On a 1 Hz ±1 sine: <tt>average=0</tt>, <tt>top=0.636620</tt>, <tt>bottom=-0.636620</tt>,
|
|
<tt>max=1</tt>, <tt>min=-1</tt>, <tt>peak to peak=2</tt>, <tt>amplitude=1</tt>,
|
|
<tt>pulse duration=0.5 s</tt> (duty 0.5), <tt>period=1 s</tt>, <tt>frequency=1 Hz</tt>. Over a
|
|
2 M-sample window those two passes read about 0.1% of the samples.
|