⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 manipulate7758.c

📁 ADE7758三相电能芯片读写源程序
💻 C
📖 第 1 页 / 共 2 页
字号:
	 	GST_58para.U_cvarg.CVARG=0x0f35;
		}
	Data_wr7758(Addr_CVARG, GST_58para.U_cvarg.ACH_cvarg);
	
	GST_58para.U_opm.OPMODE=0;
	Data_wr7758(Addr_OPMODE, GST_58para.U_opm.ACH_opm);

	Read_EeprData(GST_58para.U_wdiv.ACH_wdiv,1,WDIV_EeAddr);	
		//GST_58para.U_wdiv.WDIV=10;	
	Data_wr7758(Addr_WDIV, GST_58para.U_wdiv.ACH_wdiv);

	Read_EeprData(GST_58para.U_vardiv.ACH_vardiv,1,VARDIV_EeAddr);
	//GST_58para.U_vardiv.VARDIV=10;
	Data_wr7758(Addr_VARDIV, GST_58para.U_vardiv.ACH_vardiv);



	Read_EeprData( GST_58para.U_aphcal.ACH_aphcal, 1, APHCAL_EeAddr);
	if(GST_58para.U_aphcal.APHCAL>0x3f)
		{
		GST_58para.U_aphcal.APHCAL=0;
		}
	Data_wr7758(Addr_APHCAL, GST_58para.U_aphcal.ACH_aphcal);

       
	Read_EeprData(  GST_58para.U_bphcal.ACH_bphcal, 1, BPHCAL_EeAddr);
	if(GST_58para.U_bphcal.BPHCAL>0x3f)
		{
		GST_58para.U_bphcal.BPHCAL=0;
		}
	Data_wr7758(Addr_BPHCAL, GST_58para.U_bphcal.ACH_bphcal);

	Read_EeprData(  GST_58para.U_cphcal.ACH_cphcal, 1, CPHCAL_EeAddr);
	if(GST_58para.U_cphcal.CPHCAL>0x3f)
              {
		GST_58para.U_cphcal.CPHCAL=0;
		}
	Data_wr7758(Addr_CPHCAL, GST_58para.U_cphcal.ACH_cphcal);

	Read_EeprData( GST_58para.U_awattos.ACH_awattos, 2,AWATTOS_EeAddr);
	if(GST_58para.U_awattos.AWATTOS>0x0fff)
              {
		GST_58para.U_awattos.AWATTOS=0;
		}
	Data_wr7758(Addr_AWATTOS,GST_58para.U_awattos.ACH_awattos);
	
	Read_EeprData(GST_58para.U_bwattos.ACH_bwattos, 2,BWATTOS_EeAddr);
	if(GST_58para.U_bwattos.BWATTOS>0x0fff)
		 {
		GST_58para.U_bwattos.BWATTOS=0;
		}
	Data_wr7758(Addr_BWATTOS,GST_58para.U_bwattos.ACH_bwattos);	
	
	Read_EeprData( GST_58para.U_cwattos.ACH_cwattos, 2,CWATTOS_EeAddr);
	if(GST_58para.U_cwattos.CWATTOS>0x0fff)
		{
		GST_58para.U_cwattos.CWATTOS=0;
		}
	Data_wr7758(Addr_CWATTOS,GST_58para.U_cwattos.ACH_cwattos);

	Read_EeprData( GST_58para.U_avaros.ACH_avaros, 2,AVAROS_EeAddr);
	if(GST_58para.U_avaros.AVAROS>0x0fff)
              {
		GST_58para.U_avaros.AVAROS=0;
		}
	Data_wr7758(Addr_AVAROS,GST_58para.U_avaros.ACH_avaros);

	Read_EeprData( GST_58para.U_bvaros.ACH_bvaros, 2,BVAROS_EeAddr);
	if(GST_58para.U_bvaros.BVAROS>0x0fff)
		{
		GST_58para.U_bvaros.BVAROS=0;
		}
	Data_wr7758(Addr_BVAROS,GST_58para.U_bvaros.ACH_bvaros);

	Read_EeprData( GST_58para.U_cvaros.ACH_cvaros, 2,CVAROS_EeAddr);
	if(GST_58para.U_cvaros.CVAROS>0x0fff)
		{
		GST_58para.U_cvaros.CVAROS=0;
		}
	Data_wr7758(Addr_CVAROS,GST_58para.U_cvaros.ACH_cvaros);
	
	GU_7758scl.Str_58scl.avscale=13;
	GU_7758scl.Str_58scl.bvscale=13;
	GU_7758scl.Str_58scl.cvscale=13;
	GU_7758scl.Str_58scl.aiscale=58;
	GU_7758scl.Str_58scl.biscale=58;
	GU_7758scl.Str_58scl.ciscale=58;
	LW_data=GST_58para.U_apcf.APCFDEN*16;
	LW_data/=10;
	LW_data*=8;
	GU_7758scl.Str_58scl.awscale=LW_data;//0.01 kwr;
	GU_7758scl.Str_58scl.bwscale=LW_data;//0.01 kwr;
	GU_7758scl.Str_58scl.cwscale=LW_data;//0.01 kwr;
	LW_data=GST_58para.U_varcp.VARCFDEN*16;
	LW_data/=10;
	LW_data*=8;
	GU_7758scl.Str_58scl.avarscale=LW_data;
	GU_7758scl.Str_58scl.bvarscale=LW_data;
	GU_7758scl.Str_58scl.cvarscale=LW_data;
	
}
/****************************************************************/
/*                              turn down the opt                     */
/*description: this fonction is to cut off  curren on diode in opt             */
/*                                                                                       */
/*                                                                                                            */
/*input parameters: none                        */
/*                                                                              */
/*				                                                     */
/*output argument: none                    */
/*relative globe variables or functions :none                                               */
/***************************************************************/
void sleep_7758com(void)
{
	P_7758NCS_inactive;P_7758CLK_HIGH;P_7758DIN_HIGH;
}
/****************************************************************/
/*                              call the 7758com ready                    */
/*description: this fonction is to set the port to 7758 ready             */
/*                                                                                       */
/*                                                                                                            */
/*input parameters: none                        */
/*                                                                              */
/*				                                                     */
/*output argument: none                    */
/*relative globe variables or functions :none                                               */
/***************************************************************/
void ready_7758com(void)
{
P_7758NCS_inactive;P_7758CLK_LOW;
}

void Read_58data_batch(void)
{
	
	Energy_process(Addr_AWATTHR,&(GST_MeterData.A_WattHr),
		&(GST_58data.U_aw.AWATTHR), GU_7758scl.Str_58scl.awscale);
	
	Energy_process(Addr_BWATTHR,&(GST_MeterData.B_WattHr),
		&(GST_58data.U_bw.BWATTHR), GU_7758scl.Str_58scl.bwscale);
	
	Energy_process(Addr_CWATTHR,&(GST_MeterData.C_WattHr),
		&(GST_58data.U_cw.CWATTHR), GU_7758scl.Str_58scl.cwscale);

       Energy_process(Addr_AVARHR,&(GST_MeterData.A_VarHr),
		&(GST_58data.U_avar.AVARHR), GU_7758scl.Str_58scl.avarscale);

       Energy_process(Addr_BVARHR,&(GST_MeterData.B_VarHr),
		&(GST_58data.U_bvar.BVARHR), GU_7758scl.Str_58scl.bvarscale);

	Energy_process(Addr_CVARHR,&(GST_MeterData.C_VarHr),
		&(GST_58data.U_cvar.CVARHR), GU_7758scl.Str_58scl.cvarscale);
	
	Process_store_v_cr(Addr_AIRMS,GST_58data.U_ai.ACH_ai);
	Process_store_v_cr(Addr_BIRMS,GST_58data.U_bi.ACH_bi);
	Process_store_v_cr(Addr_CIRMS,GST_58data.U_ci.ACH_ci);
	
	Process_store_v_cr(Addr_AVRMS,GST_58data.U_av.ACH_av);
	Process_store_v_cr(Addr_BVRMS,GST_58data.U_bv.ACH_bv);
	Process_store_v_cr(Addr_CVRMS,GST_58data.U_cv.ACH_cv);
	
	nop();
}

void  Energy_process(uchar PB_Addr,long *PPDW_Energy,
	long *PPDW_EnergBuf,uint PW_scal)
{
      union 
      	{
      		int     LW_data;
      		uchar  LACH_data[2];
      	} LU_data;

	Data_rd7758(PB_Addr);
	
	LU_data.LACH_data[0] = GA_buf_rdwr7758[0];
	LU_data.LACH_data[1] = GA_buf_rdwr7758[1];
	(*PPDW_EnergBuf)+=LU_data.LW_data;
	if((*PPDW_EnergBuf)>=0)
		{
		while(*PPDW_EnergBuf>PW_scal)
			{
			(*PPDW_EnergBuf)-=PW_scal;		
			(*PPDW_Energy)++;
			}
		}
	else
		{
		while(*PPDW_EnergBuf<(-PW_scal))
			{
			(*PPDW_EnergBuf)+=PW_scal;		
			(*PPDW_Energy)--;
			}
		}
}


void Process_store_v_cr(uchar PB_addr, uchar *PP_data)
{
	uchar 	LB_data0,LB_data1;
	Data_rd7758(PB_addr);
	LB_data0=GA_buf_rdwr7758[0];
	if(LB_data0<0)
		{
		*PP_data=0;
		*(PP_data+1)=0;
		}
	else
		{
		LB_data0=LB_data0<<3;
		LB_data1=GA_buf_rdwr7758[1]>>5;
		LB_data0|=LB_data1;
		*PP_data=LB_data0;
		LB_data0=GA_buf_rdwr7758[1]<<3;
		LB_data1=GA_buf_rdwr7758[2]>>5;
		LB_data0|=LB_data1;
		*(PP_data+1)=LB_data0;
		}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -