====== "cross" measure ====== ===== Purpose ===== Find the time or frequency where a probed value crosses a reference. ===== Syntax ===== cross(probe="p(d)" cross=value begin=time end=time rise fall last first) ===== Parameters ===== ^arg name ^default ^description ^ |probe |required |The name of a probe to measure. | |cross |0 |The value it crosses. | |begin\\ after |-infinity |The window begins at this time or frequency. | |end\\ before |+infinity |The window ends at this time or frequency. | |first |true |Find the first crossing in the window. (Cancels last.) | |last |false |Find the last crossing in the window. (Cancels first.) | |rise |true |Consider only rising crossings. (Cancels fall.) | |fall |false |Consider only falling crossings. (Cancels rise.) | ===== Caveats ===== For this function to detect a crossing, it must actually cross. * A steady state at the cross value is not a crossing. * Being at the cross value and leaving is not a crossing. * Merely touching (becoming equal to) the cross value and leaving from the same side is not a crossing. ===== Diagnostics ===== If there is no crossing within the specified range, it returns "Inf" (infinity). If you didn't store the waveform (see store command), it throws a "no match" exception, which prints "no match". ===== Examples ===== measure t2 = cross(probe="v(out)" cross=0 rise last) Find the last time that v(out) crosses 0, going up. measure t1 = cross(probe="v(out)" cross=0 rise last before=t2) Find the last rising zero crossing before t2. param period = {t2-t1} param frequency = {1/period} Params are interpreted like a functional language so they will be updated whenever t1 or t2 changes.