#include "1powermanage.h"
|
#include "devicegpioinit.h"
|
#include "para.h"
|
#include "1ValveControl.h"
|
#include "1gprs.h"
|
#include "systaskinit.h"
|
|
void Power_Detection(u8 flag)//µçÔ´¼ì²â flag=1±íÃ÷ÊÇÔÚÑ»·¼ì²âµç³ØµÄʱºò£¬Õâʱºò²»Óÿ¼Âǹط§£¬ÒòΪ֮ǰ¿Ï¶¨Ö´Ðйý¹Ø·§¡£
|
{
|
float ADC_Battery_V=0;
|
|
|
Alka_Falling_Disconfig();
|
delay_ms(20);
|
BAT_ADC_IO_init();
|
delay_ms(1);
|
|
ALKA_TEST_ON;
|
LITH_TEST_ON;//¿ªÆôµç³Ø¼ì²âÒý½Å
|
|
delay_ms(10);
|
ADC_Battery_V = get_lith_bat_voltage();
|
|
if(ADC_Battery_V>4)
|
{
|
LLJ_data_g.Lith_Battery_V = ADC_Battery_V;
|
}else
|
{
|
ADC_Battery_V = get_lith_bat_voltage();
|
if(ADC_Battery_V>3)
|
{
|
LLJ_data_g.Lith_Battery_V = ADC_Battery_V;
|
}else
|
{
|
|
}
|
}
|
delay_ms(1);
|
|
ALKA_TEST_OFF;
|
LITH_TEST_OFF;
|
|
|
IWDT_Clr();
|
if(LLJ_data_g.Lith_Battery_V<LITH_V_LOW_ALARM) //﮵çµÍµç
|
{
|
if(system_alarm.alarm_LithPowerLow_LCDFLAG ==0) //﮵çÊ״γöÏֵ͵磬±¨¾¯
|
{
|
system_alarm.alarm_LithPowerLOW = 1;
|
}
|
system_alarm.alarm_LithPowerLow_LCDFLAG =1;
|
}
|
else if(LLJ_data_g.Lith_Battery_V > LITH_V_LOW_ALARM +0.5) //﮵çµçÁ¿»Ø¸´
|
{
|
system_alarm.alarm_LithPowerLow_LCDFLAG =0;
|
}
|
|
if(LLJ_data_g.Lith_Battery_V<LITH_V_DOWN_VALVE_CLOSE-0.1) //﮵çÑÏÖØÇ·Ñ¹£¬½øÈëÐÝÃßÑ»·¼ì²â£¬¹Ø·§
|
{
|
Bat_Lith_status = 1;
|
|
if(gprs_protocol_header.Valve_Status != 2) //·§ÃÅ״̬²»ÊÇΪ¹Ø
|
{
|
if(flag==0) //²»ÔÚÑ»·¼ì²âµÄʱºò
|
{
|
if(HWID0_READ==1) //ûÓÐÍ⹩µç
|
{
|
Valve_close();
|
}
|
}
|
}
|
}
|
else if(LLJ_data_g.Lith_Battery_V<LITH_V_DOWN_VALVE_CLOSE) //﮵çǷѹ£¬¹Ø·§
|
{
|
if(system_alarm.alarm_LithPowerDOWN_LCDFLAG==0) //﮵çÊ×´ÎǷѹ£¬±¨¾¯
|
{
|
system_alarm.alarm_LithPowerDOWN = 1;
|
}
|
system_alarm.alarm_LithPowerDOWN_LCDFLAG =1;
|
if(gprs_protocol_header.Valve_Status != 2)
|
{
|
if(flag==0)
|
{
|
if(HWID0_READ==1)
|
{
|
Valve_close();
|
}
|
}
|
}
|
}
|
else if(LLJ_data_g.Lith_Battery_V>LITH_V_DOWN_VALVE_CLOSE+0.5) //ï®µç»Ø¸´
|
{
|
system_alarm.alarm_LithPowerDOWN_LCDFLAG =0;
|
Bat_Lith_status = 0;
|
}
|
|
delay_ms(10);
|
LLJ_data_g.Alka_Battery_V = get_alka_bat_voltage();
|
|
|
if(LLJ_data_g.Alka_Battery_V < ALKA_V_LOW_ALARM) //¼îµçµÍµç
|
{
|
if(system_alarm.alarm_AlkaPowerLow_LCDFLAG==0) //¼îµçÊ״ε͵磬±¨¾¯
|
{
|
system_alarm.alarm_AlkaPowerLOW = 1;
|
}
|
system_alarm.alarm_AlkaPowerLow_LCDFLAG = 1;
|
}
|
else if(LLJ_data_g.Alka_Battery_V > ALKA_V_LOW_ALARM+0.5)//¼îµç»Ø¸´
|
{
|
system_alarm.alarm_AlkaPowerLow_LCDFLAG = 0;
|
}
|
|
if(LLJ_data_g.Alka_Battery_V < ALKA_V_DOWN_VALVE_CLOSE -0.1) //¼îµçÑÏÖØÇ·Ñ¹£¬£¬½øÈëÐÝÃßÑ»·¼ì²â£¬¹Ø·§
|
{
|
Bat_Alka_status = 1;
|
if(gprs_protocol_header.Valve_Status != 2)
|
{
|
if(flag==0)
|
{
|
if(HWID0_READ==1)
|
{
|
//Valve_close();
|
}
|
}
|
}
|
}
|
else if(LLJ_data_g.Alka_Battery_V < ALKA_V_DOWN_VALVE_CLOSE ) //¼îµçǷѹ£¬¹Ø·§
|
{
|
if(system_alarm.alarm_AlkaPowerDOWN_LCDFLAG==0) //¼îµçÊ×´ÎǷѹ£¬±¨¾¯
|
{
|
system_alarm.alarm_AlkaPowerDOWN = 1;
|
}
|
system_alarm.alarm_AlkaPowerDOWN_LCDFLAG =1;
|
if(gprs_protocol_header.Valve_Status != 2)
|
{
|
if(flag==0)
|
{
|
if(HWID0_READ==1)
|
{
|
//Valve_close();
|
}
|
}
|
}
|
}
|
else if(LLJ_data_g.Alka_Battery_V > ALKA_V_DOWN_VALVE_CLOSE+0.3) //¼îµç»Ø¸´
|
{
|
system_alarm.alarm_AlkaPowerDOWN_LCDFLAG =0;
|
Bat_Alka_status = 0;
|
}
|
|
Alka_INT_init();
|
Alka_Falling_config();
|
|
if(HWID0_READ==0) //ÓÐÍâµç
|
{
|
gprs_protocol_header.Power_type = 2;
|
}
|
else
|
{
|
gprs_protocol_header.Power_type = 1;
|
}
|
}
|
|
|
|
void EXPower_Control(u8 CtrCode)
|
{
|
CtrCode = CtrCode & 0x0f;
|
if((Bat_Alka_status==0)||(HWID0_READ==0)) //¼îµçÓеã»òÕßÓÐÍ⹩µçµÄʱºò¿ªÆô¶ÔÍâÒÇ±í¹©µç
|
{
|
if(CtrCode==0)
|
{
|
}
|
else if(CtrCode==1)
|
{
|
power9V_ON;
|
}
|
else if(CtrCode==2)
|
{
|
power12V_ON;
|
}
|
else
|
{
|
}
|
}
|
}
|
|
|
void Deep_sleep_mode(void)
|
{
|
PMU_SleepCfg_InitTypeDef SleepCfg_InitStruct;
|
CMU_IER_HFDET_IE_Setable(DISABLE);//¹Ø±ÕÍⲿ¸ßËÙʱÖÓ
|
CMU_XTHFCR_XTHFEN_Setable(DISABLE);
|
|
CDIF_CR_INTF_EN_Setable(ENABLE);
|
/*ϵ縴λÅäÖÃ*/
|
//pdrºÍborÁ½¸öϵ縴λÖÁÉÙÒª´ò¿ªÒ»¸ö
|
//µ±µçÔ´µçѹµÍÓÚϵ縴λʱ£¬Ð¾Æ¬»á±»¸´Î»×¡
|
//pdrµçѹµµÎ»²»×¼µ«Êǹ¦ºÄ¼«µÍ(¼¸ºõÎÞ²âÁ¿£©
|
//borµçѹµµÎ»×¼È·µ«ÊÇÐèÒªÔö¼Ó2uA¹¦ºÄ
|
RMU_PDRCR_PDREN_Setable(ENABLE); //´ò¿ªPDR
|
RMU_PDRCR_PDRCFG_Set(RMU_PDRCR_PDRCFG_1P5V);//pdrµçѹµ÷Õûµ½1.4V
|
RMU_BORCR_OFF_BOR_Setable(ENABLE); //¹Ø±ÕBOR
|
VRTC_RCMFCR_EN_Setable(DISABLE);//RCMF¹Ø±Õ
|
//VRTC_RCLPCR_RCLP_OFF_Setable(ENABLE);//RCLP¹Ø±Õ
|
|
CDIF_CR_INTF_EN_Setable(DISABLE);
|
SleepCfg_InitStruct.PMOD = PMU_CR_PMOD_SLEEP; //¹¦ºÄģʽÅäÖÃ
|
SleepCfg_InitStruct.SLPDP = PMU_CR_SLPDP_DEEPSLEEP; // sleep
|
SleepCfg_InitStruct.CVS = DISABLE; //Äں˵çѹ½µµÍ¿ØÖÆ
|
SleepCfg_InitStruct.SCR = 0; //M0ϵͳ¿ØÖƼĴæÆ÷£¬Ò»°ãÅäÖÃΪ0¼´¿É
|
SleepCfg_InitStruct.TIA = PMU_WKTR_T1A_8US;//¿É±à³Ì¶îÍ⻽ÐÑÑÓ³Ù8us
|
|
PMU_SleepCfg_Init(&SleepCfg_InitStruct);//ÐÝÃßÅäÖÃ
|
|
|
IWDT_Clr();
|
IWDT_Init();
|
__WFI();//½øÈëÐÝÃß
|
IWDT_Clr();
|
RMU_BORCR_OFF_BOR_Setable(DISABLE); //¹Ø±ÕBOR
|
}
|