LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

How many DMA Channels does my device have?

I would like to know how I can find out (progammatically) how many DMA channels my device has. I am using the DAQmx driver. Other than with the traditional DAQ I can't find out anything about my device but the "type" and the "serial number". Where can I get some more details about the device (not in the MAX - I want to know it in my program) with DAQmx?

My intention is to find out how many DMA Channels the device has and depending on how many Channels I need - I am using "interrupts" instead of DMA.

Somewhere in the KB of Ni was written that the NI-DAQ 6.9.... realizes automatically how many DMA Channels are available and how many I would need - and so he takes "interrupts" for the rest.
It seems that they did a "step bac
kwards" because with the NI-DAQ 7.2 it doesn't work automatically if I need DAQmx VI's.

Does somebody know anything that would help me to solve this problem?

Thanks.
0 Kudos
Message 1 of 5
(3,030 Views)
Hello,

I�m not sure that I would call DAQmx a �step back�. Before, the order in which the operations started determined which operation got the DMA channel. While this automation is easy to use, DAQmx ensures that the user understands the performance of each operation. As far as a workaround goes, all you have to do is trap the No DMA error. This error should be -200251. So in software, if you receive error -200251, then you need to configure the board to use interrupts, and then start the task again.

How to configure the board for interrupts differs in each of the four DAQmx API�s (C, C++, DotNET, and LabVIEW). If you are unclear about how to do this in your environment, please let us know, and we can find out.

Best regards,

Justin T.
National In
struments
0 Kudos
Message 2 of 5
(3,030 Views)
Sorry! I posted my first revision of the answer.

Here is what I meant to say:

Hello,

According to this KnowledgeBase, DAQmx and Traditional DAQ behave the same. Are you seeing something different?

As far as a workaround goes, all you have to do is trap the No DMA error. This error should be -200251. So in software, if you receive error -200251, then you need to configure the board to use interrupts, and then start the task again.

How to configure the board for interrupts differs from the four different DAQmx API�s (C, C++, DotNET, and LabVIEW). If you are unclear about how to do this in your environment, please let us know, and we can find
out.

Best regards,

Justin T.
National Instruments
0 Kudos
Message 3 of 5
(3,030 Views)
Thank you for the answer, Justin.

If you read the NOTE in this document:

http://digital.ni.com/public.nsf/3efedde4322fef19862567740067f3cc/540b236c81310b6f862569b5007d5ddc?OpenDocument

you may understand my "confusion". If I understand this note right - former NI-DAQ versions did handle the "DMA error" automatically while he configured all tasks which have no DMA left to use interrupts.
All I know is that this doesn't work (any more?) - that's why I was tempt to say DAQmx is a "step back".

But I have to admitt that everything else is a huge step in the right direction!

Thank you again for the quick response.

Best regards

Andy L.
0 Kudos
Message 4 of 5
(3,030 Views)
Hey Andy,

I can totally see where the confusion comes in. I will look into this KB when I can check out this board and see if it still holds true. At the very least it does not hold true for my 6070E. Perhaps the KnowledgeBase is only referring to the 6602.

Best of luck with your application!

Justin T.
0 Kudos
Message 5 of 5
(3,030 Views)