Digital I/O

cancel
Showing results for 
Search instead for 
Did you mean: 

Using 6533 DIO32HS, is it possible to use double buffered output with varying pauses?

I'm using Level-Ack handshaking to transmit data. Currently, I'm hooked up to a loop-back on the DIO32HS card.

If I don't use double-buffering, I end up with pauses in data transmission, so I need to use double buffering. Unfortunately, I can't seem to set up a delay in the middle of a double buffered scheme.

What I need to do is this:
Transmit 64 packets of data (16 bits each) on group 2 / Receive 64 packets of data (16 bits each) on group 1
Delay for .2 ms
Transmit the same packets again / receive

The delay in the middle will need to be varied, from .2 to 20 ms.

I'm programming in Visual C++ 6.0 under Windows 2000, with (as suggested above) group1 c
onfigured as input (DIOA and DIOB) and group2 set up as output (DIOC and DIOD). Due to the speed of transmission (256kHz) and the small size of the data set, the program I wrote, no matter how tight I try to make it, cannot insert the proper delay and start the next send on time.

Does anyone have any idea if such a pause is possible? Anyone know how to do it, or any suggestions on what to try?

Thanks!
0 Kudos
Message 1 of 2
(3,966 Views)
.2 ms is a very small time delay to use in software. Windows usually isn't more accurate than about 10 or 20 ms. If you need to have small, precise delays you could either use a real time OS, like pharlap and LabVIEW RT, or use extra hardware to generate the delays correctly.

I would recommend using a separate MIO or counter/timer board (like a 660x) to generate timing pulses for the DIO32HS. This gives you precise timing control at high speed. If the 32HS is in Level ACK Mode, it will respond to external ACK and REQ signals. This is covered in more detail on page 5-10 of the PCI-DIO32HS User Manual.
Message 2 of 2
(3,966 Views)