LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

DMA question

Hi!

Ok, so I have finally found a way to make my AI
and AO loops run indeinitely without buffer
under-/overruns. Actually it's pretty simple,
all I needed to do was make sure that the read and
write pointers were far enough apart in the
buffer ... doh!

However, now when I try to run the loops concurrently,
one will execute fine (AI) and the other one will
give error 10455 (No DMA available). I have a E6035
and it has a DMA. So I guess what is happening is that
whichever Init VI goes first grabs that DMA and the
other one doesn't get access to it anymore. So to solve my
problem:

(a) Is there any way I can get both input and output
loops to use DMA, preferably with different data
rates and if so, how (well ... or what VIs should I
look up
)?

(b) If that is not possible, would the use of occurrences
instead of software timing/DMA be a possible solution?
(Currently I am using the WaitForNextMSMultiple VI
to get the same timing effect as an occurrence).

Rudolf
0 Kudos
Message 1 of 2
(2,637 Views)
Rudolf;

Both operations use DMAs by default. As you are using a PCI board, and the PCI board has only three DMA channels availble, all the devices that need DMA to do any operation will share those three DMA channels. If you have several devices doing that, you might have the time sharing in between the devices not fast enough to keep up with the rate of the acquisition you are doing. Doing asynchronous Analog Input might be one solution for your problem.
Hope this helps.
Filipe
0 Kudos
Message 2 of 2
(2,637 Views)