计量芯片获取A,B,C三相的电能消耗,A和C相能读出电压,电流和电能消耗,但是 B相却读不出电能消耗。图中调试窗口中的EP和Eq代表电能消耗,为啥A,C相都有数,而B相为0啊,读B相寄存器的地址也是没有问题的啊。B相Ep为0x1F,Eq为0x23。求大神帮忙啊!!!!
[mw_shl_code=c,true]void Read_ATT_BData(void)
{
BDataTypeDef.P[10]=SPI_ATT_ReadByte(r_Pb);
BDataTypeDef.Q=SPI_ATT_ReadByte(r_Qb);
BDataTypeDef.S=SPI_ATT_ReadByte(r_Sb);
BDataTypeDef.URms[11]=SPI_ATT_ReadByte(r_URmsb);
BDataTypeDef.IRms[11]=SPI_ATT_ReadByte(r_IRmsb);
BDataTypeDef.Pf=SPI_ATT_ReadByte(r_Pfb);
BDataTypeDef.Ep=SPI_ATT_ReadByte(r_Epb);//0X1F
BDataTypeDef.Eq=SPI_ATT_ReadByte(r_Eqb);//0X23
if(BDataTypeDef.P[10]>0x800000)
{
BDataTypeDef.P[11]=0x1000000-BDataTypeDef.P[10];
BDataTypeDef.Rp[11]=(float)BDataTypeDef.P[11]/112;
}
else
BDataTypeDef.Rp[11]=(float)BDataTypeDef.P[10]/112; //?ó??????
if(BDataTypeDef.Q>0x800000)
{
BDataTypeDef.Q=0x1000000-BDataTypeDef.Q;
BDataTypeDef.Rq=(float)BDataTypeDef.Q/112;
}
else
BDataTypeDef.Rq=(float)BDataTypeDef.Q/112; //?ó????????
BDataTypeDef.Rs=(float)BDataTypeDef.S/112; //?ó????????
BDataTypeDef.Rurms[11]=(float)BDataTypeDef.URms[11]/8192; //?ó???????§??(8192=2^13)
BDataTypeDef.Rirms[11]=(float)BDataTypeDef.IRms[11]/8192/6; //?ó???÷???§??(????????????±???????N,N?ù???????é???ó??)
BDataTypeDef.Ep=BDataTypeDef.Ep/EC;
if(BDataTypeDef.Pf>0x800000)
{
BDataTypeDef.Pf=0x1000000-BDataTypeDef.Pf;
BDataTypeDef.Rpf=(float)BDataTypeDef.Pf/8388608;
}
else
BDataTypeDef.Rpf=(float)BDataTypeDef.Pf/8388608; //?ó?????ò??(8388608=2^23)
}[/mw_shl_code]
|