?? intmapping.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 + -