Quantcast
Channel: Counter/Timer topics
Viewing all articles
Browse latest Browse all 1271

synchronize continuously Analog Read with trigger C Code

$
0
0

Hello, I have a problem

 

I have NI USB-6251.

I have to synchronize continuously Analog Read with trigger.

My code working correctly only with finite mode, but in continuously mode signal not synchronizing!

I have no error.

 

Here working finite code:

 

/********* finite code ********************/

DAQmxErrChk(DAQmxCreateTask("",&task));

 

DAQmxErrChk(DAQmxCreateAIVoltageChan(task,"Dev1/ai1","",DAQmx_Val_Diff,-6.0,6.0,DAQmx_Val_Volts,NULL));

DAQmxErrChk(DAQmxCfgSampClkTiming(task,"",1000000.0,DAQmx_Val_Rising,DAQmx_Val_FiniteSamps,800));

DAQmxErrChk(DAQmxCfgDigEdgeStartTrig( task, "/Dev1/PFI0", DAQmx_Val_Falling));

DAQmxErrChk(DAQmxSetPauseTrigType(task,DAQmx_Val_DigLvl));

DAQmxErrChk(DAQmxSetDigLvlPauseTrigWhen(task, DAQmx_Val_High));

DAQmxErrChk(DAQmxStartTask(task));

DAQmxErrChk(DAQmxReadAnalogF64(task,-1,-1,DAQmx_Val_GroupByScanNumber,data,800,&samples,NULL));

DAQmxErrChk(DAQmxStopTask(task));

DAQmxErrChk(DAQmxClearTask(task));

/********* END finite code ********************/

 

Here continuously code:

/********************** continuously code ***************/

 

DAQmxErrChk(DAQmxCreateTask("",&task));

DAQmxErrChk(DAQmxCreateAIVoltageChan(task,"Dev1/ai1","",DAQmx_Val_Diff,-6.0,6.0,DAQmx_Val_Volts,NULL));

DAQmxErrChk(DAQmxCfgSampClkTiming(task,"",1000000.0,DAQmx_Val_Rising,DAQmx_Val_ContSamps,12500));

DAQmxErrChk(DAQmxCfgDigEdgeStartTrig(task,"/Dev1/PFI0",DAQmx_Val_Rising));

DAQmxErrChk(DAQmxSetDigLvlPauseTrigSrc(task, "/Dev1/PFI0"));

DAQmxErrChk(DAQmxSetPauseTrigType(task,DAQmx_Val_DigLvl ));

DAQmxErrChk(DAQmxSetDigLvlPauseTrigWhen(task, DAQmx_Val_High ));

DAQmxErrChk(DAQmxRegisterEveryNSamplesEvent(task,DAQmx_Val_Acquired_Into_Buffer,SIZE_OF_MAIN_READ,0,EveryNCallback,NULL));

DAQmxErrChk(DAQmxRegisterDoneEvent(task,0,DoneCallback,NULL));

DAQmxErrChk(DAQmxStartTask(task));

/********************** END continuously code ***************/

 

Moreover, I tried to synchronize using internal clocking, but it didn't work correctly too:

 

/********************** clocking code ***************/

DAQmxErrChk(DAQmxCreateTask("",&task));

DAQmxErrChk(DAQmxCreateAIVoltageChan(task,"Dev1/ai1","",DAQmx_Val_Diff,-6.0,6.0,DAQmx_Val_Volts,NULL));

DAQmxErrChk(DAQmxSetDelayFromSampClkDelayUnits(task,DAQmx_Val_Seconds ));

DAQmxErrChk(DAQmxSetDelayFromSampClkDelay(task, 0.000125));

DAQmxErrChk(DAQmxCfgSampClkTiming(task,"/Dev1/PFI0",1,DAQmx_Val_Rising,DAQmx_Val_ContSamps,1));

DAQmxErrChk(DAQmxSetAIConvRate(task,1000000));

DAQmxErrChk(DAQmxCfgInputBuffer(task,10000));

DAQmxErrChk(DAQmxRegisterEveryNSamplesEvent(task,DAQmx_Val_Acquired_Into_Buffer,1000,0,EveryNCallback,NULL));

DAQmxErrChk(DAQmxRegisterDoneEvent(task,0,DoneCallback,NULL));

DAQmxErrChk(DAQmxStartTask(task));

 

/********************** END clocking code ***************/


Viewing all articles
Browse latest Browse all 1271

Trending Articles