LabWindows/CVI

cancel
Showing results for 
Search instead for 
Did you mean: 

Counting with PCI6602 runs slow if other PCI hardware is in use

Hi everybody!,
I am using Labwindows CVI to control a PCI6703 board together with a PCI6601. The PCI6703 board outputs 3 analog votages used to raster scan a sample, and the PCI6602 is used to count photon events from 4 independent detectors as a function of position. The program runs well, but when I start another application that controls a third PCI board (not a National Instruments one) both programs run a lot slower
I do not understand what can cause this.
Does anybody know what can be done to fix this?
The third PCI board is a single photon counting SPC134 module from Becker&Hickl.
Many thanks!
JHH
0 Kudos
Message 1 of 5
(3,518 Views)
JHH,

The 6703 is a static analog output board, that means that you have to programmatically update the output value through software. Since this is a software-timed application (no buffered waveform generation) then it becomes dependant on how much CPU load you have a t the time on your system. I am guessing that as soon as you use your third board, the CPU usage gouse up (depending on what the driver for the third board is doing) and therefore there is less CPU time for the AO operation, making it update at a slower rate.

Monitor your CPU usage to see if this is the case. You might want to look for a hardware timed analaog board (like the 671X or a couple of E-Series) so you can detach the AO operation from the software load.

I hope this helps,

Alejand
ro Asenjo
National Instruments
Applications Engineer
Message 2 of 5
(3,518 Views)
Many things could be causing the decrease in performance you are seeing. The application that is controlling the SPC134 could be tying up your processor and slowing down applications that are interfacing with National Instruments hardware.

If you are running several applications simultaneously that are all processor intensive, you are going to see some speed issues. One thing that would help would be to increase the amount of RAM in your computer or try to work with a computer that has a faster processor. Also, make sure you are using DMAs to transfer data through the PCI bus rather than IRQs. I hope this helps.

Regards,

Todd D.
Applications Engineer
National Instruments
0 Kudos
Message 3 of 5
(3,518 Views)
Thank you for your help.
I used the Windows system monitor to have an ideas of the CPU usage by my program(4 channel simple event counter, combined with 3 analog waveform outputs) and by the programs that drives the SPC-134. Either of them is using over 80% CPU when aquiring alone. It seems to be the reason for this problem.
How can I determine if I am using DMA or IRQ and how many of each?. I have read that the PCI-6602 may have to use IRQ for data transfer, and my application requieres the use of this board for counting photons in 4 independent detectors. The using IRQ is no as fast as DMA. As far as the PCI-6703, and just for curiosity, how can I ensure that this board is using DMA?. I think I can replace the PCI-6703 by a PCI-6713.
Thank you very much.

Regards,
JHH
0 Kudos
Message 4 of 5
(3,518 Views)
JHH,

Your findings seem to confirm that basically your AO operation is going as fast as the processor can handle it.

Regarding your specific questions:

1) How can I determine if I am using DMA or IRQ and how many of each?

Static I/O operations like the ones you were performing with AO (and probably with the counters if you were doing simple event counting) are not DMA or IRQ based. These operations basically query the board for a value (simple event counting for example) or update the output with a value (AO case). IRQ and DMAs are data transfer mechanisms that apply to blocks of data, normally related to buffered operations.

2) As far as the PCI-6703, and just for curiosity, how can I ensure that this board is using DMA?

As I mention
ed above, if you are not doing buffered operations (and you are not because it is impossible with the 6703 AO, I am not sure what your 6601 counters are doing) then you are not using DMAs or IRQs.

3) I think I can replace the PCI-6703 by a PCI-6713.

If you have a 6713 then you can use it to perform Buffered AO and lower the CPU load on your system and get hardware timed output.

You have posted a new DevEx question related to this one so I paste the link to it:

http://exchange.ni.com/servlet/Redirect?id=9127060

I hope this helps,

Alejandro Asenjo
0 Kudos
Message 5 of 5
(3,518 Views)