I inherited a 256 channels parametric tester and now I am looking into reducing execution time. My primary target is the DAQ transfer (92% execution time).
The existing software uses the following calls:
1) aquire data:
nidaqAICreateTask(,kNidaqWaveformCapture,...),
nidaqAIConfigBuffer(),
nidaqAIConfigChannelLimits(),
nidaqAIStart(), nidaqAIRead(), nidaqAIStop(),
nidaqAIDestroyTask().
2) setup clocks/triggers:
GPCTR_Set_Application(daq,ND_COUNTER_0,ND_PULSE_TRAIN_GNR),
GPCTR_Set_Application(daq,ND_COUNTER_1,ND_SINGLE_PULSE_GNR),
GPCTR_Change_Parameter(daq,ND_COUNTER_0,ND_SOURCE,ND_INTERNAL_20_MHZ),
GPCTR_Change_Parameter(daq,ND_COUNTER_0,ND_COUNT_1,((1/180)/50ns)/2),
GPCTR_Change_Parameter(daq,ND_COUNTER_0,ND_COUNT_2,55556),
GPCTR_Change_Parameter(daq,ND_COUNTER_0,ND_GATE,ND_OTHER_GPCTR_OUTPUT),
GPCTR_Change_Parameter(daq,ND_COUNTER_1,ND_SOURCE,ND_INTERNAL_20_MHZ),
GPCTR_Change_Parameter(daq,ND_COUNTER_1,ND_COUNT_1,2),
GPCTR_Change_Parameter(daq,ND_COUNTER_1,ND_COUNT_2,scanTime),
GPCTR_Control() to start, stop and reset the clocks.
Questions:
1) Does nidaqAIRead() perform a DMA transfer?
2) If not, what changes should I make to accomplish it?
3) Would NI-DAQmx 7.3 implementation speed-up the transfer? I cannot try it now because PXI-6533 and PXI-6704 are not yet supported, but I am willing to wait. I was told that the next NI-DAQmx version (scheduled sometime next year) will support these devices.
Platform info:
1) Hardware: PXI-1011, PXI-6052E, PXI-6533, PXI-6704, SCXI-1102C (8 cards) on Windows 2000
2) Software: LabWindows/CVI 7.1, Traditional NI-DAQ 7.3