I am programming a NI 6733, using register level programming (I am writing a Windows 2000 driver). The card outputs a continuous stream of analog data, and I want the card to issue an interrupt when the AO FIFO becomes half empty.
So far, so good: I installed an ISR, which gets called. But sometimes much too late! Using two channels and a frequency of 10kHz, the interrupt should fire about every 0.4 ms, which really isn't often, IMHO. But in three out of four cases, the FIFO is already empty when the ISR is called (and must have been for some time, since the waveform is interrupted). I don't think W2K has an interrupt latency of more than 400ms ...
When I output a ramp waveform from -10V to +10V, I see on the attached oscilloscope f
lat lines of up to 4 seconds during the wave. Which makes me think that during that time, 10 interrupts are somehow lost.
Any ideas? I looked at aoex5.cpp (from the DDK), but I don't see any real difference to my code.