📄 analog_8c-source.html
字号:
<a name="l00366"></a>00366 <a name="l00367"></a>00367 <span class="keywordflow">return</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>) calc;<a name="l00368"></a>00368 }<a name="l00369"></a>00369 <a name="l00370"></a>00370 <a name="l00371"></a>00371 <span class="comment">// Pass in 0 for 1-sec basis, 1 for 1-minute avg'd basis.</span><a name="l00372"></a><a class="code" href="analog_8h.html#7e505f93a95cd6f89b4fe51f95d8bab1">00372</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="analog_8c.html#7e505f93a95cd6f89b4fe51f95d8bab1">TimeToEmpty</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> avgd) <span class="comment">//cmd = 17,18; how many mins until battery is discharged at present rate</span><a name="l00373"></a>00373 {<a name="l00374"></a>00374 <span class="keywordtype">signed</span> <span class="keywordtype">int</span> rate;<a name="l00375"></a>00375 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> presentrate;<a name="l00376"></a>00376 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> cap;<a name="l00377"></a>00377 <a name="l00378"></a>00378 <span class="keywordflow">if</span>(0 == avgd)<a name="l00379"></a>00379 rate = <a class="code" href="analog_8c.html#d4163799d5840557b35dc6da99c3daf5">Current1Sec</a>();<a name="l00380"></a>00380 <span class="keywordflow">else</span><a name="l00381"></a>00381 rate = <a class="code" href="analog_8c.html#8058a1d9e4e05eeaf4c72ea275686398">CCarray_Average</a>();<a name="l00382"></a>00382 <a name="l00383"></a>00383 <span class="keywordflow">if</span>(rate >= 0)<a name="l00384"></a>00384 <span class="keywordflow">return</span> 65535;<a name="l00385"></a>00385 <a name="l00386"></a>00386 rate = -rate;<a name="l00387"></a>00387 <a name="l00388"></a>00388 <span class="keywordflow">if</span>(<a class="code" href="bootldr_8h.html#c7f9993307a3c3559f56d0353613de62">SMBvariables</a>[<a class="code" href="bootldr_8h.html#9b9498cc5b1927e9d63da15b33c851a4">SMBV_BattMode</a>][<a class="code" href="bootldr_8h.html#c1d4ce681b76fba522c9e4b1c9b08e43">hibyte</a>] & <a class="code" href="bootldr_8h.html#7444c17c928cb175b15b8ed2309a02eb">CAPACITY_MODE</a>) <span class="comment">//use mW in calculations</span><a name="l00389"></a>00389 {<a name="l00390"></a>00390 <span class="comment">//First, determine actual rate of Wattage being used.</span><a name="l00391"></a>00391 presentrate = rate * <a class="code" href="analog_8c.html#a11443421116209f2df8cb070059ccc3">GetVoltage</a>(); <span class="comment">//this is in uW scale</span><a name="l00392"></a>00392 <a name="l00393"></a>00393 <span class="comment">//Next, determine capacity at pack's minimum V (full discharge)</span><a name="l00394"></a>00394 cap = <a class="code" href="analog_8c.html#f1722fe2bd2d29efe386f8c760effa44">GetCharge_mAmins</a>() * <a class="code" href="pack_8h.html#060b1515ea1272dfdba0a8af7874c585">PACK_MINV</a>; <span class="comment">//this is in uWmins scale</span><a name="l00395"></a>00395 <a name="l00396"></a>00396 <span class="comment">//Divide uWmins by uW and you get minutes.</span><a name="l00397"></a>00397 cap = cap / presentrate;<a name="l00398"></a>00398 }<a name="l00399"></a>00399 <span class="keywordflow">else</span><a name="l00400"></a>00400 {<a name="l00401"></a>00401 cap = <a class="code" href="analog_8c.html#f1722fe2bd2d29efe386f8c760effa44">GetCharge_mAmins</a>() / rate; <span class="comment">// (mAmins / mA) = minutes</span><a name="l00402"></a>00402 }<a name="l00403"></a>00403 <a name="l00404"></a>00404 <span class="keywordflow">return</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>) cap;<a name="l00405"></a>00405 }<a name="l00406"></a>00406 <a name="l00407"></a>00407 <a name="l00408"></a>00408 <a name="l00409"></a>00409 <a name="l00410"></a><a class="code" href="analog_8h.html#954ee9167fde92c393ba9dc5d6561daf">00410</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="analog_8c.html#954ee9167fde92c393ba9dc5d6561daf">AvgTimeToFull</a>(<span class="keywordtype">void</span>) <span class="comment">//cmd = 19</span><a name="l00411"></a>00411 {<a name="l00412"></a>00412 <span class="keywordtype">signed</span> <span class="keywordtype">int</span> rate;<a name="l00413"></a>00413 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> presentrate;<a name="l00414"></a>00414 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> cap;<a name="l00415"></a>00415 <a name="l00416"></a>00416 rate = <a class="code" href="analog_8c.html#d4163799d5840557b35dc6da99c3daf5">Current1Sec</a>();<a name="l00417"></a>00417 <span class="keywordflow">if</span>(rate <= 0)<a name="l00418"></a>00418 <span class="keywordflow">return</span> 65535;<a name="l00419"></a>00419 <a name="l00420"></a>00420 <a name="l00421"></a>00421 <span class="keywordflow">if</span>(<a class="code" href="bootldr_8h.html#c7f9993307a3c3559f56d0353613de62">SMBvariables</a>[<a class="code" href="bootldr_8h.html#9b9498cc5b1927e9d63da15b33c851a4">SMBV_BattMode</a>][<a class="code" href="bootldr_8h.html#c1d4ce681b76fba522c9e4b1c9b08e43">hibyte</a>] & <a class="code" href="bootldr_8h.html#7444c17c928cb175b15b8ed2309a02eb">CAPACITY_MODE</a>) <span class="comment">//use mW in calculations</span><a name="l00422"></a>00422 {<a name="l00423"></a>00423 <span class="comment">//First, determine actual rate of Wattage being used.</span><a name="l00424"></a>00424 presentrate = rate * <a class="code" href="analog_8c.html#a11443421116209f2df8cb070059ccc3">GetVoltage</a>(); <span class="comment">//this is in uW scale</span><a name="l00425"></a>00425 <a name="l00426"></a>00426 <span class="comment">//Next, determine capacity at pack's minimum V (full discharge)</span><a name="l00427"></a>00427 cap = <a class="code" href="analog_8c.html#e0e293d14274192012679a5a00a8cc88">GetChgUntilFull_mAmins</a>() * <a class="code" href="pack_8h.html#060b1515ea1272dfdba0a8af7874c585">PACK_MINV</a>; <span class="comment">//this is in uWmins scale</span><a name="l00428"></a>00428 <a name="l00429"></a>00429 <span class="comment">//Divide uWmins by uW and you get minutes.</span><a name="l00430"></a>00430 cap = cap / presentrate;<a name="l00431"></a>00431 }<a name="l00432"></a>00432 <span class="keywordflow">else</span><a name="l00433"></a>00433 {<a name="l00434"></a>00434 cap = <a class="code" href="analog_8c.html#e0e293d14274192012679a5a00a8cc88">GetChgUntilFull_mAmins</a>() / rate; <span class="comment">// (mAmins / mA) = minutes</span><a name="l00435"></a>00435 }<a name="l00436"></a>00436 <a name="l00437"></a>00437 <span class="keywordflow">return</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>) cap;<a name="l00438"></a>00438 }<a name="l00439"></a>00439 <a name="l00440"></a>00440 <a name="l00441"></a>00441 <a name="l00442"></a>00442 <a name="l00443"></a>00443 <a name="l00444"></a>00444 <a name="l00445"></a>00445 <a name="l00446"></a>00446 <span class="comment">/* =====================================================================================</span><a name="l00447"></a>00447 <span class="comment"> =====================================================================================</span><a name="l00448"></a>00448 <span class="comment"> ===================================================================================== */</span><a name="l00449"></a>00449 <a name="l00450"></a>00450 <a name="l00451"></a>00451 <span class="comment">//Local 'helper' functions (not exposed in analog.h)</span><a name="l00452"></a>00452 <a name="l00453"></a>00453 <a name="l00456"></a><a class="code" href="analog_8c.html#65cbb0f3e8aa58b8abe45b1d9dd086a9">00456</a> <span class="preprocessor">#define FAST_RC_CAL (sig_array[0x01])</span><a name="l00457"></a><a class="code" href="analog_8c.html#a3510402ed0bea945bced29c323b2629">00457</a> <span class="preprocessor"></span><span class="preprocessor">#define SLOW_RC_LO_CAL (sig_array[0x06])</span><a name="l00458"></a><a class="code" href="analog_8c.html#6465f46ae12e83ee0ad16ca881463630">00458</a> <span class="preprocessor"></span><span class="preprocessor">#define SLOW_RC_HI_CAL (sig_array[0x07])</span><a name="l00459"></a><a class="code" href="analog_8c.html#3a272b9342915be2134fedbf9f936f05">00459</a> <span class="preprocessor"></span><span class="preprocessor">#define BG_C_CAL (sig_array[0x09])</span><a name="l00460"></a><a class="code" href="analog_8c.html#35d3af43d03665ff4f8e10b7dec063e0">00460</a> <span class="preprocessor"></span><span class="preprocessor">#define CELL1_LO_CAL (sig_array[0x10])</span><a name="l00461"></a><a class="code" href="analog_8c.html#6764c73d87c12e9099120b4c78921bfa">00461</a> <span class="preprocessor"></span><span class="preprocessor">#define CELL1_HI_CAL (sig_array[0x11])</span><a name="l00462"></a><a class="code" href="analog_8c.html#ba2c0c1972ea8403b31535edc971ad1b">00462</a> <span class="preprocessor"></span><span class="preprocessor">#define CELL2_LO_CAL (sig_array[0x12])</span><a name="l00463"></a><a class="code" href="analog_8c.html#ddf8efea77239b900f9e77aa8bf5b971">00463</a> <span class="preprocessor"></span><span class="preprocessor">#define CELL2_HI_CAL (sig_array[0x13])</span><a name="l00464"></a><a class="code" href="analog_8c.html#3445e8939cb1e02814aeedd3ac3356a1">00464</a> <span class="preprocessor"></span><span class="preprocessor">#define CELL3_LO_CAL (sig_array[0x14])</span><a name="l00465"></a><a class="code" href="analog_8c.html#6434808ec881415cf38902801e60d268">00465</a> <span class="preprocessor"></span><span class="preprocessor">#define CELL3_HI_CAL (sig_array[0x15])</span><a name="l00466"></a><a class="code" href="analog_8c.html#14923711cac81045c8e3ffe2dd8671ba">00466</a> <span class="preprocessor"></span><span class="preprocessor">#define CELL4_LO_CAL (sig_array[0x16])</span><a name="l00467"></a><a class="code" href="analog_8c.html#3fc7ced524333801057555f303d9ac82">00467</a> <span class="preprocessor"></span><span class="preprocessor">#define CELL4_HI_CAL (sig_array[0x17])</span><a name="l00468"></a><a class="code" href="analog_8c.html#3464253690e1bf7600cb4d71bf0a49d7">00468</a> <span class="preprocessor"></span><span class="preprocessor">#define ADC0_LO_CAL (sig_array[0x18]) // currently not used</span><a name="l00469"></a><a class="code" href="analog_8c.html#251cba556dcb04089223e853f8c21713">00469</a> <span class="preprocessor"></span><span class="preprocessor">#define ADC0_HI_CAL (sig_array[0x19]) // currently not used</span><a name="l00470"></a><a class="code" href="analog_8c.html#5df5677b296b630ab7b6fa8bffa71440">00470</a> <span class="preprocessor"></span><span class="preprocessor">#define VPTAT_LO_CAL (sig_array[0x1A])</span><a name="l00471"></a><a class="code" href="analog_8c.html#edbf97c9632981af1b47a0df57319b7a">00471</a> <span class="preprocessor"></span><span class="preprocessor">#define VPTAT_HI_CAL (sig_array[0x1B])</span><a name="l00472"></a>00472 <span class="preprocessor"></span><a name="l00473"></a>00473 <span class="comment">// Old defines (for rev.D), not fully compatible with new routines</span><a name="l00474"></a>00474 <span class="comment">/*</span><a name="l00475"></a>00475 <span class="comment">#define FAST_RC_CAL (sig_array[0x01])</span><a name="l00476"></a>00476 <span class="comment">#define SLOW_RC_CAL (sig_array[0x03])</span><a name="l00477"></a>00477 <span class="comment">#define BG_C_CAL (sig_array[0x09])</span><a name="l00478"></a>00478 <span class="comment">#define BG_R_CAL (sig_array[0x0B])</span><a name="l00479"></a>00479 <span class="comment">#define VPTAT_HI_CAL (sig_array[0x0D])</span><a name="l00480"></a>00480 <span class="comment">#define VPTAT_LO_CAL (sig_array[0x0F])</span><a name="l00481"></a>00481 <span class="comment">#define CELL1_CAL (sig_array[0x11])</span><a name="l00482"></a>00482 <span class="comment">#define CELL2_CAL (sig_array[0x13])</span><a name="l00483"></a>00483 <span class="comment">#define CELL3_CAL (sig_array[0x15])</span><a name="l00484"></a>00484 <span class="comment">#define CELL4_CAL (sig_array[0x17])</span><a name="l00485"></a>00485 <span class="comment">*/</span><a name="l00486"></a>00486
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -