ZDBMS/code_drv/PorSelfTest.c

205 lines
4.9 KiB
C
Raw Normal View History

2025-02-06 07:35:32 +00:00
/********************************************************************************
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 bPorSelfTestFlg;
U8 ucPorSelfTestDelayCnt;
/*************************************************************************************************
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: PorProtectOV
* <EFBFBD><EFBFBD> <EFBFBD><EFBFBD>: <EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ: <EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD> <EFBFBD><EFBFBD>: <EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><EFBFBD>ع<EFBFBD>ѹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>λbOVΪ1
*************************************************************************************************/
void PorProtectOV(void)
{
if(!bOV)
{
if(uiCellVmax > E2uiOVvol)
{
if(++uiOVDelayCnt >= TIME_50mS_50mS)
{
bOV = 1;
uiOVDelayCnt = 0;
}
}
else if(uiCellVmax < E2uiOVRvol)
{
uiOVDelayCnt = 0;
}
}
}
/*************************************************************************************************
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: PorProtectUV
* <EFBFBD><EFBFBD> <EFBFBD><EFBFBD>: <EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ: <EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD> <EFBFBD><EFBFBD>: <EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>оǷѹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λbUVΪ1
*************************************************************************************************/
void PorProtectUV(void)
{
if(!bUV)
{
if(uiCellVmin < E2uiUVvol)
{
if(++uiUVDelayCnt >= TIME_50mS_50mS)
{
bUV = 1;
uiUVDelayCnt = 0;
}
}
else if(uiCellVmin > E2uiUVRvol)
{
uiUVDelayCnt = 0;
}
}
}
/*************************************************************************************************
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: PorProtectOTC
* <EFBFBD><EFBFBD> <EFBFBD><EFBFBD>: <EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ: <EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD> <EFBFBD><EFBFBD>: <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>±<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λbOTCΪ1
*************************************************************************************************/
void PorProtectOTC(void)
{
if(!bOTC)
{
if(uiTempeMax > E2uiTempOTC)
{
if(++uiOTCDelayCnt >= TIME_50mS_50mS)
{
bOTC = 1;
uiOTCDelayCnt = 0;
}
}
else if(uiTempeMax < E2uiTempOTCR)
{
uiOTCDelayCnt = 0;
}
}
}
/*************************************************************************************************
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: PorProtectUTC
* <EFBFBD><EFBFBD> <EFBFBD><EFBFBD>: <EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ: <EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD> <EFBFBD><EFBFBD>: <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>±<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λbUTCΪ1
*************************************************************************************************/
void PorProtectUTC(void)
{
if(!bUTC)
{
if(uiTempeMin < E2uiTempUTC)
{
if(++uiUTCDelayCnt >= TIME_50mS_50mS)
{
bUTC = 1;
uiUTCDelayCnt = 0;
}
}
else if(uiTempeMin > E2uiTempUTCR)
{
uiUTCDelayCnt = 0;
}
}
}
/*************************************************************************************************
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: PorProtectOTD
* <EFBFBD><EFBFBD> <EFBFBD><EFBFBD>: <EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ: <EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD> <EFBFBD><EFBFBD>: <EFBFBD>ŵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>±<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λbOTDΪ1
*************************************************************************************************/
void PorProtectOTD(void)
{
if(!bOTD)
{
if(uiTempeMax > E2uiTempOTD)
{
if(++uiOTDDelayCnt >= TIME_50mS_50mS)
{
bOTD = 1;
uiOTDDelayCnt = 0;
}
}
else if(uiTempeMax < E2uiTempOTDR)
{
uiOTDDelayCnt = 0;
}
}
}
/*************************************************************************************************
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: PorProtectUTD
* <EFBFBD><EFBFBD> <EFBFBD><EFBFBD>: <EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ: <EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD> <EFBFBD><EFBFBD>: <EFBFBD>ŵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>±<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λbUTDΪ1
*************************************************************************************************/
void PorProtectUTD(void)
{
if(!bUTD)
{
if(uiTempeMin < E2uiTempUTD)
{
if(++uiUTDDelayCnt >= TIME_50mS_50mS)
{
bUTD = 1;
uiUTDDelayCnt = 0;
}
}
else if(uiTempeMin > E2uiTempUTDR)
{
uiUTDDelayCnt = 0;
}
}
}
/*************************************************************************************************
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: ProtectProcess
* <EFBFBD><EFBFBD> <EFBFBD><EFBFBD>: <EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ: <EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD> <EFBFBD><EFBFBD>: <EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>100mS<EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><EFBFBD>Լ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>Ϊ50mS
*************************************************************************************************/
void PorSelfTest(void)
{
if(bPorSelfTestFlg)
{
AfeCalcuVol(); //<2F><>һ<EFBFBD><D2BB><EFBFBD>ϵ<EFBFBD>50mS<6D><53><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD>ȡ<EFBFBD><C8A1>ѹ<EFBFBD><D1B9><EFBFBD>ݺ<EFBFBD><DDBA><EFBFBD><C2B6><EFBFBD><EFBFBD><EFBFBD>
AfeCalcuTempe();
PorProtectOV(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>
PorProtectUV(); //<2F><><EFBFBD><EFBFBD>Ƿѹ<C7B7><D1B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>
PorProtectOTC(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>±<EFBFBD><C2B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>
PorProtectUTC(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>±<EFBFBD><C2B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>
PorProtectOTD(); //<2F><><EFBFBD><EFBFBD><EFBFBD>ŵ<EFBFBD><C5B5><EFBFBD><EFBFBD>±<EFBFBD><C2B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>
PorProtectUTD(); //<2F><><EFBFBD><EFBFBD><EFBFBD>ŵ<EFBFBD><C5B5><EFBFBD><EFBFBD>±<EFBFBD><C2B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>
if(++ucPorSelfTestDelayCnt >= TIME_50mS_100mS) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD>ɣ<EFBFBD><C9A3><EFBFBD><EFBFBD><EFBFBD>TIME_50mS_100mS<6D>޸<EFBFBD>ΪTIME_50mS_50mS
{
bPorSelfTestFlg = 0; //1S<31>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>ǰ״̬ȷ<CCAC><C8B7><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>PD<50><44><EFBFBD><EFBFBD><EFBFBD>Ƿ񿪹<C7B7>MOS
if(bAfeErr || bE2PRErr || bRTCErr || bMcuFlashErr)
{
bPDFlg = 1;
}
else
{
GasGaugeInit(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
}
}
}
}