|
使用S12做的一个数据采集程序,采用PT3捕捉到输入信号以后,打开PT4在外界同步信号的触发下分别采集若干数据。将采集的数据通过串口发回PC机。由于数据量较大,串口的发送时间会超过PT3触发源的信号周期。为了保证每次都是传送一整组数据,所以需要在下一次进入PT3中断的时候再开启PT4。
现在的问题是,如果在这一次采集完后再进入中断时就开启PT4,那么会丢失开始的一些数据;如果隔了一次中断,就可以采集到开始的一些数据,这是为什么?
谢谢!
PT3中断代码如下:
void _PT3 (void)
{
static int sReady = 0;
int i;
TFLG1_C3F = 1; //清除标志位
TIE_C3I = 0;
if (sReady == 2)
{
TIE_C4I = 1;
sReady = 0;
}
else if (sReady == 0)
{
TIE_C4I = 0;
sci_SendBuf();
sReady = 1; // =1 表示隔一次中断再开始采集,=2 表示下次中断就开始采集
}
else
{
sReady = 2;
}
TIE_C3I = 1;
}
|
|