/******************************************************************************** Copyright (C), Sinowealth Electronic. Ltd. Author: Sino Version: V0.0 Date: 2020/04/26 History: V2.0 2020/04/26 Preliminary ********************************************************************************/ #include "Main.h" //充电器和负载检测 BOOL bChgerStartCheckFlg; BOOL bChgerChkingFlg; BOOL bLoadStartCheckFlg; BOOL bLoadChkingFlg; U8 xdata ucChgerRCnt; U8 xdata ucLoadRCnt; /************************************************************************************************* * 函数名: LoadCheck * 参 数: 无 * 返回值: 无 * 描 述: 负载检测,欠压和过流保护后,需启动负载锁定功能 *************************************************************************************************/ void LoadCheck(void) { if(bLoadStartCheckFlg) //如果发生欠压保护,且电压已经恢复;如果已经发生过流保护 { bLoadStartCheckFlg = 0; bLoadChkingFlg = 1; ucLoadRCnt = 0; AFELoadCheckEn(); //开启AFE负载检测 } else if(bLoadChkingFlg) { AFERdStatus(); if(!bAfeLoad) //检测到负载释放 { if(++ucLoadRCnt >= LOAD_DELAY_CNT) { bLoadChkingFlg = 0; ucLoadRCnt = 0; AFELoadCheckDis(); //关闭负载检测 if(bUVLock) { bUV = 0; //释放欠压、过流 } bOCD1 = 0; bOCD2 = 0; if(bAFE_SC) { bAFE_SC = 0; AFEClrFlg(); //清除短路保护标志 } } } } } /************************************************************************************************* * 函数名: ChgerCheck * 参 数: 无 * 返回值: 无 * 描 述: 检测充电器,当发生欠压后检测充电器是否连接;当发生充电过流后检测充电器是否移除 *************************************************************************************************/ void ChgerCheck(void) { if(bChgerStartCheckFlg) { bChgerStartCheckFlg = 0; bChgerChkingFlg = 1; ucChgerRCnt = 0; AFEChgerCheckEn(); //开启充电器检测 } else if(bChgerChkingFlg) { AFERdStatus(); if(!bAfeChger) //充电器移除 { if(++ucChgerRCnt >= CHGER_DELAY_CNT) { bChgerChkingFlg = 0; ucChgerRCnt = 0; AFEChgerCheckDis(); //关闭充电器检测 if(bOVLock) { bOV = 0; //释放过压 bAFE_OV = 0; AFEClrFlg(); } bOCC = 0; } } } }