06-21-2019 01:30 PM
I'm trying to generate some signals using PCIe-6343 board. Three AO channels are running in hardware-timed finite operational mode (stop condition BC_TC) using data preloaded and regenerated in FIFO buffer. So far so good. At some point of my program I need to reconfigure the timings and change the data in FIFO buffer. I tried to reconfigure the channels, starting from AO.AO_Timer.Reset_register.writeConfiguration_start, then update the data in the DMA buffer and preload them into FIFO. However, after the reconfiguration, for some reason, all the interleaved data from the FIFO buffer go exclusively to the first channel (as I see it on oscilloscope), and the two other channels remain silent. This happens every time unless I explicitly delete and recreate the tXSeries object before the reconfiguration. What do I do wrong? How can I correctly reconfigure the channels without deleting tXSeries object every time when I need to change the data or the timings?
Solved! Go to Solution.
06-28-2019 02:53 PM - edited 06-28-2019 02:55 PM
Solved. It is a bug. Here it is:
aoHelper.reset(status);
_outTimerHelper.reset(status)
_outTimer.Reser_Register.writeReset(1, &status);
This sequence resets Number_Of_Channel in Output_Control_Register without setting the dirty flag. If the number of channels has not been changed during the next configuration step, outTimerHelper:: programNumberOfChannels won't set the required number of channels, because AO.AO_Timer.Output_Control_Register won't flush the register, because the "force" flag is set to kFalse by default, resulting in a single channel output.