Multifunction DAQ

cancel
Showing results for 
Search instead for 
Did you mean: 

Avoid " No DMA channel available for use" error

i'm facing this "NO DMA channel available for use" error, how should i avoid it or solve this problem. I'm using a 6025E board.

everytime when i faced this problem i used to reboot my PC, however this don't solve my problem this time round when i add in the analog acquisition by hardware trigger.

thks,lyn
0 Kudos
Message 1 of 4
(3,715 Views)
Lyn,

The PCI-6025E only has one DMA channel. This can be determined by viewing the System tab in the Properties window for your device in the Measurement & Automation Explorer (MAX), or by viewing the table in the Knowledge Base article which I have linked below.

How Many DMA Channels Does My E Series Data Acquisition (DAQ) Device Have?
http://digital.ni.com/public.nsf/websearch/E00C0F790CA2CDA686256BF000614DE1?OpenDocument

It looks like you are trying to perform 2 buffered operations, one analog and one with counters, in your application. Each buffered operation will try to use one DMA channel. As you can see, you will be one DMA channel short. This means that you will have to perform the second operation, either the counter or the analog, using
interrupts.

To set your DAQ device to use interrupts (IRQs) instead of DMA, use the Set DAQ Device Information.vi.

If you cannot use interrupt based transfers for either of the two operations, due to the fact that interrupt-based transfers are much slower and you are running a speed-critical application, then you should consider the use of a data acquisition board with more DMA channels.

Regards,
Justin Britten

Applications Engineer
National Instruments
0 Kudos
Message 2 of 4
(3,715 Views)

Hello!

 

I´m having the same problem, but i´m using simulink/matlab (the data adquisition toolbox) to read and write simultaneously from PCI-6036E. What can i do to solve the error and change the mode transmission from DMA to IRQ?

 

Thank you for your attention.

 

ArquiB.  

0 Kudos
Message 3 of 4
(3,186 Views)

I'm not sure about how to access it in the Data Acqusition Toolbox, but perhaps this might help to point you in the right direction.

 

In the DAQmx C API, the corresponding DAQmx channel attribute is DAQmx_YY_DataXferMech (where YY is the channel type: AI, AO, DI, DO, CI, or CO). To set it to use interrupt-based transfers, you would set the attribute to DAQmx_Val_Interrupts with something like the following:

 

DAQmxSetChanAttribute(myTaskHandle, NULL, DAQmx_AI_DataXferMech, DAQmx_Val_Interrupts);


I would expect the approach to be similar in Data Acqusition Toolbox.

——
Brandon Streiff
ni.com/compactdaq · ni.com/daq
0 Kudos
Message 4 of 4
(3,177 Views)