0922-Percent_tracking_check(void)

mt_battery_100Percent_tracking_check(void)
{
	if(bat_vol_is_full)	//電池電壓滿
	{
		if(UI_SOC >= 100)
		{
			if(charging_is_full_reset_meter)	//三者都滿才正常
			{
				return TURE;
			}
			else
			{
				return FALSE;
			}
		}
		else
		{
			if(timer_counter >= 3)	//30s更新時返回正常
			{
				timer_counter = 1;
				UI_SOC++;
				return TURE;
			}
			else
			{
				retrurn FALSE;
			}
		}
	}
	else	//電池電壓不滿
	{
		if(UI_SOC >= 99)
		{
			UI_SOC = 99;
			return FALSE;
		}
	}
}
返回TURE只有兩種情況
1、只有當電池電壓滿且UI_SOC滿且充電滿
2、電池電壓電壓滿時UI_SOC未滿且到達30秒更新時間
其餘都會返回FALSE
mt_battery_0Percent_tracking_check(void)
{
	if(UI_SOC <= 0)
	{
		UI_SOC = 0;
	}
	else
	{
		UI_SOC--;
	}
	
	return TURE;
}
該函數永遠返回真
void mt_battery_nPercent_tracking_check()
{
	if(BMT_status.nPrecent_UI_SOC_check_point == 0)
	{
		return FALSE;
	}
	
	if(bat_vol_nPercent <= 15% && UI_SOC >= 15%)
	{
		if(time_counter == 2)
		{
			UI_SOC--;
			return TURE;
		}
		else
		{
			time_counter = 1;
			return FALSE;
		}
	}
	else if(bat_vol_nPercent >= 15% && UI_SOC == 15%)
	{
		return TURE;
	}
	else
	{
		return FALSE;
	}
}
當電池電壓到達15%時候,若電量高於15%,則需要用電壓等且等20s電量更新返回TURE,若果時間沒到20s,則返回FALSE
當電量先到15%,電池電壓大於15%時候返回TURE
其餘情況返回FALSE
sync_UI_percent_to_real();
{
	if(UI_SOC > SOC)	//耗電比較嚴重,上層的顯示要底層
	{
		if(time_60s_ok)	//防止跳躍過大
		{
			UI_SOC--;
		}
	}
	else				//充電
	{
		if(UI_SOC < SOC)
		{
			UI_SOC++;
		}
		else
		{
			UI_SOC = SOC;
		}
	}
}
該函數用於實現UI_SOC和SOC的同步
battery_update()
{
	//電池數據BTM_status;
	
	if(charger_exist)
	{
		if(battery_exist)
		{
			if(bat_vol < v_0percent_tracking)
			{
				status = mt_battery_0Percent_tracking_check();
			}
			else
			{
				status = mt_battery_100Percent_tracking_check();
			}
		}
		else
		{
			UI_SOC = 0;
		}
	}
	else
	{
			if(bat_vol < v_0percent_tracking)
			{
				status = mt_battery_0Percent_tracking_check();
			}
			else
			{
				status = mt_battery_nPercent_tracking_check();
			}		
	}
	
	if(status == TURE)
	{
		battery_meter_reset();
	}
	else
	{
		if(is_chargering || bat_full)
		{
			UI_SOC = 100;
		}
		else
		{
			sync_UI_percent_to_real();
		}
	}
}
1、可以看到整個電池數據更新的時候,必須先判斷charger是否存在,同時判斷電池是否存在,當充電器和電池同時存在時,若果電池電壓小於0check點的電壓時,做0check點的UI_SOC校準(UI_SOC--),否則,做100check點的校準(UI_SOC++)
2、當只有電池存在時候,若果電池電壓小於0check點的電壓時,做0check點的UI_SOC校準(UI_SOC--),否則做15%的check點的校準,具體來說,如果電池電壓先到15%且電量大於15%時候,20更新時間未到,則返回FALSE,20s時間到,返回當電量先到15%時候且電池電壓大於15%時候,返回TURE</span>
3、當check完成(0check/15%check/100check)後,根據返回的TURE和FALSE進入不同的處理,當返回FALSE且電池未充滿時候,同步更新底層SOC和上層顯示的UI_SOC
發佈了22 篇原創文章 · 獲贊 5 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章