📄 analog_8c-source.html
字号:
<a name="l00247"></a>00247 <a name="l00248"></a>00248 <span class="keywordflow">return</span> temp;<a name="l00249"></a>00249 }<a name="l00250"></a>00250 <a name="l00251"></a>00251 <a name="l00252"></a><a class="code" href="analog_8h.html#3c8244d2ebbad343ccdb735d6da81fcf">00252</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="analog_8c.html#3c8244d2ebbad343ccdb735d6da81fcf">AtRateTTE</a>(<span class="keywordtype">void</span>) <span class="comment">// cmd = 6</span><a name="l00253"></a>00253 {<a name="l00254"></a>00254 <span class="keywordtype">signed</span> <span class="keywordtype">long</span> calc;<a name="l00255"></a>00255 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> temp = (<span class="keywordtype">unsigned</span> int)<a class="code" href="bootldr_8h.html#577088f1d553884a9efe4d128010f081">SMBvar_int</a>[<a class="code" href="bootldr_8h.html#a1524e950b31cc765e9520a57e6fa3df">SMBV_AtRate</a>];<a name="l00256"></a>00256 <a name="l00257"></a>00257 <span class="keywordflow">if</span>((<span class="keywordtype">signed</span> <span class="keywordtype">int</span>) temp < 0) <span class="comment">//For TTE, AtRate must be NEGATIVE & NON-ZERO.</span><a name="l00258"></a>00258 {<a name="l00259"></a>00259 temp = -((<span class="keywordtype">signed</span> int) temp);<a name="l00260"></a>00260 <a name="l00261"></a>00261 <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</span><a name="l00262"></a>00262 {<a name="l00263"></a>00263 calc = <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 now in uWmins</span><a name="l00264"></a>00264 calc = calc / 10000; <span class="comment">//this is now in 10mWmins</span><a name="l00265"></a>00265 temp = calc / temp; <span class="comment">// (10mWmins / 10mW) = mins</span><a name="l00266"></a>00266 }<a name="l00267"></a>00267 <span class="keywordflow">else</span> <span class="comment">//use mA in calculations</span><a name="l00268"></a>00268 {<a name="l00269"></a>00269 calc = <a class="code" href="analog_8c.html#f1722fe2bd2d29efe386f8c760effa44">GetCharge_mAmins</a>();<a name="l00270"></a>00270 temp = calc / temp; <span class="comment">// (mAmins / mA) = mins</span><a name="l00271"></a>00271 }<a name="l00272"></a>00272 }<a name="l00273"></a>00273 <span class="keywordflow">else</span> <span class="comment">//error</span><a name="l00274"></a>00274 temp = 65535;<a name="l00275"></a>00275 <a name="l00276"></a>00276 <span class="keywordflow">return</span> temp;<a name="l00277"></a>00277 }<a name="l00278"></a>00278 <a name="l00279"></a>00279 <a name="l00280"></a><a class="code" href="analog_8h.html#06c4f2e3d2986433c675adeea96707cf">00280</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="analog_8c.html#06c4f2e3d2986433c675adeea96707cf">AtRateOK</a>(<span class="keywordtype">void</span>) <span class="comment">// cmd = 7</span><a name="l00281"></a>00281 {<a name="l00282"></a>00282 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> calc; <span class="comment">//used as available capacity</span><a name="l00283"></a>00283 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> temp = (<span class="keywordtype">unsigned</span> int)<a class="code" href="bootldr_8h.html#577088f1d553884a9efe4d128010f081">SMBvar_int</a>[<a class="code" href="bootldr_8h.html#a1524e950b31cc765e9520a57e6fa3df">SMBV_AtRate</a>]; <span class="comment">//used as total rate of consumption</span><a name="l00284"></a>00284 <a name="l00285"></a>00285 <span class="keywordflow">if</span>((<span class="keywordtype">signed</span> <span class="keywordtype">int</span>) temp < 0) <span class="comment">//For AtRateOK, AtRate must be NEGATIVE & NON-ZERO.</span><a name="l00286"></a>00286 {<a name="l00287"></a>00287 temp = -((<span class="keywordtype">signed</span> int) temp);<a name="l00288"></a>00288 <a name="l00289"></a>00289 <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="l00290"></a>00290 {<a name="l00291"></a>00291 calc = <a class="code" href="analog_8c.html#d4163799d5840557b35dc6da99c3daf5">Current1Sec</a>() * <a class="code" href="analog_8c.html#a11443421116209f2df8cb070059ccc3">GetVoltage</a>(); <span class="comment">//in uW (alternate: can use PACK_MINV)</span><a name="l00292"></a>00292 calc = calc / 10000; <span class="comment">//in 10mW</span><a name="l00293"></a>00293 temp += calc; <span class="comment">//combine AtRate and present load; shouldn't overflow!</span><a name="l00294"></a>00294 <a name="l00295"></a>00295 calc = <a class="code" href="analog_8c.html#f1722fe2bd2d29efe386f8c760effa44">GetCharge_mAmins</a>();<a name="l00296"></a>00296 calc = calc * <a class="code" href="pack_8h.html#060b1515ea1272dfdba0a8af7874c585">PACK_MINV</a>;<a name="l00297"></a>00297 calc = calc * 6; <span class="comment">//this is now in mW-10Secs</span><a name="l00298"></a>00298 calc = calc / 10; <span class="comment">//this is now in 10mW-10Secs</span><a name="l00299"></a>00299 }<a name="l00300"></a>00300 <span class="keywordflow">else</span> <span class="comment">//use mA in calculations</span><a name="l00301"></a>00301 {<a name="l00302"></a>00302 temp += <a class="code" href="analog_8c.html#d4163799d5840557b35dc6da99c3daf5">Current1Sec</a>(); <span class="comment">//add in the present discharge rate too!</span><a name="l00303"></a>00303 calc = <a class="code" href="analog_8c.html#f1722fe2bd2d29efe386f8c760effa44">GetCharge_mAmins</a>() * 6; <span class="comment">//convert to 10-second rate</span><a name="l00304"></a>00304 }<a name="l00305"></a>00305 <a name="l00306"></a>00306 <span class="keywordflow">if</span>(calc > temp)<a name="l00307"></a>00307 temp = 65535; <span class="comment">//return TRUE, as there is enough energy.</span><a name="l00308"></a>00308 <span class="keywordflow">else</span><a name="l00309"></a>00309 temp = 0; <span class="comment">//return FALSE. We're almost dead!</span><a name="l00310"></a>00310 }<a name="l00311"></a>00311 <span class="keywordflow">else</span> <span class="comment">//error</span><a name="l00312"></a>00312 temp = 65535;<a name="l00313"></a>00313 <a name="l00314"></a>00314 <span class="keywordflow">return</span> temp;<a name="l00315"></a>00315 }<a name="l00316"></a>00316 <a name="l00317"></a>00317 <a name="l00318"></a><a class="code" href="analog_8h.html#ede1495ee5c44a7241d4d4cc6523c20f">00318</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="analog_8c.html#ede1495ee5c44a7241d4d4cc6523c20f">GetTemperature</a>(<span class="keywordtype">void</span>) <span class="comment">// cmd = 8</span><a name="l00319"></a>00319 { <span class="comment">// Returns temperature of MEGA406, in 0.1 degrees Kelvin.</span><a name="l00320"></a>00320 <span class="keywordflow">return</span> <a class="code" href="analog_8c.html#5c282f62b6e03b02aa127a42394eb3b3">ReadTemperature</a>(0); <span class="comment">//channel 0 is the on-chip sensor.</span><a name="l00321"></a>00321 }<a name="l00322"></a>00322 <a name="l00323"></a>00323 <a name="l00324"></a>00324 <a name="l00325"></a><a class="code" href="analog_8h.html#ce470de6f31e679907a3955576ee852e">00325</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> <a class="code" href="analog_8c.html#ce470de6f31e679907a3955576ee852e">RelativeSOC</a>(<span class="keywordtype">void</span>) <span class="comment">// cmd = 13</span><a name="l00326"></a>00326 {<a name="l00327"></a>00327 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> charge = (<a class="code" href="analog_8h.html#a9c10ab1955850ea129fa85effe6a186">RunningAcc</a> * 100) / <a class="code" href="analog_8c.html#e4d5cdf56dbdf521edbff27852086419">MaxTopAcc</a>;<a name="l00328"></a>00328 <span class="comment">// return (unsigned int) charge;</span><a name="l00329"></a>00329 <span class="keywordflow">return</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>) charge;<a name="l00330"></a>00330 }<a name="l00331"></a>00331 <a name="l00332"></a>00332 <a name="l00333"></a><a class="code" href="analog_8h.html#7f04be2c2ed7c17db3824de3355d8435">00333</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="analog_8c.html#7f04be2c2ed7c17db3824de3355d8435">AbsoluteSOC</a>(<span class="keywordtype">void</span>) <span class="comment">// cmd = 14</span><a name="l00334"></a>00334 {<a name="l00335"></a>00335 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> charge = (<a class="code" href="analog_8c.html#eefe99d57b5c90295fb1be3c4f8453cc">GetCharge</a>() * 100);<a name="l00336"></a>00336 charge = charge / <a class="code" href="pack_8h.html#354d79dad6f137ecc73a52a87062984b">PACK_DESIGNCAPTYP</a>;<a name="l00337"></a>00337 <span class="keywordflow">return</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>) charge;<a name="l00338"></a>00338 }<a name="l00339"></a>00339 <a name="l00340"></a>00340 <a name="l00341"></a><a class="code" href="analog_8h.html#0fc39f9030957108d96813b8cbc1ea9f">00341</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="analog_8c.html#0fc39f9030957108d96813b8cbc1ea9f">RemainingCap</a>(<span class="keywordtype">void</span>) <span class="comment">// cmd = 15</span><a name="l00342"></a>00342 { <a name="l00343"></a>00343 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> calc;<a name="l00344"></a>00344 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> charge = <a class="code" href="analog_8c.html#eefe99d57b5c90295fb1be3c4f8453cc">GetCharge</a>(); <span class="comment">//in mAH</span><a name="l00345"></a>00345 <a name="l00346"></a>00346 <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="l00347"></a>00347 {<a name="l00348"></a>00348 calc = charge * <a class="code" href="analog_8c.html#a11443421116209f2df8cb070059ccc3">GetVoltage</a>(); <span class="comment">//in uWH</span><a name="l00349"></a>00349 charge = calc / 10000; <span class="comment">//in 10mWH</span><a name="l00350"></a>00350 }<a name="l00351"></a>00351 <a name="l00352"></a>00352 <span class="keywordflow">return</span> charge;<a name="l00353"></a>00353 }<a name="l00354"></a>00354 <a name="l00355"></a>00355 <a name="l00356"></a>00356 <a name="l00357"></a><a class="code" href="analog_8h.html#437c02cddab6b8e61788f439c91e5606">00357</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="analog_8c.html#437c02cddab6b8e61788f439c91e5606">FullChgCap</a>(<span class="keywordtype">void</span>) <span class="comment">//cmd = 16</span><a name="l00358"></a>00358 { <a name="l00359"></a>00359 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> calc = <a class="code" href="analog_8c.html#a91f15b9bf2780f2b7b066720b7f7166">GetMaxChg</a>();<a name="l00360"></a>00360 <a name="l00361"></a>00361 <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="l00362"></a>00362 {<a name="l00363"></a>00363 calc = calc * <a class="code" href="pack_8h.html#b700b50dd791836e9152b2ded282b10d">PACK_NOMINALV</a>;<a name="l00364"></a>00364 calc = calc / 10000;<a name="l00365"></a>00365 }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -