| | |
| | | #include "system_mem_para.h" |
| | | #include "sizhu_ctrl_word.h" |
| | | #include "linked_list.h" |
| | | #include "upper_com.h" |
| | | |
| | | PWR_VOL_T pwr_vol_g = {.lith_flag = LMS_PERIOD, .alka_flag = AMS_PERIOD, .mcu_temp_flag = SET,.lith_vcc_per = 100}; // ĬÈÏÉϵç²É¼¯Ò»´ÎµçÁ¿ºÍMCUÎÂ¶È |
| | | |
| | | |
| | | uint8_t first_power_get_cnt_g = 0; |
| | | |
| | | LIMIT_TRIGGER_RECORD_PARA_T limit_trigger_record_para_g; |
| | | |
| | | void Power_IO_Init(void) |
| | | { |
| | |
| | | OutputIO(EX_PWR_EN_PORT,EX_PWR_EN_PIN,OUT_PUSHPULL); |
| | | BORROW_PWR_OFF; |
| | | EX_PWR_OFF; |
| | | |
| | | InputtIO( LIMIT_TRIGGER_PORT, LIMIT_TRIGGER_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 |
| | | AnalogIO(LIT_ADC_PORT,LIT_ADC_PIN);// |
| | | GPIOx_ANEN_Setable(LIT_ADC_PORT,LIT_ADC_PIN,ENABLE); |
| | | OutputIO(LITH_DETECTION_PORT,LITH_DETECTION_PIN,OUT_PUSHPULL); |
| | | // AnalogIO(LIT_PWR_UNDER_PORT,LIT_PWR_UNDER_PIN);//ADC_5 |
| | | // AnalogIO(LIT_PWR_UNDER_PORT,LIT_PWR_UNDER_PIN); |
| | | |
| | | } |
| | | |
| | |
| | | { |
| | | CMU_PERCLK_SetableEx(PADCLK, ENABLE); //PADʱÖÓ£¨GPIO£©Ê¹Äܺ¯Êý |
| | | AnalogIO_H(ALK_ADC_PIN); |
| | | // GPIOx_ANEN_Setable(ALK_ADC_PORT,ALK_ADC_PIN,ENABLE); |
| | | OutputIO(ALKA_DETECTION_PORT,ALKA_DETECTION_PIN,OUT_PUSHPULL); |
| | | } |
| | | |
| | |
| | | { |
| | | CMU_PERCLK_SetableEx(PADCLK, ENABLE); //PADʱÖÓ£¨GPIO£©Ê¹Äܺ¯Êý |
| | | InputtIO( HWIDO_EX_PWR_PORT, HWIDO_EX_PWR_PIN, IN_NORMAL); |
| | | OutputIO(EX_PWR_EN_PORT,EX_PWR_EN_PIN,OUT_PUSHPULL); |
| | | } |
| | | |
| | | void borrow_Pwr_GPIO_Clk_Init(void) |
| | | { |
| | | CMU_PERCLK_SetableEx(PADCLK, ENABLE); //PADʱÖÓ£¨GPIO£©Ê¹Äܺ¯Êý |
| | | InputtIO( BORROW_PWR_PORT, BORROW_PWR_PIN, IN_NORMAL); |
| | | } |
| | | |
| | | |
| | | /****************************************** |
| | | * func: Get_vol_Average |
| | |
| | | float battery_vol = 0; |
| | | ad_data_s *data_ins; |
| | | Alka_Battery_GPIO_Clk_Init(); |
| | | ADC_IN8_Init(); |
| | | ADC_IN10_Init(); |
| | | ALK_DEC_ON; |
| | | delay_ms(5); |
| | | // ÉêÇëÈáÐÔÊý×éÄÚ´æ¿Õ¼ä |
| | |
| | | float battery_vol = 0; |
| | | ad_data_s *data_ins; |
| | | Lith_Battery_GPIO_Clk_Init(); |
| | | ADC_IN4_Init(); |
| | | ADC_IN5_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) |
| | |
| | | pwr_vol_p->lith_lose_check_flag = RESET; |
| | | if(LITH_PWR_LOSE_IO_READ == Bit_RESET){ |
| | | //È·ÈÏ﮵çµôµç |
| | | __SYS_STATUS_ALARM_BYTES_SET(lith_remove); //?﮵çµôµçÖ®ºóÐèҪһЩ½ô¼±´¦Àí£¬±ÈÈçʵʱÊý¾ÝÁ¢Âí´æ´¢Ò»´Î |
| | | __SYS_STATUS_ALARM_BYTES_SET(lith_remove,ALARM_ID_LITH_BAT_REMOVAL); //?﮵çµôµçÖ®ºóÐèҪһЩ½ô¼±´¦Àí£¬±ÈÈçʵʱÊý¾ÝÁ¢Âí´æ´¢Ò»´Î |
| | | } |
| | | } |
| | | |
| | |
| | | pwr_vol_p->alka_lose_check_flag = RESET; |
| | | if(ALKA_PWR_LOSE_IO_READ == Bit_RESET){ |
| | | //È·ÈÏ﮵çµôµç |
| | | __SYS_STATUS_ALARM_BYTES_SET(alka_remove); |
| | | __SYS_STATUS_ALARM_BYTES_SET(alka_remove,ALARM_ID_ALKA_BAT_REMOVAL); |
| | | } |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | if((pwr_vol_p->alka_flag != AMS_NONE)&&(delay_time_cnt >= DELAY_TIME) ){ |
| | | pwr_vol_p->alka_flag = AMS_PERIOD; |
| | | pwr_vol_p->alka_flag = AMS_NONE; |
| | | 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->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); |
| | | __SYS_STATUS_ALARM_BYTES_SET(lith_down, ALARM_ID_LITH_BAT_DOWN); |
| | | __SYS_STATUS_ALARM_BYTES_SET(lith_low, 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); |
| | | __SYS_STATUS_ALARM_BYTES_SET(lith_low, 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); |
| | | __SYS_STATUS_ALARM_BYTES_SET(lith_low, 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); |
| | | } |
| | | |
| | | } |
| | | /*¼îµç³Ø¿ÉÄܸù¾ÝʹÓôÎÊý£¬¶ø²»ÊÇʱ¼ä£¬×îÖÕ״̬ÅжϷ½Ê½´ý¶¨£¿*/ |
| | | /*¼îµç³Ø¿ÉÄܸù¾ÝʹÓôÎÊý£¬¶ø²»ÊÇʱ¼ä£¬×îÖÕ״̬ÅжϷ½Ê½´ý¶¨£¿ÔÝʱ»¹Ö»ÊǸù¾Ýµçѹֵ*/ |
| | | if(pwr_vol_p->alka_vcc_status == BAT_V_DOWN){ |
| | | __SYS_STATUS_ALARM_BYTES_SET(alka_down, ALARM_ID_ALKA_BAT_DOWN); |
| | | __SYS_STATUS_ALARM_BYTES_SET(alka_low, ALARM_ID_ALKA_BAT_LOW); |
| | | }else if(pwr_vol_p->alka_vcc_status == BAT_V_LOW){ |
| | | __SYS_STATUS_BYTES_STATUS(alka_down, RESET, ALARM_ID_ALKA_BAT_DOWN); |
| | | __SYS_STATUS_ALARM_BYTES_SET(alka_low, 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); |
| | | } |
| | | |
| | | |
| | | |
| | | /****Íâµçʵʱ¼à²â******/ |
| | | /****Íâµçʵʱ¼à²â,Íâµç½ÓÈëÑÓ³Ù£¬ÍâµçÒÆ³ýҪ˲¼äÇл»»Øµç³Ø¹©µç******/ |
| | | 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 ) |
| | |
| | | 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); |
| | | //?Ìí¼ÓÍâµç±ä»¯±¨¾¯ |
| | | __SYS_STATUS_BYTES_STATUS(power_state, SET, ALARM_ID_NORMAL); //¸Ã״̬²»²ÎÓ뱨¾¯ÏÔʾ |
| | | //Íâµç½ÓÈëÖ®ºó´ò¿ªÍâµçÒÆ³ýÖжϣ¬ÍâµçÒÆ³ýÒªÁ¢¼´Çл»µç³Ø¹©µç |
| | | GPIO_EXTI_Init( HWIDO_EX_PWR_PORT, HWIDO_EX_PWR_PIN, EXTI_RISING, ENABLE); |
| | | |
| | | up_comm_uart_enable();//ÍâµçʱʹÄÜÉÏλ»ú´®¿Ú |
| | | lcd_first_wake_up_flag_g = SET; //Íâµç½ÓÈëµãÁÁÆÁÄ»²¢±£³Ö³£ÁÁ |
| | | |
| | | //?Ìí¼ÓÍâµç±ä»¯±¨¾¯£¬Íâµç±¨¾¯ÌØÊâ´¦Àí£¬½ÓÈëÖ»±¨¾¯£¬²»·§¿Ø£¬²»ÏÔʾ±¨¾¯Âë |
| | | if(__SYS_ALARM_CTL_BYTES_GET(power_state)){ |
| | | if(__SYS_ALARM_REPORT_CTL_BYTES_GET(power_state) ==SET){ |
| | | if(AlarmCntIncrease(ALARM_ID_EX_POWER_STATUS_CHANGE) ==SET){ |
| | | system_alarm_word_g.alarm_word.power_state = SET; |
| | | AlarmTriggerWrcFlag = SET; |
| | | } |
| | | } |
| | | } |
| | | |
| | | } |
| | | } |
| | | }else |
| | | { |
| | | if((pwr_vol_p->ex_pwr_in_cnt!=0)&&(pwr_vol_p->ex_pwr_in_cnt!=EX_PWR_CONTINUE_TIME)){ |
| | | //³ÖÐøÖÐ;״̬¸Ä±ä£¬¿ÉÄÜ´ú±íÍâµç²»Îȶ¨£¬Æµ·±³öÏÖÔò±¨¾¯ |
| | | GPIO_EXTI_Init( HWIDO_EX_PWR_PORT, HWIDO_EX_PWR_PIN, EXTI_RISING, DISABLE); |
| | | EX_PWR_OFF; |
| | | //?Ìí¼ÓÍâµç±ä»¯±¨¾¯£¬Íâµç±¨¾¯ÌØÊâ´¦Àí£¬ÒÆ³ý±¨¾¯£¬²ÎÓë·§¿Ø£¬²»ÏÔʾ±¨¾¯Âë |
| | | if(__SYS_STATUS_BYTES_GET(power_state) ==SET){ |
| | | __SYS_STATUS_BYTES_STATUS(power_state, RESET, ALARM_ID_NORMAL);//¸Ã״̬²»²ÎÓ뱨¾¯ÏÔʾ |
| | | if(__SYS_ALARM_CTL_BYTES_GET(power_state)){ |
| | | system_alarm_word_for_valve_g.alarm_word.power_state = SET; //ÍâµçÒÆ³ý±¨¾¯Òª´¥·¢·§¿Ø |
| | | if(__SYS_ALARM_REPORT_CTL_BYTES_GET(power_state) ==SET){ |
| | | if(AlarmCntIncrease(ALARM_ID_EX_POWER_STATUS_CHANGE) ==SET){ |
| | | system_alarm_word_g.alarm_word.power_state = SET; |
| | | AlarmTriggerWrcFlag = SET; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | 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((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(HWIDO_EX_PWR_IO_READ == Bit_RESET){ |
| | | EX_PWR_ON; |
| | | __SYS_STATUS_BYTES_STATUS(power_state, SET, ALARM_ID_NORMAL); |
| | | //Íâµç½ÓÈëÖ®ºó´ò¿ªÍâµçÒÆ³ýÖжϣ¬ÍâµçÒÆ³ýÒªÁ¢¼´Çл»µç³Ø¹©µç |
| | | GPIO_EXTI_Init( HWIDO_EX_PWR_PORT, HWIDO_EX_PWR_PIN, EXTI_RISING, ENABLE); |
| | | |
| | | up_comm_uart_enable();//ÍâµçʱʹÄÜÉÏλ»ú´®¿Ú |
| | | }else{ |
| | | EX_PWR_OFF; |
| | | __SYS_STATUS_BYTES_STATUS(power_state, RESET, ALARM_ID_NORMAL); |
| | |
| | | } |
| | | |
| | | |
| | | } |
| | | } |