I have a PCI-5122 card with 8 MB (per channel) of memory. I'm programming it with the Linux NI-SCOPE drivers, using C as my programming language. The machine is an AMD Athlon X2 dual core processor, with 2 GB of memory, running SUSE 10.0.
I'm interested in acquiring long runs (full memory, so 4 megasamples) of data in a free-running mode: start an acquisition, let it fill the card's memory, fetch it, write it to disk, and do the next acquisition. So far, things are almost working, but note quite: if I ask the card for a small number of records (less than about 32,725 or thereabouts), I get nice-looking waveforms. However, there is a break point -- less than 32,768, though I haven't narrowed it down to less than that -- where the card begins to return values of 0.000711496 V (exactly) for every sample. No warnings, no errors, no nothing -- just clearly-incorrect values. This isn't just my code, either: if I modify the SaveToFile.c example to read more records, I get the exact same problem.
The problem seems to be independent of sample rate: I get the same problems at 10 Msps as at 100 Msps. I'm interested in the latter rate, by the way.
I've been working around this by setting up a multi-record acquisition, but doing that leaves a 2 microsecond or so gap between records, which is really annoying, and which I would like to eliminate.
Any help would be appreciated.
Thanks.