Thanks Justin.
I've gotten my program to work with shared sample clock, and I'll later be able to debug it and hopefully it offers sufficient performance. Is there always an error thrown when the card skips over / misses samples? Because this might ensure that I'm not missing anything. I know there sometimes is.
However, my problem is that the two tasks that I'm interested in, AI and AO, need to operate at different frequencies. Specifically, I want my AO channel operating at about 44 khz (44,000 samples / second), and want my 16 AI channels sampling at around 10,000 samples a second (10 khz). How can I manage this? Is there some way to set up an internal clock running at a least common multiple of the two frequencies, and then have each task sample after a certain number of ticks of this clock? Alternatively, since my AI frequency doesn't have to be exactly 10 khz (e.g. it could be 11 khz), I could set the AO frequency to 44khz and then use its sample clock for the AI. However, I would still need to make the AI operate at only every 4 beats of sample clock. Is there a way to do this?
Also, I'm curious as to the exact mechanisms at work. THe sample clock i know is a hardware mechanism. Presumably at each tick of the clock, one input and one output sample is acquired or output, via an ADC or DAC respectively. Then what happens? How are buffers involved, how is the operating system involved, and might this slow things down? In particular, since I'm assuming not everything can happen "at once" at each beat, in what order do these things happen?
Thanks a lot! If you can offer any advice, especially in response to the second paragraph where I actually have a programming question, it would be appreciated. I also have two more grab-bag questions, the first being very important to my application:
-What is the best way to create a graph with constant refresh of the incoming data (In C#). I don't have Mesurement studio.
what is the difference between async read/write and just read/write when it comes to AO and AI tasks? Presumably async allows you to call a function at the end of each cycle, but how is this implemented?
thanks again.
-scorpsjl