//{
PWM_IO=0;
chargermode=0x02;//pre
break;
//}
//else//V>30V-nor
//{
//PWM_IO=1;
//chargermode=0x03;//normal
//break;
//}
}
//}
}
break;
case0x02:
//PRE_CHARGER
PWM_IO=0;
JM=1;
FAN=0;
LED_GREEN=1;
LED_RED=1;
//-----------------------------------------//overtime
if(T_Mode!
=chargermode)
{
T_Mode=chargermode;
ChargingTimeValue=TIM_PRE;
StartTimeFlg=1;
ChargingT_OverFlg=0;
}
if(ChargingT_OverFlg==1)
{
PWM_IO=0;
JM=0;
chargermode=0x05;//error
break;
}
//----------低压,过压,过流,短路
ToPretect();
//----------BMSovertemp
adcvalue=ADCStart(BT_SAMP);//Btemp
if(((adcvalue>0xd7)||(adcvalue==0xd7))||((adcvalue<0x7f)||(adcvalue==0x7f)))
{
PWM_IO=0;
JM=0;
chargermode=0x05;//error
break;
}
//----------pretoNormal
adcvalue=ADCStart(V_SAMP);//voltage
if(adcvalue>PRE_CHARGER)//>30V
{
PWM_IO=1;
chargermode=0x03;//normal
break;
}
//------------------------------batteryremove
adcvalue=ADCStart(BT_SAMP);//batteryNTC
if(adcvalue>=N20C_NTC)//nontc
{
PWM_IO=0;
JM=0;
chargermode=0x05;//standby
break;
}
//---------------
adcvalue=ADCStart(V_SAMP);//voltage
if(adcvalue<=0x16)//5V
{
adcvalue=ADCStart(C_SAMP);//current
if(adcvalue>20)
{
JM=0;
PWM_IO=0;
chargermode=0x05;//error
break;
}
}
break;
case0x03:
//CC+CV
PWM_IO=1;
JM=1;
FAN=1;
LED_GREEN=1;
LED_RED=1;
//---------------------timer
if(T_Mode!
=chargermode)
{
T_Mode=chargermode;
ChargingTimeValue=TIM_NOML;
StartTimeFlg=1;
ChargingT_OverFlg=0;
}
if(ChargingT_OverFlg==1)
{
PWM_IO=0;
JM=0;
chargermode=0x05;//error
break;
}
//----------低压,过压,过流,短路
ToPretect();
//-----------------------------normaltoFULL
adcvalue=ADCStart(V_SAMP);//voltage
if(adcvalue>=FULL_DOWN_V)//>40V
{
adcvalue=ADCStart(C_SAMP);//current
if(adcvalue<=(FULL_CURRENT))//getFULL
{
chargermode=0x04;//full
break;
}
}
//----------BMSovertemp
adcvalue=ADCStart(BT_SAMP);//Btemp
//0度-0xc245度-0x6b
if(((adcvalue>0xdb)||(adcvalue==0xdb))||((adcvalue<0x82)||(adcvalue==0x82)))
{
PWM_IO=0;
JM=0;
chargermode=0x05;//error
break;
}
//------------------normaltopre
adcvalue=ADCStart(V_SAMP);//voltage
if(adcvalue<(PRE_CHARGER-10))//PRE
{
chargermode=0x02;//pre
break;
}
//------------------------------batteryremove
adcvalue=ADCStart(BT_SAMP);//batteryNTC
if(adcvalue>=N20C_NTC)//nontc
{
PWM_IO=0;
JM=0;
chargermode=0x05;//standby
break;
}
//---------------
adcvalue=ADCStart(V_SAMP);//voltage
if(adcvalue<=0x16)//5V
{
adcvalue=ADCStart(C_SAMP);//current
if(adcvalue>20)
{
JM=0;
PWM_IO=0;
chargermode=0x05;//error
break;
}
}
break;
case0x04:
//FULL_DOWN
T_Mode=chargermode;
ChargingTimeValue=0;//
StartTimeFlg=0;
ChargingT_OverFlg=0;
PWM_IO=0;
JM=0;
FAN=0;
LED_GREEN=1;
LED_RED=0;
DelayNms(1000);
adcvalue=ADCStart(V_SAMP);//voltage
if(adcvalue>OVER_VOLTAGE)//
{
PWM_IO=0;
JM=0;
chargermode=0x05;//error
break;
}
else
{
if(adcvalue<(LOW_VOLTAGE-20))
{
PWM_IO=0;
JM=0;
chargermode=0x01;//standby
break;
}
}
break;
case0x05:
//error
T_Mode=chargermode;
ChargingTimeValue=0;//
StartTimeFlg=0;
ChargingT_OverFlg=0;
PWM_IO=0;
JM=0;
FAN=0;
LED_GREEN=0;
LED_RED=1;
DelayNms(1000);
LED_GREEN=0;
LED_RED=0;
DelayNms(1000);
break;
default:
break;
}
}
}