ZDBMS/output/Balance.lst

294 lines
15 KiB
Plaintext
Raw Normal View History

2025-02-19 06:13:28 +00:00
C51 COMPILER V9.01 BALANCE 02/19/2025 10:42:27 PAGE 1
2025-02-06 07:35:32 +00:00
C51 COMPILER V9.01, COMPILATION OF MODULE BALANCE
OBJECT MODULE PLACED IN .\output\Balance.obj
COMPILER INVOKED BY: D:\Tool\Keil\C51\BIN\C51.EXE code_drv\Balance.c LARGE OPTIMIZE(7,SIZE) REGFILE(.\output\MCUCore_Loa
-d.ORC) BROWSE INTVECTOR(0X1000) INCDIR(.\header_app;.\header_drv;.\code_gasguage;.\code_classb\iec60730_lib\include;.\co
-de_classb\iec60730_proc\Include;.\code_classb\config) DEBUG OBJECTEXTEND PRINT(.\output\Balance.lst) OBJECT(.\output\Bal
-ance.obj)
line level source
1 /********************************************************************************
2 Copyright (C), Sinowealth Electronic. Ltd.
3 Author: Sino
4 Version: V0.0
5 Date: 2020/04/26
6 History:
7 V2.0 2020/04/26 Preliminary
8 ********************************************************************************/
9 #include "Main.h"
10
11
12 BOOL bBalanceFlg;
13 BOOL bBalancingFlg;
14 BOOL bBalanceOddFlg;
15 BOOL bCTOValidFlg; //<2F><><EFBFBD><EFBFBD>оѹ<D0BE><EFBFBD><EEB3AC>1200mVʱ<56><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>ڶ<EFBFBD><DAB6>ߣ<EFBFBD><DFA3><EFBFBD>Ҫ
-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>о<EFBFBD><D0BE>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD>2V<32><56><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
16 BOOL bCellOpenDecFlag;
17 U16 xdata uiBalanceChannel;
18 U8 xdata ucBalanceTimeCnt;
19 U8 xdata ucBalanceStep;
20 U8 xdata ucCellOpenDecCnt;
21 U8 xdata ucCtoCnt;
22
23 /*************************************************************************************************
24 * <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: BalTurnOnCheck
25 * <20><> <20><>: <20><>
26 * <20><><EFBFBD><EFBFBD>ֵ: <20><>
27 * <20><> <20><>:
28 1. ƽ<><EFBFBD><E2BFAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǵ<EFBFBD>ѹ<EFBFBD><D1B9>ѹ<EFBFBD><EFBFBD><EEBCB0><EFBFBD><EFBFBD> ͬʱ<CDAC><CAB1><EFBFBD><EFBFBD>
29 2. ƽ<><C6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD>ٽ<EFBFBD><D9BD><EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
30 3. <20><><EFBFBD>߼<EFBFBD><DFBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ<EFBFBD><C6BD>
31 *************************************************************************************************/
32 void BalTurnOnCheck(void)
33 {
34 1 U8 i;
35 1
36 1 if(!bBalancingFlg && !bCellOpenDecFlag) //<2F><>һ<EFBFBD><D2BB>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD><D0BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߼<EFBFBD><DFBC><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>ж<EFBFBD><D0B6>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
-<2D><><EFBFBD>
37 1 {
38 2 if(bBAL_EN)
39 2 {
40 3 uiBalanceChannel = 0;
41 3 if(((uiCellVmax>E2uiOVvol)&&(!bOV)) //<2F><><EFBFBD><EFBFBD><EFBFBD>¶ȱ<C2B6><C8B1><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ<EFBFBD><C6BD>,<2C>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD>ѹ<EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>
-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹʱ<D6B9><CAB1>ͣƽ<CDA3><C6BD>
42 3 ||((uiCellVmax < E2uiOVRvol)&&(bOV))
43 3 || bOTC || bUTC || bOTD || bUTD)
44 3 {
45 4 bBalanceFlg = 0;
46 4 ucBalanceTimeCnt = 0;
47 4 }
48 3 else
49 3 {
2025-02-19 06:13:28 +00:00
C51 COMPILER V9.01 BALANCE 02/19/2025 10:42:27 PAGE 2
2025-02-06 07:35:32 +00:00
50 4 if(((uiCellVmax>E2uiBalanceVol) && (uiCellVmax-uiCellVmin)>=E2uiBalanceVolDiff) && (Info.slCurr>=E2
-siBalCurrent))
51 4 {
52 5 if(!bBalanceFlg)
53 5 {
54 6 ucBalanceTimeCnt++;
55 6 }
56 5 if(ucBalanceTimeCnt >= BAL_DELAY_CNT)
57 5 {
58 6 for(i=ucCellNumOffset; i<ucCellNumOffset+ucCellNum; i++)
59 6 {
60 7 if(((Info.uiVCell[i]-uiCellVmin)>=E2uiBalanceVolDiff)&&(Info.uiVCell[i]>=E2uiBalanceVol)) //<2F><>о
-<2D><>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD>оƽ<D0BE><C6BD>
61 7 {
62 8 uiBalanceChannel |= (1<<i);
63 8 }
64 7 }
65 6 bBalanceFlg = 1;
66 6 }
67 5 }
68 4 else
69 4 {
70 5 bBalanceFlg = 0;
71 5 ucBalanceTimeCnt = 0;
72 5 }
73 4 }
74 3 }
75 2 }
76 1 }
77
78
79
80 /*******************************************************************************
81 Function: CTOCheckVol(void)
82 Description:
83 Input:
84 Output:
85 Others:
86 *******************************************************************************/
87 BOOL CTOCheckVol(void)
88 {
89 1 BOOL bResult=0;
90 1
91 1 if(bCTO_EN) //<2F>ж<EFBFBD><D0B6>Ƿ<EFBFBD>֧<EFBFBD>ֶ<EFBFBD><D6B6>߼<EFBFBD><DFBC><EFBFBD>
92 1 {
93 2 if(!bCTO) //<2F><><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD><EFBFBD><E2B5BD><EFBFBD>ߣ<EFBFBD><DFA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ټ<EFBFBD><D9BC><EFBFBD>
94 2 {
95 3 if(bCTOValidFlg) //<2F>жϵ<D0B6>ѹѹ<D1B9><D1B9><EFBFBD>Ƿ񳬹<C7B7>1.2V
96 3 {
97 4 if(uiVadcVmin < VOL_CELL_CUT_180MV) //180mV
98 4 {
99 5 bResult = 1;
100 5 if(++ucCtoCnt >= TIME_50MS_500MS) //<2F><><EFBFBD><EFBFBD> 500mS
101 5 {
102 6 bCTO = 1;
103 6 }
104 5 }
105 4 else
106 4 {
107 5 bCTOValidFlg = 0;
108 5 ucCtoCnt = 0;
109 5 }
2025-02-19 06:13:28 +00:00
C51 COMPILER V9.01 BALANCE 02/19/2025 10:42:27 PAGE 3
2025-02-06 07:35:32 +00:00
110 4 }
111 3 }
112 2 #ifdef SP_CTO_RECOVER
else //<2F><><EFBFBD>߻ָ<DFBB><D6B8><EFBFBD><EFBFBD>ܣ<EFBFBD>ÿ250mSһ<53><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD>С<EFBFBD><D0A1>ѹ
{
if(uiVadcVmin >= VOL_CELL_CUT_180MV) //180mV
{
if(++ucCtoRCnt >= TIME_250MS_1S)
{
bCTO = 0;
}
}
else
{
ucCtoRCnt = 0;
}
}
#endif
128 2 }
129 1
130 1 return bResult;
131 1 }
132
133
134 /*************************************************************************************************
135 * <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: BalProcess
136 * <20><> <20><>: <20><>
137 * <20><><EFBFBD><EFBFBD>ֵ: <20><>
138 * <20><> <20><>:
139 1. ƽ<><C6BD><EFBFBD><EFBFBD><EFBFBD>ڷ<EFBFBD>Ϊ5<CEAA><35>STEP<45><50><EFBFBD>ϼ<EFBFBD>250mS
140 2. ƽ<><C6BD>Ч<EFBFBD><D0A7><100/(250mS*2)(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>żƽ<C5BC><C6BD>)
141 3. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2B5BD><EFBFBD>ߣ<EFBFBD><DFA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6>߼<EFBFBD><DFBC><EFBFBD>
142 4. ƽ<><EFBFBD><E2BFAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>ܻ<EFBFBD><DCBB><EFBFBD><EFBFBD><EFBFBD>ʱ250mS(һ<><D2BB>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
143 *************************************************************************************************/
144 void BalProcess(void)
145 {
146 1 U16 BalChTemp;
147 1
148 1 //<2F>жϵ<D0B6>о<EFBFBD><D0BE>ѹѹ<D1B9><D1B9><EFBFBD>Ƿ񳬹<C7B7>1.2V<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>ѹ<2V<32><56><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD><E1B4A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>
149 1 //<2F>жϵ<D0B6>о<EFBFBD><D0BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD>Ƿ<EFBFBD>С<EFBFBD><D0A1>1.38V<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><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<><D0B6><EFBFBD><EFBFBD><EFBFBD>
150 1 if((uiCellVmax-uiCellVmin>=VOL_CELL_CUT_1200MV) || (uiCellVmax<=VOL_CELL_CUT_1380MV))
151 1 {
152 2 bCTOValidFlg = 1;
153 2 }
154 1
155 1 switch(ucBalanceStep)
156 1 {
157 2 case BALANCE_ENABLE: //VADC<44>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD>ж<EFBFBD>
158 2 if(bCellOpenDecFlag || bBalanceFlg)
159 2 {
160 3 if(bBalanceOddFlg) //odd balance
161 3 {
162 4 BalChTemp = uiBalanceChannel&0x5555;
163 4 }
164 3 else //even balance
165 3 {
166 4 BalChTemp = uiBalanceChannel&0xAAAA;
167 4 }
168 3 AfeBalCtl(BalChTemp); //<2F><><EFBFBD><EFBFBD>ƽ<EFBFBD><C6BD>
169 3 ucBalanceStep = BALANCE_START;
170 3 bBalancingFlg = 1;
2025-02-19 06:13:28 +00:00
C51 COMPILER V9.01 BALANCE 02/19/2025 10:42:27 PAGE 4
2025-02-06 07:35:32 +00:00
171 3 }
172 2 break;
173 2
174 2 case BALANCE_START: //VADC<44>ɼ<EFBFBD><C9BC>ĵ<EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD>
175 2 ucBalanceStep = BALANCING;
176 2 break;
177 2
178 2 case BALANCING: //VADC<44>ɼ<EFBFBD><C9BC>ĵ<EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD><EFBFBD>ж϶<D0B6><CFB6><EFBFBD>
179 2 if(!CTOCheckVol()) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
180 2 {
181 3 AfeBalCtl(0); //<2F>ر<EFBFBD>ƽ<EFBFBD><C6BD>
182 3 ucBalanceStep = BALANCE_DISABLE;
183 3 bBalanceOddFlg = ~bBalanceOddFlg;
184 3 }
185 2 break;
186 2
187 2 case BALANCE_DISABLE: //VADC<44>ɼ<EFBFBD><C9BC>ĵ<EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD>
188 2 if(!CTOCheckVol()) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
189 2 {
190 3 ucBalanceStep = BALANCE_NULL;
191 3 }
192 2 else
193 2 {
194 3 ucBalanceStep = BALANCE_ENABLE;
195 3 bBalanceOddFlg = ~bBalanceOddFlg;
196 3 }
197 2 break;
198 2
199 2 case BALANCE_NULL: //VADC<44>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD>ж<EFBFBD>
200 2 ucBalanceStep = BALANCE_ENABLE;
201 2 bCellOpenDecFlag = 0;
202 2 bBalanceFlg = 0;
203 2 bBalancingFlg = 0;
204 2 break;
205 2 }
206 1 }
207
208
209 /*************************************************************************************************
210 * <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: CellOpenProcess
211 * <20><> <20><>: <20><>
212 * <20><><EFBFBD><EFBFBD>ֵ: <20><>
213 * <20><> <20><>: ÿ2S<32><53><EFBFBD><EFBFBD>һ<EFBFBD>ζ<EFBFBD><CEB6>߼<EFBFBD><DFBC><EFBFBD>
214 *************************************************************************************************/
215 void CTOTurnOnCheck(void)
216 {
217 1 #ifdef SP_CTO_RECOVER
if(bCTO_EN) //֧<>ֶ<EFBFBD><D6B6>߻ָ<DFBB>
#else
220 1 if(bCTO_EN && !bCTO) //<2F><><EFBFBD><EFBFBD><EFBFBD>ѷ<EFBFBD><D1B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>򲻼<EFBFBD><F2B2BBBC><EFBFBD>
221 1 #endif
222 1 {
223 2 if(++ucCellOpenDecCnt >= TIME_50MS_2250MS) //2S
224 2 {
225 3 ucCellOpenDecCnt = TIME_50MS_2250MS; //<2F><><EFBFBD><EFBFBD><EFBFBD>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD>ż<EFBFBD><C5BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ
226 3 if(!bBalancingFlg) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ<EFBFBD><EFBFBD><E2A3AC><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD><EFBFBD>ڽ<EFBFBD><DABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٿ<EFBFBD><D9BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߼<EFBFBD><DFBC><EFBFBD>
227 3 {
228 4 ucCellOpenDecCnt = 0;
229 4 bCellOpenDecFlag = 1;
230 4 uiBalanceChannel = 0x03ff;
231 4 }
232 3 }
2025-02-19 06:13:28 +00:00
C51 COMPILER V9.01 BALANCE 02/19/2025 10:42:27 PAGE 5
2025-02-06 07:35:32 +00:00
233 2 }
234 1 }
235
236 /*************************************************************************************************
237 * <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: BalanceProcess
238 * <20><> <20><>: <20><>
239 * <20><><EFBFBD><EFBFBD>ֵ: <20><>
240 * <20><> <20><>: ƽ<><C6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߼<EFBFBD><DFBC><EFBFBD><E2B4A6>
241 *************************************************************************************************/
242 void BalanceProcess(void)
243 {
244 1 BalTurnOnCheck(); //<2F><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>ƽ<EFBFBD><EFBFBD><E2BFAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
245 1
246 1 CTOTurnOnCheck(); //<2F><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߼<EFBFBD><DFBC><EFBFBD>
247 1
248 1 BalProcess(); //<2F><><EFBFBD><EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD>Ͷ<EFBFBD><CDB6><EFBFBD>ʱ<EFBFBD><CAB1>
249 1 }
250
251
252
253
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 611 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = 6 2
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = 5 1
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)