- UID
- 794675
- 性别
- 男
|
关于转速测量的,我测量的结果波动较大,我做了Buffer【8】去除最大最小值后做个除以6平均,还是不稳定有时候会突然蹦下 。S12xdp512的mcu在xgate处理ECT中断,共有三路转速信号的测量。代码如下;
//read RISING sec rpm @ic3
interrupt void ic3(void)
{
TFLG1_C3F=1;
T_3_over=overtime;
T3over=T_3_over-T_3_over_last;
if(T3over<0)
T3over+=300;
period3=((long)T3over*65535+ TC3-TC3_last) ; //ms
sec_rpm[i_secrpm%8]= (120000000/period3);
T_3_over_last=T_3_over;
TC3_last=TC3;
i_secrpm++;
//asm SIF;
}
这个是xgate里头的处理的,ECT的输入捕捉。
接下来在 mcu的每20ms中断里头处理计算转速
interrupt void clutch0 (void)
{
XGIF1_XGIF_65=1;
do{SET_SEM(0);}
while(!TST_SEM(0));
if(period3>12000000)sec_ave=0;
else {
max_sec=sec_rpm[0];
min_sec=sec_rpm[0];
for(i=1;i<8;i++)
{if(sec_rpm[i]>max_sec)
max_sec=sec_rpm[i];
if(sec_rpm[i]<min_sec)
min_sec=sec_rpm[i];
}
sec_ave=(sec_rpm[0]+sec_rpm[1]+sec_rpm[2]+sec_rpm[3]+sec_rpm[4]+sec_rpm[5]+sec_rpm[6]+sec_rpm[7]-min_sec-max_sec)/6;
}
REL_SEM(0);
} |
|