Data AcQuisition And Real-Time Analysis
Scope - Spectrum - Spectrogram - Signal Generator
Software for Windows
Science with your Sound Card!
The following is from the Daqarta Help system:



Spectrum Analyzer

Signal Generator

(Absolutely FREE!)


Pitch Tracker


DaqMusiq Generator
(Free Music... Forever!)

Engine Simulator

LCR Meter

Remote Operation

DC Measurements

True RMS Voltmeter

Sound Level Meter

Frequency Counter
    Spectral Event

    MHz Frequencies

Data Logger

Waveform Averager


Post-Stimulus Time
Histogram (PSTH)

THD Meter

IMD Meter

Precision Phase Meter

Pulse Meter

Macro System

Multi-Trace Arrays

Trigger Controls


Spectral Peak Track

Spectrum Limit Testing

Direct-to-Disk Recording



Frequency response

Distortion measurement

Speech and music

Microphone calibration

Loudspeaker test

Auditory phenomena

Musical instrument tuning

Animal sound

Evoked potentials

Rotating machinery


Product test

Contact us about
your application!

Jitter_Tbl Macro


The Jitter_Tbl macro computes jitter for square waves that are generated using a phase table approach, such as Daqarta's Square wave in Snap mode, or the Arduino square wave oscillators used in DaquinOscope and Arduino_Oscillators via the DaqPort 0xF0, 'F' Set Oscillator Frequency And Phase functions.

The table shows the square wave frequency and jitter period for all even divisors of the sample rate from 2 to 1024. This may allow you to optimize for certain output frequencies and sample rates.

See the DaquinOscope Square Wave Jitter subtopic as well as Square wave Edges - Snap vs. Interpolate subtopic for more information on phase table square wave jitter.


The Jitter_Tbl macro mini-app is included with Daqarta. However, before you use it, you may want to change certain parameters that are set near the start of the macro. To do that, first hit CTRL+F8 to open the Macro Dialog. Then scroll the Macro List down and single-click on Jitter_Tbl to select it without running it, and click the Edit button.

(Note that you can open this Help topic by selecting Jitter_Tbl as above, then clicking the Help button below the list, next to Run. Or, once you have opened the Edit dialog, you can click the duplicate Help button near the upper right.)

The first thing you might want to change is the name of the file that Jitter_Tbl will create in the Documents - Daqarta - User_Data folder. The default is "JitterTbl" as set here (with an automatic .TXT extension):


Next, select if you want a table for DaquinOscope or the Daqarta Generator square wave:

UV=0            ;0=DaquinOscope Osc, 1 = Daqarta Gen

Finally, under the relevant branch of the IF.UV=1 statement set the desired sample rate S. The default is 48000 for sound cards, but you may want to set 96000 or 192000 according to the Sample Rate value you will be using in the X-Axis Dialog control.

For DaquinOscope, the default is 10000. If you set another rate, it will automatically be forced to the nearest valid frequency that can be obtained with the Arduino timer running at 2 MHz.

Then exit the Macro Editor by clicking the Save Macro button at the bottom, and click the Run button.

Jitter_Tbl Macro Listing:

UV=0                   ;0=DaquinOscope Osc, 1 = Daqarta Gen
IF.UV=1                ;Daqarta Generator Snap Square?
    S=48000                ;Default sound card sample rate
    C=2^29                 ;Osc base
    S=cint(S)              ;Integer only
    Str0="Daqarta Generator Snap Square"
ELSE.                  ;Else DaquinOscope Square Osc
    S=10000                ;Default Osc sample Rate
    C=2^25                 ;Osc base
    IF.S=>50000            ;Above max sample rate?
    IF.S=<7812.5           ;Below min sample rate?
    S=2M/cint(2M / S)      ;Limit to valid freqs w. 2M clock
    Str0="DaquinOscope Square Osc"

UI=2                   ;Starting divisor
UE=1024                ;Ending divisor

LogTxt=Str0 +" at sample rate = " +S _
    +n +"Div    Frequency" +p25 + "Jitter period, sec"

WHILE.UI=<(UE + 1)
    US=C / UI              ;Osc step size
    F=US * S / C           ;Osc frequency
    N=C / (2 * US)         ;Steps (samples) per square phase
    E=abs(N - cint(N))     ;Error fraction per square phase
    E=E / cint(N)          ;Error fraction per sample
        LogTxt=n + UI +p6 + F(5_9) + p25 + "*******"
        J=E * S / 2        ;Jitter freq
        G=1/J              ;Jitter period
        LogTxt=n + UI +p6 + F(5_9) + p25 + G

Questions? Comments? Contact us!

We respond to ALL inquiries, typically within 24 hrs.
Over 35 Years of Innovative Instrumentation
© Copyright 2007 - 2023 by Interstellar Research
All rights reserved