SCANIF的SIFDACRx校不准,代码如下,请指教
取值代码:
m=10;
SIFCTL1 = 0;
SIFCTL3 &= ~(SIFIFGSET0 | SIFIFGSET1 |SIFIFGSET2);
SIFCTL3 |= 0;
j=0;
while (j<m) //取十次值
{ SIFCTL1 = 0;
SIFDACR0 = 0x02FF; // SIFCH.0 – set to maximum value
SIFDACR1 = 0x02FF;
SIFCTL1 = 0x0201;
SIFOUT_Sta =FALSE;
for(k=0;(k<1000) && (SIFOUT_Sta==FALSE);k++)
{
for(i=0;i<=2000;i++)Feed_Dog();
SIFDACR0=SIFDACR0-1; SIFDACR1=SIFDACR1-1;
}
if(SIFOUT_Sta==TRUE)
{
SIFOUT_Sta =FALSE;
V0[j++] = SIFDACR1+1;
}
}
SIFCTL1 = 0;
SIFCTL3 &= ~(SIFIFGSET0 | SIFIFGSET1 |SIFIFGSET2);
SIFCTL3 |= SIFIFGSET0;
j=0;
while (j<m)
{
SIFCTL1 = 0;
SIFDACR0 = 0x200;
SIFDACR1 = 0x200;
SIFCTL1 = 0x0201;
SIFOUT_Sta =FALSE;
for(k=0;(k<1000) && (SIFOUT_Sta==FALSE);k++)
{
for(i=0;i<=2000;i++)Feed_Dog();
SIFDACR0=SIFDACR0+1;
SIFDACR1=SIFDACR1+1;
}
if(SIFOUT_Sta==TRUE)
{
SIFOUT_Sta =FALSE;
V1[j++] = SIFDACR1-1;
}
}
SIFCTL1 = 0;
V2=0;
Rank_Data(V0,m); //从大到小排序
Rank_Data(V1,m);
for(j=2;j<8;j++) //去除最大的两个和最小的两个取平均值
V2 += (V1[j] + V0[j]);
V2 /=12;
Calibration.SIFDACR_0 = V2 + 10;
Calibration.SIFDACR_1 = V2 – 5;
其中SIFOUT_Sta 由SCANIF的SIFIFG0中断来置为TRUE
HG:
你用的哪款芯片?
Jacky Xu:
SIF应该是FW427上的外设。
你可以先参考我们例程啊,flowmeter的源代码都是公开的。
zhi li10:
回复 Jacky Xu:
您好,例程的链接发我一下,我没找到,谢谢
zhi li10:
回复 HG:
FW428
Susan Yang:
回复 zhi li10:
可以在 http://www.ti.com/product/MSP430FW427/toolssoftware 下载例程
zhi li10:
回复 Susan Yang:
还是没有找到哦
灰小子:
回复 zhi li10:
http://www.ti.com/lit/zip/sprc154