Multifunction DAQ

cancel
Showing results for 
Search instead for 
Did you mean: 

buffered digital output with PCI6025E?

I would like to update some digital lines faster than 1kHz in LabView with my PCI6025E board. I assumed that I could do that with buffered I/O. But all my attempts result in DAQ errors. Is buffered I/O even possible on this board. If not, is there some way to get 5 to 10 kHz update rates for digital I/O?

Thanks
BB
0 Kudos
Message 1 of 7
(3,122 Views)
Buffered digital I/O is possible with the PCI-6025E. However, the digital functionality on this board is provided through two different digital I/O chips. The first 8 lines (Digital Channel 0) are provided by the DAQ-STC digital and timing controller. These lines are only capable of programmed I/O. In other words, the lines are updated by software calls. The last 24 lines (Digital Channels 2, 3, and 4) are provided by the 8255 chip on the board. These lines are capable of both programmed I/O and handshaked I/O.

From your description, it sounds as though you would like to perform pattern I/O. That is, you would like to be able to output a buffer of data at some pre-determined, hardware generated rate. The 8255 chip on this board does not directly support
pattern I/O in that it cannot generate its own clock signal based on the pre-determined rate desired. It supports handshaked I/O where data is output/received based on external signals. For a complete definition of handshaking, you can refer to:

support.ni.com/daq/devices/6533/defs.htm

The generation rate must be externally clocked on the REQ line on the chip.

In order to setup handshaking on this board, you must use the DIO Group VIs instead of the DIO Port VIs. The DIO Group VIs provide a way to configure a buffer of data and output it. For an example of how to do this, you can refer to the 8255 PPI digital examples that ship with NI-DAQ for LabVIEW. Specifically, you will want to look at the Digital Buffered Handshake I/O examples for the 8255.

Regards,
Erin
Message 2 of 7
(3,122 Views)
So neither the 8255 nor the STC can generate a square wave pulse train using digital IO or counter/timers?
0 Kudos
Message 3 of 7
(3,122 Views)
Actually, the STC can generate a square wave pulse train because it is a timing chip. In addition to being the timing controller for the 6025E, it has 8 static digital I/O lines. These lines can "simulate" a pulse train by writing 0's and 1's to one of the lines on the port through software calls. In this case, the output would be software-timed and not hardware-timed. A more efficient solution is to program either of the onboard counters (GPCTR0 or GPCTR1) to output a hardware-timed pulse train on their respective output pins. For an example, you can refer to LabVIEW/examples/daq/counters.

The 8255 can produce a pulse train either by writing 0's and 1's through software calls, or you can create a buffer of 0's and 1's and output that buffer on a di
gital line by providing an external clock source on the REQ line for the chip.

The 8255 chip on the 6025E is useful when you want to control more than 8 lines of static digital I/O. For example, you want to control 32 relays with the board. It is also useful when you want to output a digital buffer of data representing an 8-bit, 16-bit, or 24-bit digital word based on an external device's request for data. This is commonly referred to as handshaking with an external device. Commonly, handshaking is used when the user is concerned with making sure that all data that is written/received by the port is acknowledged by the external device.

It sounds to me like you are just interested in producing a pulse train, in which case, the onboard counters will solve this problem better than attempting to produce a digital pattern on one of the digital lines of the board.
0 Kudos
Message 4 of 7
(3,122 Views)
I have a similar programming task. I have a PCI6025E, which was purchased to handle fast DIO for the purpose of controlling trigger lines for some synchronized control and acquisition. I want to control the delays between the various triggers to within a few microseconds. I have NI-DAQ 6.9.3, which came with my PCI6025E board. There was no example for Digital Buffered Handshake I/O included on the CD. May I download it from somewhere on the NI website?
jc
Mac 10.4
LV7.1
CLD
0 Kudos
Message 5 of 7
(3,122 Views)
I was not looking in the right place for the examples. For future reference, the examples are found under the "Help" pull-down menu item. I was able to get the buffered I/O to work, but there was a glitch at the end of the buffer.

In my case I wanted four lines to act as TTL triggers. I wrote a buffer that switched the bits at time t1 (i.e. N1*dt, where dt is the clock frequency on the ACK line) to the active state (some high, some low) and held them there until t2, where they are switched back to the inactive state. The problem is that the lines all seem to go back to the default state (low voltage), regardless of whether they are active high or active low, between the time the buffer has been written and the next start of the buffer.
jc
Mac 10.4
LV7.1
CLD
0 Kudos
Message 6 of 7
(3,122 Views)
I, too, am using buffered digital output from the 6025E board. I used the 8255 example that was mentioned, viz. "Dig Buf Handshake Out(8255).vi". This works. I wired the GPCTR0_source (pin 47) to the ACK_B (pin 61) line to clock the buffer (using the counter/timer PulseTrainGeneration function).

I could only get the thing to work with a clock speed of 50kHz or less. If I tried to generate a faster clock there was a lot of jitter in the timing of the output. Also, there seemed to be problems between buffers. The lines seemed to reset to low voltage after the buffer had been written. I am working on fixing this problem.
jc
Mac 10.4
LV7.1
CLD
0 Kudos
Message 7 of 7
(3,122 Views)