LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

Confused about DMA channels

I've run into a problem: I've run out of DMA channels. Admittedly, I don't really understand much about them, but digging through the forums here has taught me that the issue is the PCI Bus being limited to three shared channels.

I'm using a PCI-6035E card. My application uses both counters (for a buffered semi-period measurement: one counter produces the gate for the other counter which buffers counts at each gate transition). Alone, this works perfectly.

But when I try to add buffered AI to the program, I get errors saying no DMA channels are available.

I also need to do single update (unbuffered) AO operations.

Which of these operations needs DMA? Is it even possible to use buffered counters, buffered ai, and single-write ao simu
ltaneously, or am I out of luck?

The only devices on my PCI bus are a sound card (which I have disabled, just in case it's using a DMA channel) and my network card. I guess, if need be, the network adapter could be disabled too, but, well, the net is kinda handy when you're doing programming...

Also, is there any way to figure out what devices are using the DMA channels?

Are there any other bus types that would lift the 3-channel limitation and NI makes DAQ cards for?
0 Kudos
Message 1 of 5
(3,370 Views)
Hi,
The PCI 6035E only supports 1 DMA channel.
Certainly in my attempts to do similar things on a PCI-6024E card (also
1 DMA channel) I had the same error message. The only way round this I
found was to make the buffered counter operation use interrupts instead
of DMA.
I don't have my VI here but I'm suppposing I used the Counter Set
Attribute function to set a tranfer mode of interrupts. I found this
didn't seem to degrade the performance; but as ever I stand to be corrected!

Best of luck,

regards,

Dave R.
0 Kudos
Message 2 of 5
(3,370 Views)
Thanks for the idea. And if that does end up affecting performance, or just plain not working, I suppose I can always just slap in a new card (assuming that a second card means a second DMA channel). I think we have a few extra laying around somewhere.
0 Kudos
Message 3 of 5
(3,370 Views)
You may want to use the "Set DAQ Device Information" VI in LabVIEW to disable DMA transfer for one of these operations. The best thing to do is use interrupts. This NI Knowledge Base discusses this issue and how you can handle it. Of course, as you said, it may limit performance, but it's worth trying out first.
J.R. Allen
0 Kudos
Message 4 of 5
(3,370 Views)
Thanks, both of you. The interrupt solution worked beautifully.

-Michael J. Eggertson
0 Kudos
Message 5 of 5
(3,370 Views)