04-05-2007 10:20 AM
Now that I have a better understanding of the problem, here is a modified example that has the same issue as my acre-sized Labview program. Note that in my program I have buffered AI reads that are recording multiple data points per loop iteration. I need to run buffered frequency measurements (which requires Implicit timing) so that I can check if there is an available sample in the frequency buffer. This check allows me to input very low frequencies (like 1 Hz) and if there is no available point, I just use the point(s) provided in the last loop iteration. This allows the loop to continue without waiting for a calculation of very low frequency inputs. Otherwise my loop waits for a frequency point to become available and my AI gets bogged down.
So I'm stuck with buffered frequency measurements to deal with low input frequencies, this works great for low frequencies. When I put in high frequencies, like 1000Hz, 10000Hz, etc I get an error that says that the task was stopped because there was un-read data in the buffer - seeming to ignore the "Overwrite Unread Samples" request. Why won't this overwrite the samples that accumulate at high frequencies.
Also note that if I remove Implicit timing and don't do buffered acquisition, the high frequencies work great. Then I have a problem with low frequencies…
I can't change modes based on input frequencies. I don't want to increase the AI rate based on input frequency. There must be a way to ignore (overwrite) the extra frequency samples without getting an error???
04-06-2007 02:38 PM
04-06-2007 05:43 PM
04-09-2007 07:56 AM
04-09-2007 06:03 PM
I'm still getting an error with this VI. See below...
In non-buffered mode the card usefully reads frequencies much higher than I require. In this mode, is there any way to keep the acquire loop from waiting for a sample at low frequencies (lower than the acquire frequency)? I can time-out the frequency read and keep the loop going but when it times-out it doesn't just allow the loop to continue and still calculate the frequency, it resets the read and must "re-start" the frequency calculation on the next iteration. It there any way to replicate my necessary functionality with this card? We have a lot of investment in this direction. Can the 6210 even control an SCXI?
Thanks,
Brian
-----Original Message-----
From: support@ni.com [mailto:support@ni.com]
Hello Brian.
I have replicated the issue that you are seeing with the PCMCIA card and this is expected behavior. The reason is that the PCMCIA card uses IRQ transfer which is much slower than the PCI method of using DMA transfers.
The IRQ transfer method, combined with the 2 sample FIFO on the PCMCIA makes measuring higher frequencies without the use of 2 counters impossible.
At this point, I would recommend purchasing a USB-6210, which has a 1024 sample counter FIFO instead of the 2 sample FIFO that is on your PCMCIA card. Also, the 6210 uses DMA instead of IRQ which will greatly increase the performance of your system.
04-10-2007 06:54 PM