Hello,
I think I can answer what�s causing the effect you�re seeing, and a possible workaround. Usually a data buffer is accessed from the main PC memory using one of two methods: DMA or interrupts (via callbacks). So when the 6534 reaches the end of the buffer, either a DMA transfer or an interrupt is initiated to create the new buffer. However, when ND_PATTERN_GENERATION_LOOP_ENABLE is used, the 6534 loads a buffer from the main memory only once to fill its internal memory, and then it continues to loop on this internal memory buffer. After the memory is initially loaded, this pattern is internally stored and no additional memory transfers are required, which explains why your callback was not being executed when Looping was enabled.
The workaround fo
r this is to not enable looping and just set your buffer to the same buffer each time your callback is executed. The only thing to watch out for here is that this may cause a performance hit if your pattern is being clocked out at a fast rate, since there is much more overhead involved on the PC side when using interrupts.
Here are some links to examples of how to setup double buffered transfers. The only thing that needs to be modified in them is to change them from DMA mode, to interrupt mode, which you�ve already done successfully in your existing program.
http://venus.ni.com/stage/we/niepd_web_display.DISPLAY_EPD4?p_guid=B45EACE3DF1D56A4E034080020E74861&p_node=DZ52321&p_submitted=N&p_rank=&p_answer=&p_source=Internal
http://venus.ni.com/stage/we/niepd_web_display.DISPLAY_EPD4?p_guid=B45EACE3E12F56A4E034080020E74861&p_node=DZ52321&p_submitted=N&p_rank=&p_answer=&p_source=Internal
Hope this helps!
Ken S.
National Instruments