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

📄 intmapping.c

📁 FE42X单相防窃电电表DEMO(编译器 AQ430 AQ430 V2.0.6.5)
💻 C
字号:
/********************************************************************************
*					           杭州利尔达                                       *
*                 MSP430FE42X单相防窃电多功能电表平台                           *
*                          -----  ESP SD16实现                                  *
*                                                                               *
*                                                                               *
* 说明:本软件为杭州利尔达单相防窃电多功能电表DEMO软件                          *
*                                                                               *
*********************************************************************************/

#include "msp430xe42x.h"
#include "globe.h"
#include "extern_function.h"
#include "emeter_cfg.h"

void EnergyReadyIntMapping(void)
{
	/* 读两电流通道上次测量的有功电能 */
    emeter.ul_act_power1 = (((uint32)ACTENERGY1_HI)<<16)+ACTENERGY1_LO;
    emeter.ul_act_power2 = (((uint32)ACTENERGY2_HI)<<16)+ACTENERGY2_LO;
    #ifdef    ENERGY_1SEC
    ul_total_power_infact = (float)emeter.ul_act_power1 * emeter.f_Cz1;
    #endif   
    /* 读两电流通道上次测量的无功电能 */
    emeter.ul_react_power = (((uint32)REACTENERGY_HI)<<16)+REACTENERGY_LO;
    /* 读两电流通道上次测量的视在功率 */
    emeter.ul_app_power = (((uint32)APPENERGY_HI)<<16)+APPENERGY_LO;
    /* 读电流有效值 */
    emeter.ui_current_IRMS = IRMS_HI*0.2342;
    /* 读电压有效值 */
    emeter.ui_voltage_V1RMS = V1RMS*1.23867;
    /* 读电网频率 */
    emeter.ui_main_frequency = 104857600/MAINSPERIOD;
    /* 读功率因子 */
    emeter.ui_power_factor = (uint16)(POWERFCT*0.0061035);
    #ifdef    ENERGY_1SEC
    emeter.ui_meter_status |= NEW_ENERGY_READY;  
    #endif
}
#ifndef    ENERGY_1SEC
void ActensperReadyIntMapping(void)
{
    uint32 tmp;
    uint8 ucmainfeq;
    ucmainfeq = (10485760L/MAINSPERIOD + 5)/10;
    if ((ESP430_STAT0 & I2GTI1FG) != 0)
    {
    	tmp = ul_actensper2 * ucmainfeq * CURRENT_CH2_100_Cz;   //I2 > I1
    	_DINT();
    	ul_total_power_infact = tmp;
    	_EINT();
    }
    
    else
    {
    	tmp = ul_actensper1 * ucmainfeq * CURRENT_CH1_100_Cz;	//I1 > I2
    	_DINT();
    	ul_total_power_infact = tmp;
    	_EINT();
    }
    //ul_total_power_infact = ul_total_power_infact + ul_total_power_infact*0.00015*(emeter.i_last_temperature-20);
}
#endif

void BasicTimerIntMapping(void)
{	
	/* 判断是否需要忽略这一秒 */
	if(!(emeter.ui_meter_status & SKIP_A_SECOND == SKIP_A_SECOND))
		rtc_bumper();
	else
		emeter.ui_meter_status &= ~SKIP_A_SECOND;
	/* 若温度测量,内部实时时钟补偿周期到,则进行一次温度测量 */
	if((emeter.ui_sec_count++) >=(CORRECT_TIME-1))
	{
		/* 若ESP在工作状态,则用ESP进行温度测量,否则用SD16 */
		if((ESPCTL & ESPEN) == ESPEN)
		{
			MBOUT0= mTEMP;
		}
		else
		{
			/* 初始化模拟前端 */
			//emeter.ui_meter_status |= IN_TEMPERATURE_MEASURE;
  		    //init_analog_front_end();
        	//SD16CCTL2 |= SD16SC;  
		}
		emeter.ui_sec_count = 0;
	}
	if(++emeter.uc_lcd_remaining_times >= 3)
  	{
		emeter.ui_meter_status |= REQUIRE_LCD_UPDATE;
		emeter.uc_lcd_remaining_times = 0;
    }		
}

⌨️ 快捷键说明

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