hello
next line in document give some lines of my code (I've got some pb to send it attached).
it is very simple.
when I declare the Pretrigger_Scans parameters greater than 1 no signal is acquired.
I try obviously with a waveform generation (sending trigger on RTSI0) to begin an acquisition with pretrig scan and it works very well.
may, I just think, it is the RTSI1 line for triggering with CAN which is not appropriate?
thanks for every things
Pascal
// CAN0 Configuration
AttrIdList[0] = NC_ATTR_BAUD_RATE;
AttrValueList[0] = NC_BAUD_125K;
AttrIdList[1] = NC_ATTR_START_ON_OPEN;
AttrValueList[1] = NC_TRUE;
AttrIdList[2] = NC_ATTR_READ_Q_LEN;
AttrValueList[2] = 10;
AttrIdList[3] = NC_ATTR_WRITE_Q_LEN;
AttrValueList[3] = 10;
AttrIdList[4] = NC_ATTR_CAN_COMP_STD;
AttrValueList[4] = 0;
AttrIdList[5] = NC_ATTR_CAN_MASK_STD;
AttrValueList[5] = NC_CAN_MASK_STD_DONTCARE;
AttrIdList[6] = NC_ATTR_CAN_COMP_XTD;
AttrValueList[6] = 0;
AttrIdList[7] = NC_ATTR_CAN_MASK_XTD;
AttrValueList[7] = NC_CAN_MASK_XTD_DONTCARE;
/* RTSI Config: RTSI output on line 1 upon transmitting frame */
AttrIdList[8] = NC_ATTR_RTSI_MODE;
AttrValueList[8] = NC_RTSI_OUT_ON_TX;
AttrIdList[9] = NC_ATTR_RTSI_SIGNAL;
AttrValueList[9] = 1;
AttrIdList[10] = NC_ATTR_RTSI_SIG_BEHAV;
AttrValueList[10] = NC_RTSISIG_PULSE;
// acquisition task configuration
if ((AIerror = nidaqAICreateTask (AIchannelString, kNidaqWaveformCapture,
&AInumChannels, &AItaskID)) >= noError)
{
AIerror = nidaqAIConfigScanClockRate (AItaskID, AIscanRate, &actualScanRate);
AIerror = nidaqAIConfigDigitalTrigger (AItaskID, "daq::3!(RTSI1)",
kNidaqTriggerOnRisingEdge,
Pretrigger_Scans);
}
...
AIerror = nidaqAIStart (AItaskID);
// Emission d'une trame CAN comme trigger d'acquisition
Transmit.ArbitrationId = 0x05;
Transmit.IsRemote=NC_FALSE;
Transmit.DataLength=8;
Transmit.Data[0] = 0x00;
Transmit.Data[1] = 0x01;
Transmit.Data[2] = 0x02;
Transmit.Data[3] = 0x03;
Transmit.Data[4] = 0x04;
Transmit.Data[5] = 0x05;
Transmit.Data[6] = 0x06;
Transmit.Data[7] = 0x07;
Status= ncWrite(TxHandle, sizeof(Transmit), &Transmit);
AIbacklog = 0;
dTime = Timer();
do
{
AIerror = nidaqAICheck (AItaskID, &AIacqstate, &AIbacklog);
SetCtrlVal(panelHandle,PANEL_BACKLOG, AIbacklog);
}
while ((AIbacklog < AInumScans) && (Timer() - dTime < 3.0));
if(Timer() - dTime < 3.0)
AIerror = nidaqAIRead (AItaskID, AIchannelString, AInumScans, 3.0, AIwaveforms);
nidaqAIStop(AItaskID);