Hi,
I am having some difficulties running a timed loop in LabView 2012 Service Pack 1. My goal is to use a rising edge coming from a camera to trigger the positioning of a piezo driven microscope stage. The camera sends it's trigger with a frequency between 30 and 120 Hz, depending on the camera's settings. The rise and fall times of the trigger are < 1 micro second, the width is between 32 - 42 micro seconds. The stage movement is done by setting an anlalog output voltage to a value proportional to the index of a timed loop (modulo some constant).
Now, Labview states that a DAQmx Write did not complete in time. This error is perfectly reproducible, and occurs whenever the loop index reaches 100. This is independent of the
frequency of the trigger and independently of the edge count set on the Timing Source used for the loop. Even if I set the trigger frequency to 30 Hz, and the edge count to 100, so that the loop body is run once every 3.3 s the same error occurs after 100 loop iterations. Tools»Profile»Performance and Memory reports zero time for all sub VIs.The independence of the actual timing leads me to believe this is not a timing issue per se, but that I am missing something and this is due to a synchronization issue between the write and the loop, or even an overflowing buffer.
This is the error I am getting when running ExternalCounter.vi (attached)
Error -209801 occurred at ExternalCounter.vi
Possible reason(s):
DAQmx Write did not complete before the arrival of the next sample clock which indicates that your program is not keeping up with the hardware clock.
Slow down the hardware clock or else change your application so that it can keep up with the hardware clock.
Task Name: _unnamedTask<1C>
I'd be grateful for any hints on how to diagnose/resolve this issue.
Bastian