ZDBMS/code_drv/ChargerLoad.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;
}
}
}
}