| | |
| | | #include "power_manage.h" |
| | | #include "adc.h" |
| | | #include "stdlib.h" |
| | | #include "low_pwr_test.h" |
| | | #include "uart.h" |
| | | #include "sundry.h" |
| | | #include "extern_rtc.h" |
| | | #include "lcd.h" |
| | | #include "system_parameter.h" |
| | | #include "low_pwr_test.h" |
| | | #include "gpio.h" |
| | | #include "gprs.h" |
| | | #include "master_slave_inter.h" |
| | | #include "lcd.h" |
| | | #include "working_time_calculate.h" |
| | | #include "tim.h" |
| | | #include "sizhu_ctrl_word.h" |
| | | #include "system_run_fun.h" |
| | | #include "system_mem_para.h" |
| | | #include "sizhu_ctrl_word.h" |
| | | #include "linked_list.h" |
| | | |
| | | PWR_VOL_T pwr_vol_g = {.lith_flag = LMS_PERIOD, .alka_flag = AMS_PERIOD, .mcu_temp_flag = SET,.lith_vcc_per = 100}; // ĬÈÏÉϵç²É¼¯Ò»´ÎµçÁ¿ºÍMCUÎÂ¶È |
| | | |
| | | #include "devicegpioinit.h" |
| | | PWR_VOL_T pwr_vol_g = {LMS_PERIOD, AMS_PERIOD, SET, .lith_vcc_per = 100}; // ĬÈÏÉϵç²É¼¯Ò»´ÎµçÁ¿ºÍMCUÎÂ¶È |
| | | |
| | | uint8_t first_power_get_cnt_g = 0; |
| | | |
| | | |
| | | void Power_IO_Init(void) |
| | | { |
| | | CMU_PERCLK_SetableEx(PADCLK, ENABLE); //PADʱÖÓ£¨GPIO£©Ê¹Äܺ¯Êý |
| | | OutputIO(LITH_DETECTION_PORT,LITH_DETECTION_PIN,OUT_PUSHPULL); |
| | | InputtIO( LITH_PWR_LOSE_PORT, LITH_PWR_LOSE_PIN, IN_NORMAL); |
| | | CMU_PERCLK_SetableEx(PADCLK, ENABLE); // PADʱÖÓ£¨GPIO£©Ê¹Äܺ¯Êý |
| | | OutputIO(LITHIUM_DETECTION_PORT, LITHIUM_DETECTION_PIN, OUT_PUSHPULL); |
| | | InputtIO(LITHIUM_PWR_DOWN_PORT, LITHIUM_PWR_DOWN_PIN, IN_NORMAL); |
| | | // InputtIO( LIT_PWR_UNDER_PORT, LIT_PWR_UNDER_PIN, IN_NORMAL); |
| | | |
| | | |
| | | OutputIO(ALKA_DETECTION_PORT,ALKA_DETECTION_PIN,OUT_PUSHPULL); |
| | | InputtIO_H( ALKA_PWR_LOSE_PIN, IN_NORMAL); |
| | | |
| | | ALK_DEC_OFF; |
| | | LIT_DEC_OFF; |
| | | |
| | | OutputIO(BORROW_PWR_PORT,BORROW_PWR_PIN,OUT_PUSHPULL); |
| | | OutputIO(EX_PWR_EN_PORT,EX_PWR_EN_PIN,OUT_PUSHPULL); |
| | | BORROW_PWR_OFF; |
| | | EX_PWR_OFF; |
| | | } |
| | | // OutputIO(ALKALI_DETECTION_PORT, ALKALI_DETECTION_PIN, OUT_PUSHPULL); |
| | | InputtIO(ALKALI_PWR_DOWN_PORT, ALKALI_PWR_DOWN_PIN, IN_NORMAL); |
| | | |
| | | void Lith_Battery_GPIO_Clk_Init(void) |
| | | { |
| | | CMU_PERCLK_SetableEx(PADCLK, ENABLE); //PADʱÖÓ£¨GPIO£©Ê¹Äܺ¯Êý |
| | | AnalogIO(LIT_ADC_PORT,LIT_ADC_PIN);//ADC_IN4 |
| | | OutputIO(LITH_DETECTION_PORT,LITH_DETECTION_PIN,OUT_PUSHPULL); |
| | | // AnalogIO(LIT_PWR_UNDER_PORT,LIT_PWR_UNDER_PIN);//ADC_5 |
| | | |
| | | } |
| | | |
| | | void Alka_Battery_GPIO_Clk_Init(void) |
| | | { |
| | | CMU_PERCLK_SetableEx(PADCLK, ENABLE); //PADʱÖÓ£¨GPIO£©Ê¹Äܺ¯Êý |
| | | AnalogIO_H(ALK_ADC_PIN); |
| | | OutputIO(ALKA_DETECTION_PORT,ALKA_DETECTION_PIN,OUT_PUSHPULL); |
| | | } |
| | | |
| | | void EX_Pwr_GPIO_Clk_Init(void) |
| | | { |
| | | CMU_PERCLK_SetableEx(PADCLK, ENABLE); //PADʱÖÓ£¨GPIO£©Ê¹Äܺ¯Êý |
| | | InputtIO( HWIDO_EX_PWR_PORT, HWIDO_EX_PWR_PIN, IN_NORMAL); |
| | | // ALK_DEC_OFF; |
| | | LIT_DEC_OFF; |
| | | } |
| | | |
| | | /****************************************** |
| | |
| | | * output: none |
| | | * return: calculation sample mean of 64 middle data,multiply by 1000. eg:1.0v -> 1000 |
| | | *****************************************/ |
| | | uint32_t Get_vol_Average(ad_data_s *data_p) |
| | | uint32_t Get_vol_average(ad_data_s *data_p) |
| | | { |
| | | u32 i, j, t; |
| | | uint32_t temp; |
| | |
| | | float sample_vol; |
| | | float battery_vol = 0; |
| | | ad_data_s *data_ins; |
| | | Alka_Battery_GPIO_Clk_Init(); |
| | | ADC_IN8_Init(); |
| | | ALK_DEC_ON; |
| | | delay_ms(5); |
| | | // ÉêÇëÈáÐÔÊý×éÄÚ´æ¿Õ¼ä |
| | | if ((data_ins = (ad_data_s *)malloc(sizeof(ad_data_s) + sizeof(uint16_t) * AD_ALKA_BAT_CNT)) != NULL) |
| | | { |
| | | data_ins->ad_buffer_cnt = AD_ALKA_BAT_CNT; |
| | | data_ins->ad_ch = AD_ALKA_BAT_CH; |
| | | volt_ret = Get_vol_Average(data_ins); |
| | | // Alka_Battery_GPIO_Clk_Init(); |
| | | ADC_IN10_Init(); |
| | | ALKA_TEST_ON; // ʹÄܼîµç¼ì²â |
| | | |
| | | sample_vol = (float)volt_ret * 0.001; |
| | | battery_vol = sample_vol * ALKA_VOL_COE; |
| | | ALK_DEC_OFF; |
| | | // delay_ms(10); |
| | | // ÉêÇëÈáÐÔÊý×éÄÚ´æ¿Õ¼ä |
| | | if ((data_ins = (ad_data_s *)malloc(sizeof(ad_data_s) + sizeof(uint16_t) * Ad_ALKA_BAT_CNT)) != NULL) |
| | | { |
| | | data_ins->ad_buffer_cnt = Ad_ALKA_BAT_CNT; |
| | | data_ins->ad_ch = Ad_ALKA_BAT_CH; |
| | | volt_ret = Get_vol_average(data_ins); |
| | | |
| | | sample_vol = (float)volt_ret * 0.001; |
| | | battery_vol = sample_vol * ALKA_VOL_COE; |
| | | ALKA_TEST_OFF; |
| | | /*ÊÍ·ÅÄÚ´æ*/ |
| | | free(data_ins); |
| | | data_ins = NULL; |
| | |
| | | float sample_vol; |
| | | float battery_vol = 0; |
| | | ad_data_s *data_ins; |
| | | Lith_Battery_GPIO_Clk_Init(); |
| | | ADC_IN4_Init(); |
| | | LIT_DEC_ON; |
| | | delay_ms(5); |
| | | if ((data_ins = (ad_data_s *)malloc(sizeof(data_ins) + sizeof(uint16_t) * AD_LITH_BAT_CNT)) != NULL) |
| | | // Lith_Battery_GPIO_Clk_Init(); |
| | | ADC_IN5_Init(); |
| | | LITH_TEST_ON; // ʹÄÜ﮵ç¼ì²â |
| | | // delay_ms(10); |
| | | if ((data_ins = (ad_data_s *)malloc(sizeof(data_ins) + sizeof(uint16_t) * Ad_LITH_BAT_CNT)) != NULL) |
| | | { |
| | | data_ins->ad_buffer_cnt = AD_LITH_BAT_CNT; |
| | | data_ins->ad_ch = AD_LITH_BAT_CH; |
| | | volt_ret = Get_vol_Average(data_ins); |
| | | sample_vol = (float)volt_ret * 0.001; |
| | | battery_vol = sample_vol * LITH_VOL_COE; |
| | | LIT_DEC_OFF; |
| | | data_ins->ad_buffer_cnt = Ad_LITH_BAT_CNT; |
| | | data_ins->ad_ch = Ad_LITH_BAT_CH; |
| | | volt_ret = Get_vol_average(data_ins); |
| | | sample_vol = (float)volt_ret * 0.001; |
| | | battery_vol = sample_vol * LITH_VOL_COE; |
| | | LITH_TEST_OFF; |
| | | /*ÊÍ·ÅÄÚ´æ*/ |
| | | free(data_ins); |
| | | data_ins = NULL; |
| | |
| | | return battery_vol; |
| | | } |
| | | |
| | | //float Get_PF6_Bat_Voltage(void) |
| | | // float Get_PF6_Bat_Voltage(void) |
| | | //{ |
| | | // uint32_t volt_ret; |
| | | // float sample_vol; |
| | | // float battery_vol = 0; |
| | | // ad_data_s *data_ins; |
| | | // float sample_vol; |
| | | // float battery_vol = 0; |
| | | // ad_data_s *data_ins; |
| | | // Lith_Battery_GPIO_Clk_Init(); |
| | | // ADC_IN5_Init(); |
| | | // if ((data_ins = (ad_data_s *)malloc(sizeof(data_ins) + sizeof(uint16_t) * AD_LITH_PF6_BAT_CNT)) != NULL) |
| | | // { |
| | | // data_ins->ad_buffer_cnt = AD_LITH_PF6_BAT_CNT; |
| | | // data_ins->ad_ch = AD_LITH_PF6_BAT_CH; |
| | | // volt_ret = Get_vol_Average(data_ins); |
| | | // if ((data_ins = (ad_data_s *)malloc(sizeof(data_ins) + sizeof(uint16_t) * AD_LITH_PF6_BAT_CNT)) != NULL) |
| | | // { |
| | | // data_ins->ad_buffer_cnt = AD_LITH_PF6_BAT_CNT; |
| | | // data_ins->ad_ch = AD_LITH_PF6_BAT_CH; |
| | | // volt_ret = Get_vol_average(data_ins); |
| | | // sample_vol = (float)volt_ret * 0.001; |
| | | // battery_vol = sample_vol * LITH_PF6_VOL_COE; |
| | | // /*ÊÍ·ÅÄÚ´æ*/ |
| | | // free(data_ins); |
| | | // data_ins = NULL; |
| | | // } |
| | | // ADC_CR_EN_Setable(DISABLE); |
| | | // return battery_vol; |
| | | //} |
| | | |
| | | // /*ÊÍ·ÅÄÚ´æ*/ |
| | | // free(data_ins); |
| | | // data_ins = NULL; |
| | | // } |
| | | // ADC_CR_EN_Setable(DISABLE); |
| | | // return battery_vol; |
| | | // } |
| | | |
| | | float Get_Mcu_Temp(void) |
| | | { |
| | | ad_data_s *data_ins_vtem; |
| | | float temperature; |
| | | ADC_Temp_Init(); |
| | | ADC_Temp_Init(); |
| | | |
| | | if ((data_ins_vtem = (ad_data_s *)malloc(sizeof(ad_data_s) + sizeof(uint16_t) * AD_VTEM_CNT)) != NULL) |
| | | { |
| | |
| | | ADC_CR_EN_Setable(DISABLE); |
| | | return temperature; |
| | | } |
| | | |
| | | |
| | | #define LITH_BAT_VCC_MAX 7.2f |
| | | /*µç³Øµçѹ״̬ÅжÏ,״̬ÍùÉϱä¸üÐèÒª´óÓÚãÐÖµ+0.2V£¬·Àֹ״̬ÔÚãÐÖµÉÏÏÂÌø¶¯*/ |
| | | void Lith_Bat_Voltage_Status(float lith_vcc,PWR_VOL_T *pwr_vol_p) |
| | | /*McuζÈ״̬±¨¾¯´¦Àí*/ |
| | | #define LCD_TEMPERATURE_LOW_VALUE (-15) |
| | | void Mcu_TempStateAlarmHandler(float mcu_temperature, SYS_TEMP_ALARM_CFG_T *sys_temp_alarm_p) |
| | | { |
| | | float fTemp; |
| | | if(lith_vcc < bat_para_g.lith_bat_under_v*0.1){ |
| | | pwr_vol_p->lith_vcc_status = BAT_V_DOWN; |
| | | }else if(lith_vcc < bat_para_g.lith_bat_under_v*0.1 + 0.2){ |
| | | if(pwr_vol_p->lith_vcc_status == BAT_V_DOWN){ |
| | | pwr_vol_p->lith_vcc_status = BAT_V_DOWN; |
| | | }else{ |
| | | pwr_vol_p->lith_vcc_status = BAT_V_LOW; |
| | | } |
| | | }else if(lith_vcc < bat_para_g.lith_bat_low_v*0.1){ |
| | | pwr_vol_p->lith_vcc_status = BAT_V_LOW; |
| | | }else if(lith_vcc < bat_para_g.lith_bat_low_v*0.1 + 0.2){ |
| | | if(pwr_vol_p->lith_vcc_status == BAT_V_LOW){ |
| | | pwr_vol_p->lith_vcc_status = BAT_V_LOW; |
| | | }else{ |
| | | pwr_vol_p->lith_vcc_status = BAT_V_NONE; |
| | | } |
| | | }else{ |
| | | pwr_vol_p->lith_vcc_status = BAT_V_NONE; |
| | | } |
| | | |
| | | /*****¸ù¾Ýµçѹֵ¼ÆËã°Ù·Ö±È£¬Âúµç°´LITH_BAT_VCC_MAXËã***/ |
| | | if(pwr_vol_p->lith_vcc_status == BAT_V_DOWN){ |
| | | pwr_vol_p->lith_vcc_per = 0; |
| | | }else if(pwr_vol_p->lith_vcc_status == BAT_V_LOW){ |
| | | if(bat_para_g.lith_bat_low_v > bat_para_g.lith_bat_under_v){ |
| | | fTemp = BAT_PERSENT_LEVEL_1*(lith_vcc - bat_para_g.lith_bat_low_v*0.1) /(0.1*(bat_para_g.lith_bat_low_v - bat_para_g.lith_bat_under_v)); |
| | | if(fTemp > 20.0) |
| | | fTemp = 20; |
| | | else if(fTemp <0) |
| | | fTemp = 0; |
| | | pwr_vol_p->lith_vcc_per = fTemp; |
| | | }else |
| | | { |
| | | pwr_vol_p->lith_vcc_per = 0; |
| | | } |
| | | |
| | | }else |
| | | { |
| | | if(LITH_BAT_VCC_MAX>bat_para_g.lith_bat_low_v*0.1){ |
| | | fTemp = (100-BAT_PERSENT_LEVEL_1)*(lith_vcc - bat_para_g.lith_bat_low_v*0.1) /(LITH_BAT_VCC_MAX - bat_para_g.lith_bat_low_v*0.1); |
| | | if(fTemp > 80.0) |
| | | fTemp = 80; |
| | | else if(fTemp <0.0) |
| | | fTemp = 0.0; |
| | | pwr_vol_p->lith_vcc_per = fTemp + 20.0; |
| | | }else{ |
| | | pwr_vol_p->lith_vcc_per = 20; |
| | | } |
| | | |
| | | } |
| | | |
| | | if (mcu_temperature < sys_temp_alarm_p->cpu_temp_up_scope && |
| | | mcu_temperature > sys_temp_alarm_p->cpu_temp_down_scope) // Õý³£ÎÂ¶È cpu_temp_down < mcu_temp_now < cpu_temp_up |
| | | { |
| | | __SYS_STATUS_BYTES_STATUS(cpu_temp_up, RESET, AV_CPU_TEMP_UP); |
| | | __SYS_STATUS_BYTES_STATUS(cpu_temp_down, RESET, AV_CPU_TEMP_DOWN); |
| | | } |
| | | else if (mcu_temperature >= sys_temp_alarm_p->cpu_temp_up_scope) |
| | | __SYS_STATUS_ALARM_BYTES_SET(cpu_temp_up); |
| | | else if (mcu_temperature <= sys_temp_alarm_p->cpu_temp_down_scope) |
| | | __SYS_STATUS_ALARM_BYTES_SET(cpu_temp_down); |
| | | |
| | | if (mcu_temperature <= LCD_TEMPERATURE_LOW_VALUE) |
| | | __SYS_STATUS_ALARM_BYTES_SET(lcd_temp_low); |
| | | else |
| | | __SYS_STATUS_BYTES_STATUS(lcd_temp_low, RESET, AV_LCD_TEMP_LOW); |
| | | } |
| | | /*µç³Øµçѹ״̬ÅжÏ*/ |
| | | #define LITH_LOW_EFFECTIVE_VOLTAGE_VALUE (3.2f - 2.9f) |
| | | void Lith_Bat_Voltage_Status(float lith_vcc, int8_t *pLith_vcc_per) |
| | | { |
| | | if (lith_vcc < 3.2f) |
| | | { |
| | | if (__SYS_STATUS_BYTES_GET(lith_under) == RESET || __SYS_STATUS_BYTES_GET(lith_remove) == RESET) |
| | | { |
| | | *pLith_vcc_per = (float)(lith_vcc - 2.9f) / (float)LITH_LOW_EFFECTIVE_VOLTAGE_VALUE * 20; |
| | | if (*pLith_vcc_per < 0) |
| | | *pLith_vcc_per = 1; |
| | | } |
| | | } |
| | | else |
| | | *pLith_vcc_per = 100; |
| | | |
| | | if (__SYS_STATUS_BYTES_GET(lith_low) == 0 && lith_vcc < 3.2f) // ﮵çµÍµç״̬×ÖδÖÃλ && ﮵ç < ijµçÁ¿ = ﮵çµÍµç |
| | | __SYS_STATUS_ALARM_BYTES_SET(lith_low); |
| | | else if (__SYS_STATUS_BYTES_GET(lith_low) && lith_vcc >= 3.25f) |
| | | __SYS_STATUS_BYTES_STATUS(lith_low, RESET, AV_LITH_LOW); // Çå³ý﮵çµÍµç״̬ |
| | | |
| | | if (__SYS_STATUS_BYTES_GET(lith_under) == 0 && lith_vcc < 2.9f) |
| | | { |
| | | pwr_vol_g.lith_vcc_per = 0; |
| | | __SYS_STATUS_ALARM_BYTES_SET(lith_under); |
| | | } |
| | | else if (__SYS_STATUS_BYTES_GET(lith_under) && lith_vcc >= 2.95f) // ﮵çǷѹÏû³ý |
| | | __SYS_STATUS_BYTES_STATUS(lith_under, RESET, AV_LITH_UNDER); |
| | | |
| | | if (__SYS_STATUS_BYTES_GET(lith_remove) && lith_vcc >= 2.5f && |
| | | GPIO_ReadInputDataBit(LITHIUM_PWR_DOWN_PORT, LITHIUM_PWR_DOWN_PIN) == Bit_SET) // ﮵çÒÆ³ý/µôµçÏû³ý |
| | | { |
| | | __SYS_STATUS_BYTES_STATUS(lith_remove, RESET, AV_LITH_REMOVE); |
| | | SLAVE_PWR_ON; |
| | | } |
| | | } |
| | | |
| | | #define ALKA_BAT_VCC_MAX 6.4f |
| | | void Alka_Bat_Voltage_Status(float alka_vcc,PWR_VOL_T *pwr_vol_p) |
| | | void Alka_Bat_Voltage_Status(float alka_vcc) |
| | | { |
| | | float fTemp; |
| | | if(alka_vcc < bat_para_g.alka_bat_under_v*0.1){ |
| | | pwr_vol_p->alka_vcc_status = BAT_V_DOWN; |
| | | }else if(alka_vcc < bat_para_g.alka_bat_under_v*0.1 + 0.2){ |
| | | if(pwr_vol_p->alka_vcc_status == BAT_V_DOWN){ |
| | | pwr_vol_p->alka_vcc_status = BAT_V_DOWN; |
| | | }else{ |
| | | pwr_vol_p->alka_vcc_status = BAT_V_LOW; |
| | | } |
| | | }else if(alka_vcc < bat_para_g.alka_bat_low_v*0.1){ |
| | | pwr_vol_p->alka_vcc_status = BAT_V_LOW; |
| | | }else if(alka_vcc < bat_para_g.alka_bat_low_v*0.1 + 0.2){ |
| | | if(pwr_vol_p->alka_vcc_status==BAT_V_LOW){ |
| | | pwr_vol_p->alka_vcc_status = BAT_V_LOW; |
| | | }else{ |
| | | pwr_vol_p->alka_vcc_status = BAT_V_NONE; |
| | | } |
| | | }else{ |
| | | pwr_vol_p->alka_vcc_status = BAT_V_NONE; |
| | | } |
| | | |
| | | /*****¸ù¾Ýµçѹֵ¼ÆËã°Ù·Ö±È£¬Âúµç°´ALKA_BAT_VCC_MAXËã***/ |
| | | if(pwr_vol_p->alka_vcc_status == BAT_V_DOWN){ |
| | | pwr_vol_p->alka_vcc_per = 0; |
| | | }else if(pwr_vol_p->alka_vcc_status == BAT_V_LOW){ |
| | | if(bat_para_g.alka_bat_low_v > bat_para_g.alka_bat_under_v){ |
| | | fTemp = BAT_PERSENT_LEVEL_1*(alka_vcc - bat_para_g.alka_bat_low_v*0.1) /(0.1*(bat_para_g.alka_bat_low_v - bat_para_g.alka_bat_under_v)); |
| | | if(fTemp > 20.0) |
| | | fTemp = 20; |
| | | else if(fTemp <0) |
| | | fTemp = 0; |
| | | pwr_vol_p->alka_vcc_per = fTemp; |
| | | }else |
| | | { |
| | | pwr_vol_p->alka_vcc_per = 0; |
| | | } |
| | | |
| | | }else |
| | | { |
| | | if(ALKA_BAT_VCC_MAX>bat_para_g.alka_bat_low_v*0.1){ |
| | | fTemp = (100-BAT_PERSENT_LEVEL_1)*(alka_vcc - bat_para_g.alka_bat_low_v*0.1) /(ALKA_BAT_VCC_MAX - bat_para_g.alka_bat_low_v*0.1); |
| | | if(fTemp > 80.0) |
| | | fTemp = 80; |
| | | else if(fTemp <0.0) |
| | | fTemp = 0.0; |
| | | pwr_vol_p->alka_vcc_per = fTemp + 20.0; |
| | | }else{ |
| | | pwr_vol_p->alka_vcc_per = 20; |
| | | } |
| | | |
| | | } |
| | | |
| | | if (__SYS_STATUS_BYTES_GET(alka_low) == 0 && alka_vcc < 4.85f) // ¼îµçµÍµç |
| | | __SYS_STATUS_ALARM_BYTES_SET(alka_low); |
| | | else if (__SYS_STATUS_BYTES_GET(alka_low) && alka_vcc >= 4.95f) |
| | | { |
| | | __SYS_STATUS_BYTES_STATUS(alka_low, RESET, AV_ALKA_LOW); |
| | | } |
| | | |
| | | if (__SYS_STATUS_BYTES_GET(alka_under) == 0 && alka_vcc < 4.5f) // ¼îµçǷѹ |
| | | __SYS_STATUS_ALARM_BYTES_SET(alka_under); |
| | | else if (__SYS_STATUS_BYTES_GET(alka_under) && alka_vcc >= 4.6f) |
| | | __SYS_STATUS_BYTES_STATUS(alka_under, RESET, AV_ALKA_UNDER); |
| | | |
| | | if (__SYS_STATUS_BYTES_GET(alka_remove) && alka_vcc >= 3.0f && |
| | | GPIO_ReadInputDataBit(ALKALI_PWR_DOWN_PORT, ALKALI_PWR_DOWN_PIN) == Bit_SET) // ¼îµçÒÆ³ý/µôµçÏû³ý |
| | | __SYS_STATUS_BYTES_STATUS(alka_remove, RESET, AV_ALKA_REMOVE); |
| | | |
| | | if (GPIO_ReadOutputDataBit(LCD_PWR_GPIO_PORT, LCD_PWR_PIN)) |
| | | LCD_BACKLIGHT_SELECT(__SYS_STATUS_BYTES_GET(alka_low)); |
| | | } |
| | | |
| | | /**MCUζÈ״̬ÅжÏ*/ |
| | | void MCU_temperature_Status(float mcu_tem,PWR_VOL_T *pwr_vol_p) |
| | | /*µçÔ´ÖÜÆÚʱ¼äÉèÖÃ*/ |
| | | void Power_PeriodTimeSet(PWR_VOL_T *pwr_vol_p_p, __IO SYS_STATUS_T *sys_state_p) |
| | | { |
| | | |
| | | static uint8_t alka_last_state[3] = {0}, lith_last_state[3] = {0}; |
| | | static uint16_t alka_get_power_period_time_set = 720, lith_get_power_period_time_set = 720; |
| | | /*¼îµç*/ |
| | | if (alka_last_state[0] != sys_state_p->alka_low) // ¼îµçµÍµç |
| | | { |
| | | if (sys_state_p->alka_low) |
| | | alka_get_power_period_time_set = 360; // 6Сʱ |
| | | else |
| | | alka_get_power_period_time_set = 720; |
| | | alka_last_state[0] = sys_state_p->alka_low; |
| | | __PERIOD_FIRST_CALC_FLAG_SET(alka_get_power_period); |
| | | } |
| | | if (alka_last_state[1] != sys_state_p->alka_under) |
| | | { |
| | | if (sys_state_p->alka_under) |
| | | alka_get_power_period_time_set = 60; // 1Сʱ |
| | | else |
| | | alka_get_power_period_time_set = 720; |
| | | alka_last_state[1] = sys_state_p->alka_under; |
| | | __PERIOD_FIRST_CALC_FLAG_SET(alka_get_power_period); |
| | | } |
| | | if (alka_last_state[2] != sys_state_p->alka_remove) |
| | | { |
| | | if (sys_state_p->alka_remove) |
| | | alka_get_power_period_time_set = 10; // 1/6Сʱ |
| | | else |
| | | alka_get_power_period_time_set = 720; |
| | | alka_last_state[2] = sys_state_p->alka_remove; |
| | | __PERIOD_FIRST_CALC_FLAG_SET(alka_get_power_period); |
| | | } |
| | | /*﮵ç*/ |
| | | if (lith_last_state[0] != sys_state_p->lith_low) |
| | | { |
| | | if (sys_state_p->lith_low) |
| | | lith_get_power_period_time_set = 360; // 6Сʱ |
| | | else |
| | | lith_get_power_period_time_set = 720; |
| | | lith_last_state[0] = sys_state_p->lith_low; |
| | | __PERIOD_FIRST_CALC_FLAG_SET(lith_get_power_period); |
| | | } |
| | | if (lith_last_state[1] != sys_state_p->lith_under) |
| | | { |
| | | if (sys_state_p->lith_under) |
| | | lith_get_power_period_time_set = 60; // 1Сʱ |
| | | else |
| | | lith_get_power_period_time_set = 720; |
| | | lith_last_state[1] = sys_state_p->lith_under; |
| | | __PERIOD_FIRST_CALC_FLAG_SET(lith_get_power_period); |
| | | } |
| | | if (lith_last_state[2] != sys_state_p->lith_remove) |
| | | { |
| | | if (sys_state_p->lith_remove) |
| | | lith_get_power_period_time_set = 10; // 1/6Сʱ |
| | | else |
| | | lith_get_power_period_time_set = 720; |
| | | lith_last_state[2] = sys_state_p->lith_remove; |
| | | __PERIOD_FIRST_CALC_FLAG_SET(lith_get_power_period); |
| | | } |
| | | if (calendar_g.Second == 0x10 && |
| | | Func_PeriodStartHandler(0, alka_get_power_period_time_set, &period_para_g.alka_get_power_period.period_flag, &period_para_g.alka_get_power_period.last_time_m, &calendar_g)) |
| | | pwr_vol_p_p->alka_flag = AMS_PERIOD; |
| | | if ( |
| | | calendar_g.Second == 0x12 && |
| | | Func_PeriodStartHandler(0, lith_get_power_period_time_set, &period_para_g.lith_get_power_period.period_flag, &period_para_g.lith_get_power_period.last_time_m, &calendar_g)) |
| | | pwr_vol_p_p->lith_flag = LMS_PERIOD; |
| | | if (calendar_g.Second == 0x14 && |
| | | Func_PeriodStartHandler(0, 30, &period_para_g.mcu_get_temperature_period.period_flag, &period_para_g.mcu_get_temperature_period.last_time_m, &calendar_g)) |
| | | pwr_vol_p_p->mcu_temp_flag = SET; |
| | | } |
| | | |
| | | |
| | | //ï®µç³ØÊ¹ÓÃʱ¼ä¼ÆÊý |
| | | void LithBatUseTimeCalculate(BAT_PARA_T *bat_para_p) |
| | | uint8_t sys_bst_flag = 0; |
| | | void Sys_BST_LithStatus(float lith_vcc) |
| | | { |
| | | bat_para_p->lith_bat_used_sec ++; |
| | | if(bat_para_p->lith_bat_used_sec >=3600){ |
| | | bat_para_p->lith_bat_used_sec = 0; |
| | | |
| | | if(bat_para_p->lith_bat_used_hour < 87600) //24Сʱ*365Ìì*10Äê |
| | | bat_para_p->lith_bat_used_hour ++; |
| | | |
| | | //? ´æ´¢£¬Ôݶ¨Ã¿Ð¡Ê±´æ´¢Ò»´Î |
| | | } |
| | | |
| | | if (first_power_get_cnt_g >= FIRST_POWER_TIM_MAX) |
| | | { |
| | | if (lith_vcc >= 3.2f) |
| | | { |
| | | SYS_BST_DIS; |
| | | sys_bst_flag = 0; |
| | | } |
| | | else if (lith_vcc < /*3.1f*/ 3.0f) |
| | | { |
| | | SYS_BST_EN; |
| | | sys_bst_flag = 1; |
| | | } |
| | | } |
| | | } |
| | | |
| | | #define EX_PWR_CONTINUE_TIME 5 //Íâµç³ÖÐøÊ±¼ä£¬³ÖÐøXÃëËãÓÐЧ |
| | | /*»ñµÃµçԴ״̬¡£ï®µç¡¢¼îµç¡¢Íâµç¡¢MCUζÈ*/ |
| | | void GetPwrStatusPro(PWR_VOL_T *pwr_vol_p) |
| | | /*»ñµÃË«µç³Øµçѹ*/ |
| | | void Get_Double_Bat_Voltage(PWR_VOL_T *pwr_vol_p) |
| | | { |
| | | const uint16_t DELAY_TIME = 5; |
| | | static uint16_t delay_time_cnt = 0; |
| | | |
| | | /*¸ß¹¦ºÄ¹¦ÄÜÔËÐнáÊøÖ®ºóÑÓʱһ¶¨Ê±¼äÔÙ¼ì²âµç³Ø*/ |
| | | if((sys_fun_run_ctrl_g.rs485_ctrl_flag.running_flag == RESET)&&(sys_fun_run_ctrl_g.wrc_ctrl_flag.running_flag == RESET)&&(sys_fun_run_ctrl_g.valve_ctrl_flag.running_flag == RESET)){ |
| | | if(delay_time_cnt < DELAY_TIME) delay_time_cnt ++; |
| | | } |
| | | else |
| | | delay_time_cnt = 0; |
| | | |
| | | /*﮵ç¼îµçÖÜÆÚ´¥·¢*/ //Ôݶ¨¼òµ¥´¦Àí£¬Ò»Ìì¼ì²âÒ»´Î |
| | | if((sys_clockBCD_g.hour == 23)&&(sys_clockBCD_g.min == 57)&&(sys_clockBCD_g.sec == 57)){ |
| | | pwr_vol_p->lith_flag = LMS_PERIOD; |
| | | pwr_vol_p->alka_flag = AMS_PERIOD; |
| | | } |
| | | |
| | | /*MCUζÈÖÜÆÚÐÔ¼ì²â*/ //Ôݶ¨Ã¿Ð¡Ê±¼ì²âÒ»´Î |
| | | if((sys_clockBCD_g.min == 57)&&(sys_clockBCD_g.sec == 58)) |
| | | pwr_vol_p->mcu_temp_flag = SET; |
| | | |
| | | //﮵çµôµçÈ·ÈÏ |
| | | if(pwr_vol_p->lith_lose_check_flag == SET){ |
| | | pwr_vol_p->lith_lose_check_flag = RESET; |
| | | if(LITH_PWR_LOSE_IO_READ == Bit_RESET){ |
| | | //È·ÈÏ﮵çµôµç |
| | | __SYS_STATUS_ALARM_BYTES_SET(lith_remove,ALARM_ID_LITH_BAT_REMOVAL); //?﮵çµôµçÖ®ºóÐèҪһЩ½ô¼±´¦Àí£¬±ÈÈçʵʱÊý¾ÝÁ¢Âí´æ´¢Ò»´Î |
| | | } |
| | | } |
| | | |
| | | //¼îµçµôµçÈ·ÈÏ |
| | | if(pwr_vol_p->alka_lose_check_flag == SET){ |
| | | pwr_vol_p->alka_lose_check_flag = RESET; |
| | | if(ALKA_PWR_LOSE_IO_READ == Bit_RESET){ |
| | | //È·ÈÏ﮵çµôµç |
| | | __SYS_STATUS_ALARM_BYTES_SET(alka_remove,ALARM_ID_ALKA_BAT_REMOVAL); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | if(pwr_vol_p->lith_flag != LMS_NONE ){ |
| | | pwr_vol_p->lith_flag = LMS_NONE; |
| | | pwr_vol_p->lith_vcc = Get_Lith_Bat_Voltage();//﮵ç¼ì²â |
| | | Lith_Bat_Voltage_Status(pwr_vol_p->lith_vcc,pwr_vol_p); |
| | | } |
| | | |
| | | if((pwr_vol_p->alka_flag != AMS_NONE)&&(delay_time_cnt >= DELAY_TIME) ){ |
| | | pwr_vol_p->alka_flag = AMS_PERIOD; |
| | | pwr_vol_p->alka_vcc = Get_Alka_Bat_Voltage();//¼îµç¼ì²â |
| | | Alka_Bat_Voltage_Status(pwr_vol_p->alka_vcc,pwr_vol_p); |
| | | } |
| | | |
| | | if(pwr_vol_p->mcu_temp_flag == SET){ |
| | | pwr_vol_p->mcu_temp_flag = RESET; |
| | | pwr_vol_p->mcu_temperature = Get_Mcu_Temp();//mcuζȻñÈ¡ |
| | | |
| | | } |
| | | |
| | | |
| | | /*µç³ØÊ¹ÓÃʱ¼ä¼ÆË㣬ÔÙ¸ù¾Ýµçѹ״̬ºÍʹÓÃʱ¼ä״̬×ۺϵóö×îÖÕµÄµç³Ø×´Ì¬*/ |
| | | /*﮵çµçѹǷѹ£¬ÔòºÏ³ÉǷѹ£¬°Ù·Ö±È0£»ï®µçµçѹµÍµç£¬ÔòºÏ³ÉµÍµç£¬°Ù·Ö±È°´µçѹֵÏÔʾ0-20£» ·ñÔò£¬ºÏ³É=ʹÓÃʱ¼äÊ£Ó࣬ºÏ³ÉСÓÚ20ÅжÏΪµÍµç£¬20-100ΪÕý³£*/ |
| | | |
| | | if(__SYS_STATUS_BYTES_GET(power_state) ==RESET) |
| | | LithBatUseTimeCalculate(&bat_para_g); |
| | | |
| | | if(bat_para_g.lith_bat_used_hour >= bat_para_g.lith_bat_max_hour){ |
| | | pwr_vol_p->lith_remain_use_time_per = 0; |
| | | }else{ |
| | | pwr_vol_p->lith_remain_use_time_per = 100*(bat_para_g.lith_bat_max_hour - bat_para_g.lith_bat_used_hour)/bat_para_g.lith_bat_max_hour; |
| | | } |
| | | |
| | | if(pwr_vol_p->lith_vcc_status == BAT_V_DOWN){ |
| | | __SYS_STATUS_BYTES_STATUS(lith_down, SET, ALARM_ID_LITH_BAT_DOWN); |
| | | __SYS_STATUS_BYTES_STATUS(lith_low, SET, ALARM_ID_LITH_BAT_LOW); |
| | | pwr_vol_p->lith_synthesize_per = 0; |
| | | }else if(pwr_vol_p->lith_vcc_status == BAT_V_LOW){ |
| | | __SYS_STATUS_BYTES_STATUS(lith_down, RESET, ALARM_ID_LITH_BAT_DOWN); |
| | | __SYS_STATUS_BYTES_STATUS(lith_low, SET, ALARM_ID_LITH_BAT_LOW); |
| | | pwr_vol_p->lith_synthesize_per = pwr_vol_p->alka_vcc_per; |
| | | }else{ |
| | | pwr_vol_p->lith_synthesize_per = (pwr_vol_p->lith_remain_use_time_per ==100)? 100:pwr_vol_p->lith_remain_use_time_per + 1; //ΪÁË100%Äܹ»Î¬³ÖÒ»¶Îʱ¼ä£¬µçѹÕý³£×´Ì¬Ê±°Ù·Ö±È²»ÄÜΪ0£¬Îª0¾ÍÒªÏÔʾ¿ÕÁË£¬±£³Ö1¸ñÖÁµçѹ״̬±äΪǷѹ |
| | | |
| | | if(pwr_vol_p->lith_synthesize_per < 20){ |
| | | __SYS_STATUS_BYTES_STATUS(lith_down, RESET, ALARM_ID_LITH_BAT_DOWN); |
| | | __SYS_STATUS_BYTES_STATUS(lith_low, SET, ALARM_ID_LITH_BAT_LOW); |
| | | }else{ |
| | | __SYS_STATUS_BYTES_STATUS(lith_down, RESET, ALARM_ID_LITH_BAT_DOWN); |
| | | __SYS_STATUS_BYTES_STATUS(lith_low, RESET, ALARM_ID_LITH_BAT_LOW); |
| | | } |
| | | |
| | | } |
| | | /*¼îµç³Ø¿ÉÄܸù¾ÝʹÓôÎÊý£¬¶ø²»ÊÇʱ¼ä£¬×îÖÕ״̬ÅжϷ½Ê½´ý¶¨£¿*/ |
| | | |
| | | |
| | | /****Íâµçʵʱ¼à²â******/ |
| | | EX_Pwr_GPIO_Clk_Init(); |
| | | if(HWIDO_EX_PWR_IO_READ == Bit_RESET){ |
| | | if((pwr_vol_p->ex_pwr_out_cnt!=0)&&(pwr_vol_p->ex_pwr_out_cnt!=EX_PWR_CONTINUE_TIME)){ |
| | | //³ÖÐøÖÐ;״̬¸Ä±ä£¬¿ÉÄÜ´ú±íÍâµç²»Îȶ¨£¬Æµ·±³öÏÖÔò±¨¾¯ |
| | | } |
| | | pwr_vol_p->ex_pwr_out_cnt = 0; |
| | | if(pwr_vol_p->ex_pwr_in_cnt < EX_PWR_CONTINUE_TIME ) |
| | | pwr_vol_p->ex_pwr_in_cnt++; |
| | | |
| | | if(pwr_vol_p->ex_pwr_in_cnt >=EX_PWR_CONTINUE_TIME){ |
| | | if(__SYS_STATUS_BYTES_GET(power_state) != SET){ |
| | | EX_PWR_ON; |
| | | __SYS_STATUS_BYTES_STATUS(power_state, SET, ALARM_ID_NORMAL); |
| | | //?Ìí¼ÓÍâµç±ä»¯±¨¾¯ |
| | | } |
| | | } |
| | | }else |
| | | { |
| | | if((pwr_vol_p->ex_pwr_in_cnt!=0)&&(pwr_vol_p->ex_pwr_in_cnt!=EX_PWR_CONTINUE_TIME)){ |
| | | //³ÖÐøÖÐ;״̬¸Ä±ä£¬¿ÉÄÜ´ú±íÍâµç²»Îȶ¨£¬Æµ·±³öÏÖÔò±¨¾¯ |
| | | } |
| | | pwr_vol_p->ex_pwr_in_cnt = 0; |
| | | if(pwr_vol_p->ex_pwr_out_cnt < EX_PWR_CONTINUE_TIME ) |
| | | pwr_vol_p->ex_pwr_out_cnt++; |
| | | |
| | | if(pwr_vol_p->ex_pwr_out_cnt >=EX_PWR_CONTINUE_TIME){ |
| | | if(__SYS_STATUS_BYTES_GET(power_state) != RESET){ |
| | | EX_PWR_OFF; |
| | | __SYS_STATUS_BYTES_STATUS(power_state, RESET, ALARM_ID_NORMAL); |
| | | //?Ìí¼ÓÍâµç±ä»¯±¨¾¯ |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | /*Ô¶´«·¢ËÍÖÐ*/ |
| | | if ((gprs_soft_para_g.gprs_state != GPRS_IDLE) && (gprs_soft_para_g.gprs_state != GPRS_RESTART)) |
| | | { |
| | | if (__SYS_STATUS_BYTES_GET(lith_under) || __SYS_STATUS_BYTES_GET(lith_remove)) |
| | | { |
| | | __SYS_DELAY_SEC_TIME_SET_(gprs_timeout_para, 0); // ³¬Ê±Ê±¼äÇåÁ㣬²»²úÉú³¬Ê±flag |
| | | gprs_soft_para_g.gprs_state = GPRS_CLOSE_PWR; // ¹Ø±ÕGPRSµçÔ´ |
| | | __SYS_DELAY_SEC_TIME_SET_(gprs_delay_para, 1); |
| | | } |
| | | } |
| | | /*ÖÜÆÚ²É¼¯µçѹ*/ |
| | | Power_PeriodTimeSet(pwr_vol_p, &sys_admin_g.sys_admin.state_bytes); |
| | | if (LargeCurrent_LimitingProcess() == 3) |
| | | { |
| | | if (pwr_vol_p->alka_flag != AMS_NONE) // ²É¼¯¼îµç |
| | | { |
| | | pwr_vol_p->alka_vcc = Get_Alka_Bat_Voltage(); |
| | | sys_realtime_data_g.state_para_s.alka_vcc = pwr_vol_p->alka_vcc * 10; |
| | | #ifdef RS232_PRINTF |
| | | printf("alka vcc = %.2f \r\n", pwr_vol_p->alka_vcc); |
| | | #endif |
| | | Alka_Bat_Voltage_Status(pwr_vol_p->alka_vcc); // µçÔ´µçÁ¿×´Ì¬ÅÐ¶Ï |
| | | if ((pwr_vol_p->alka_flag == AMS_GPRS_BEFORE) && (pwr_vol_p->alka_vcc >= 4.5f)) |
| | | gprs_soft_para_g.gprs_state = GPRS_OPEN_PWR; |
| | | else if (pwr_vol_p->alka_flag == AMS_GPRS_BEFORE) |
| | | sys_mode_conversion_show_g = ERROR_1; |
| | | pwr_vol_p->alka_flag = AMS_NONE; |
| | | } |
| | | if (pwr_vol_p->lith_flag != LMS_NONE) // ²É¼¯ï®µç |
| | | { |
| | | pwr_vol_p->lith_vcc = Get_Lith_Bat_Voltage(); |
| | | sys_realtime_data_g.state_para_s.lith_vcc = pwr_vol_p->lith_vcc * 10; // floatÀàÐÍ·Å´óÊ®±¶±ä³Éu8ÀàÐÍ |
| | | #ifdef RS232_PRINTF |
| | | printf("lith vcc = %.2f \r\n", pwr_vol_p->lith_vcc); |
| | | #endif |
| | | Lith_Bat_Voltage_Status(pwr_vol_p->lith_vcc, &pwr_vol_p->lith_vcc_per); // µçÔ´µçÁ¿×´Ì¬ÅÐ¶Ï |
| | | #ifdef CAL_TEST |
| | | Sys_BST_LithStatus(pwr_vol_p->lith_vcc); |
| | | #endif |
| | | if ((pwr_vol_p->lith_flag == LMS_OPEN_VALVE_BEFORE) && (pwr_vol_p->lith_vcc >= 2.9f)) |
| | | sys_valve_ctl_id_g = V_KEY_OP; |
| | | else if (pwr_vol_p->lith_flag == LMS_OPEN_VALVE_BEFORE) |
| | | sys_mode_conversion_show_g = ERROR_1; |
| | | pwr_vol_p->lith_flag = LMS_NONE; |
| | | } |
| | | if (pwr_vol_p->mcu_temp_flag == SET) // ²É¼¯MCUÎÂ¶È |
| | | { |
| | | pwr_vol_p->mcu_temp_flag = RESET; |
| | | sys_realtime_data_g.state_para_s.cpu_temperature = pwr_vol_p->mcu_temperature = Get_Mcu_Temp(); |
| | | Mcu_TempStateAlarmHandler(pwr_vol_p->mcu_temperature, &sys_temp_alarm_cfg_g); |
| | | } |
| | | } |
| | | Remaining_WorkingTime_CalculateProcess(pwr_vol_p->lith_vcc_per, pwr_vol_p->lith_vcc); |
| | | } |
| | | |
| | | |
| | | //³ÌÐòÆô¶¯ºóµçÔ´¹ÜÀí³õʼ»¯£¬ Ê×´ÎÍâµçÅжϣ¬Ê×´Îµç³Øµçѹ²É¼¯ |
| | | void PowerManagrInit(void) |
| | | { |
| | | pwr_vol_g.lith_vcc = Get_Lith_Bat_Voltage();//﮵ç¼ì²â |
| | | if(pwr_vol_g.lith_vcc < bat_para_g.lith_bat_under_v*0.1){ |
| | | __SYS_STATUS_BYTES_STATUS(lith_down, SET, ALARM_ID_LITH_BAT_DOWN); |
| | | __SYS_STATUS_BYTES_STATUS(lith_low, SET, ALARM_ID_LITH_BAT_LOW); |
| | | }else if(pwr_vol_g.lith_vcc < bat_para_g.lith_bat_low_v*0.1){ |
| | | __SYS_STATUS_BYTES_STATUS(lith_down, RESET, ALARM_ID_LITH_BAT_DOWN); |
| | | __SYS_STATUS_BYTES_STATUS(lith_low, SET, ALARM_ID_LITH_BAT_LOW); |
| | | }else{ |
| | | __SYS_STATUS_BYTES_STATUS(lith_down, RESET, ALARM_ID_LITH_BAT_DOWN); |
| | | __SYS_STATUS_BYTES_STATUS(lith_low, RESET, ALARM_ID_LITH_BAT_LOW); |
| | | } |
| | | |
| | | pwr_vol_g.alka_vcc = Get_Alka_Bat_Voltage();//¼îµç¼ì²â |
| | | if(pwr_vol_g.alka_vcc < bat_para_g.alka_bat_under_v*0.1){ |
| | | __SYS_STATUS_BYTES_STATUS(alka_down, SET, ALARM_ID_ALKA_BAT_DOWN); |
| | | __SYS_STATUS_BYTES_STATUS(alka_low, SET, ALARM_ID_ALKA_BAT_LOW); |
| | | }else if(pwr_vol_g.alka_vcc < bat_para_g.alka_bat_low_v*0.1){ |
| | | __SYS_STATUS_BYTES_STATUS(alka_down, RESET, ALARM_ID_ALKA_BAT_DOWN); |
| | | __SYS_STATUS_BYTES_STATUS(alka_low, SET, ALARM_ID_ALKA_BAT_LOW); |
| | | }else{ |
| | | __SYS_STATUS_BYTES_STATUS(alka_down, RESET, ALARM_ID_ALKA_BAT_DOWN); |
| | | __SYS_STATUS_BYTES_STATUS(alka_low, RESET, ALARM_ID_ALKA_BAT_LOW); |
| | | } |
| | | |
| | | //Íâµç¼ì²â,HWID0µÍλÓÐÍâµç |
| | | EX_Pwr_GPIO_Clk_Init(); |
| | | if(HWIDO_EX_PWR_IO_READ == Bit_RESET){ |
| | | delay_ms(10); |
| | | if(HWIDO_EX_PWR_IO_READ == Bit_RESET){ |
| | | EX_PWR_ON; |
| | | __SYS_STATUS_BYTES_STATUS(power_state, SET, ALARM_ID_NORMAL); |
| | | }else{ |
| | | EX_PWR_OFF; |
| | | __SYS_STATUS_BYTES_STATUS(power_state, RESET, ALARM_ID_NORMAL); |
| | | } |
| | | }else{ |
| | | EX_PWR_OFF; |
| | | __SYS_STATUS_BYTES_STATUS(power_state, RESET, ALARM_ID_NORMAL); |
| | | } |
| | | |
| | | |
| | | } |