205 lines
4.9 KiB
C
205 lines
4.9 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 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>ֵ
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|