void ADE7753_Init(void)
{ uint8_t buf[2];
buf[0]=0x80;
buf[1]=0x00;
Write7753(MODE,buf,2);//软件复位芯片
_delay_us(20);
buf[0]=0x00;
buf[1]=0x18;
Write7753(IRQEN,buf,2);//软件复位芯片
buf[0]=0x64;
buf[1]=0x00;
Write7753(LINECYC,buf,2);//软件复位芯片
buf[0]=0x04;
//buf[1]=0x00;
Write7753(GAIN,buf,1);//软件复位芯片
buf[0]=0x0c;
buf[1]=0xb2;
Write7753(CFDEN,buf,2);//软件复位芯片
buf[0]=0x00;
buf[1]=0x00;
Write7753(0X13,buf,2);//软件复位芯片
buf[0]=0x00;
buf[1]=0x00;
Write7753(0X1B,buf,2);//软件复位芯片
buf[0]=0x00;
buf[1]=0x00;
Write7753(0X14,buf,2);//软件复位芯片
buf[0]=0x0f;
//buf[1]=0x00;
Write7753(0X0d,buf,1);//软件复位芯片
buf[0]=0x0f;
//buf[1]=0x00;
Write7753(0X0e,buf,1);//软件复位芯片
}
int main(void)
{
wdt_disable();
InitPort();
ADE7753_Init();
_delay_ms(200);
uint32_t test1;
uint32_t test2;
while(1)
{
test2=Read7753(VRMS,3); test1=Read7753(IRMS,3);
showVIHZ(1,test2);用于显示
_delay_ms(2000);
showVIHZ(2,test1);用于显示
_delay_ms(2000);
}
}
为什么我读到的irms的值很稳定,而且能随外部加的电流的大小变化而变化,没次读取出来的都是固定值,波动不会及其微小,而读vrms的时候,加220v的电压,读出来是64w到66W之间,还没换算,这个波动太大了,请问adi专家,我的问题出在哪里了?是不是读取的方式不对还是怎么了?求解答?
2018-12-13 11:41:13
您好。可以尝试在电压通道过零点读取有效值,或者任意时刻读取有效值,多次读取求均值。也需要确认电压通道输入信号的精度
您好。可以尝试在电压通道过零点读取有效值,或者任意时刻读取有效值,多次读取求均值。也需要确认电压通道输入信号的精度
举报