Using a 6602 can only use DMA on 3 channels. If I set up the LabVIEW vi to read 3 channels (buffered read of 250,000 counts), then read 3 other channels, and finally read the last 2 channels. This is fast and effective. Problem is the multiple calls of CTR Group Config yields an Error -10444 (out of memory) after about 10 hours of run time. Since the CTR Number has to be reassigned for the new CTR Read, Task IDs cannot be paased through a shift register. Using interupts on 5 of the 8 CTRs is way too SLOW. Looking at NI KnowlegdeBase there is no way to group the counters. Any Thoughts?
You cannot group counters, but you can create a separate group for each counter. In addition, you can use Counter Control to only prepare them all at once. You should then be able to arm the counters three at a time and read the data. Depending on the operation that you're performing you can call "Disarm" or the counters will disarm themselves when the operation completes. You can them arm the next three counters and so on. Just as long all 8 are not armed simultaneously, you should be able to configure your program to use DMA for all counters.
This is exactly what I was doing. The problem with this scenario is that as every time you call counter config the taskid starts eating memory. NI wants the taskid's to be reused (via a shift register). Since I am setting up three sets of counters (1-2-3,4-5-6,7-8) to use the DMA new taskid's are needed every time you have to reconfig counters. After a while (~10 hrs) this creates an error -10444 (out of memory). There are plenty of other posts that equate this error with people using EasyIO DAQ calls that keep calling AIConfig or AOConfig. With AI or AO can can group the channels and pass the taskid thru a SR. Since we cannot group these ctrs we must reconfig continuously.