Hi,
Using an NI PCI-6602 card we try to measure the semi-periods of a digital signal.
In "continuous sampling mode", 10 samples are collected in the buffer and then are read
out.
Up to 6 counters on this card are sampling the same signal in our testing configuration.
Here we found these issues:
1. Failure
In principle, the measurement runs correctly, but one or more counters sporadically may
suffer a complete failure. I.e. these counters don't provide samples anymore.
Only after stopping and restarting the assigned task, a failed counter works again.
Apparently, a counter failure is most likely to happen when
- the sampled signal "changes", i.e. when the pulse width of the signal changes,
- or when the computer load is high, e.g. when opening a window of another application.
Every counter occasionally failed, but the issue was found very often at counter 1 of
the PCI-6602 card, if we used counters 0 through 5 in parallel.
Using another PCI-6602 card, the failures happened preferably on counters labeled "near"
number 5.
2. Wrong values
Occasionally the "interpretation" of the sampled values changes, i.e. the length of the
"high level" period is returned, where the "low level" period length should be given, and
vice versa.
This is our task configuration:
Configuration done with MAX:
Signal input range: 2 usec - 2 sec
Custom Scaling: None
Sample mode: continuous
Buffer size: 10 Samples
In addition these calls are made:
ret = DAQmxSetDigEdgeArmStartTrigSrc( task->mHandle, <use the same terminal as is used for
the signal to be measured>);
ret = DAQmxSetArmStartTrigType( task->mHandle, DAQmx_Val_DigEdge);
ret = DAQmxSetDigEdgeArmStartTrigEdge( task->mHandle, DAQmx_Val_Rising);
ret = DAQmxSetCISemiPeriodStartingEdge( task->mHandle, <the channel>, DAQmx_Val_Falling);
Best regards
Manfred