Used with KL25Z Freescale board to access the Avnet Wi-Go Battery charger
Diff: WiGo_BattCharger.cpp
- Revision:
- 2:f52adda183d2
- Parent:
- 1:4c20371cd5c2
--- a/WiGo_BattCharger.cpp Fri May 17 15:32:44 2013 +0000 +++ b/WiGo_BattCharger.cpp Fri May 17 20:13:01 2013 +0000 @@ -13,24 +13,23 @@ void WiGo_BattCharger::init( int n ) { - switch(n) - { + switch(n) { default: case 0: //100mA Charge _en1 = 0; _en2 = 0; break; - + case 1: //500mA _en1 = 0; _en2 = 1; break; - + case 2: //724mA _en1 = 1; _en2 = 0; break; - + case 3: //Suspend _en1 = 1; _en2 = 1; @@ -61,29 +60,54 @@ return _supplystate; } -void WiGo_BattCharger::LEDupdate( void ) +void WiGo_BattCharger::LEDupdate( int n ) { float batt_level; - sense_en(1); - batt_level = read(); - if( batt_level <= BATT_0 ) { - _battlow = BATT_LED_OFF; - _battmed = BATT_LED_OFF; - _battfull = BATT_LED_OFF; + + if( n == 1 ) { + sense_en(1); + batt_level = read(); + if( batt_level <= BATT_0 ) { + _battlow = BATT_LED_OFF; + _battmed = BATT_LED_OFF; + _battfull = BATT_LED_OFF; + } + if( batt_level > BATT_0 && batt_level <= 0.605 ) { + _battlow = BATT_LED_ON; + _battmed = BATT_LED_OFF; + _battfull = BATT_LED_OFF; + } + if( batt_level > 0.605 && batt_level <= BATT_100 ) { + _battlow = BATT_LED_ON; + _battmed = BATT_LED_ON; + _battfull = BATT_LED_OFF; + } + if( batt_level > BATT_100 ) { + _battlow = BATT_LED_ON; + _battmed = BATT_LED_ON; + _battfull = BATT_LED_ON; + } } - if( batt_level > BATT_0 && batt_level <= 0.605 ) { - _battlow = BATT_LED_ON; - _battmed = BATT_LED_OFF; - _battfull = BATT_LED_OFF; - } - if( batt_level > 0.605 && batt_level <= BATT_100 ) { - _battlow = BATT_LED_ON; - _battmed = BATT_LED_ON; - _battfull = BATT_LED_OFF; - } - if( batt_level > BATT_100 ) { - _battlow = BATT_LED_ON; - _battmed = BATT_LED_ON; - _battfull = BATT_LED_ON; + else + { + _battlow = BATT_LED_OFF; + _battmed = BATT_LED_OFF; + _battfull = BATT_LED_OFF; } } + +int WiGo_BattCharger::level( void ) +{ + float returnValue = 0; + float batt_level = read(); + + returnValue = ((batt_level - BATT_0) * (BATT_100 - BATT_0)) * 10000; + + if( returnValue > 100 ) + returnValue = 100; + + if( returnValue < 0 ) + returnValue = 0; + + return (int)returnValue; +}