98 lines
2.4 KiB
C
98 lines
2.4 KiB
C
/********************************************************************************
|
|
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;
|
|
}
|
|
}
|
|
}
|
|
}
|