#include "string.h" #include "fitbelt_init.h" #include "stdio.h" #include "battery_service.h" //#include "serv_adc.h" /* macro -------------------------------------------------------------*/ #define VDDA 4300 /* variables ---------------------------------------------------------*/ uint8_t Bat_Per; uint32_t bat_volt; uint32_t bat_adc_volt; uint32_t prev_bat_adc_volt=0; uint32_t charger_volt; uint32_t charger_adc_volt; uint32_t prev_charger_adc_volt=0; unsigned int battery_debounce_counter; void get_battery_voltage( void ); #define COUNT12BIT 4095 int_fast16_t status_bat_read; int_fast16_t status_charger_read; uint16_t g_batsamp; uint16_t g_chargervoltsamp; /** * @Function Name:read_battery_charger_voltage * @brief : Function to give battery status in % * @param IN :BatPer-->address for battery status variable * @param OUT:returns battery status * @retval : none */ //ADC_convert(BatteryVolt_ADC, &adcValue1); void read_battery_charger_voltage( void ) //To read the voltage input from battery and charger ADC. { ADC_Params params1,params2; ADC_Params_init(¶ms1); ADC_Params_init(¶ms2); BatteryVolt_ADC= ADC_open(Board_ADC1,¶ms1); status_bat_read=ADC_convert(BatteryVolt_ADC, &g_batsamp); Task_sleep(100); ADC_close(BatteryVolt_ADC); Task_sleep(100); ChargerVolt_ADC= ADC_open(Board_ADC3,¶ms2); Task_sleep(100); status_charger_read= ADC_convert(ChargerVolt_ADC, &g_chargervoltsamp); Task_sleep(100); //if( (status_bat_read == ADC_STATUS_SUCCESS ) || (status_charger_read == ADC_STATUS_SUCCESS ) ) { bat_adc_volt = prev_bat_adc_volt + ( ( VDDA / COUNT12BIT ) * ( g_batsamp ) ); //battery adc voltage prev_bat_adc_volt = bat_adc_volt; charger_adc_volt =prev_charger_adc_volt + ( ( VDDA / COUNT12BIT ) * ( g_chargervoltsamp ) ); //battery adc voltage prev_charger_adc_volt =charger_adc_volt; battery_debounce_counter++; } if( battery_debounce_counter ==BAT_DEBOUNCE_COUNT ) { //Battery percentage is calculated every 250ms avg is taken of total of 30*5*50 samples bat_adc_volt =bat_adc_volt /BAT_DEBOUNCE_COUNT; bat_volt =( ( bat_adc_volt ) * GAIN_BAT ); // Actual battery voltage Bat_Per =( uint8_t )( ( bat_volt*B_STAT_M ) - B_STAT_C ); //Battery percentage from battery voltage prev_bat_adc_volt =0; battery_debounce_counter =0; /*------For charger voltage reading--------------------------------*/ charger_adc_volt =charger_adc_volt /BAT_DEBOUNCE_COUNT; charger_volt =( ( charger_adc_volt ) * GAIN_BAT ); // Actual battery voltage // charger_volt =( charger_volt + DIODE_DROP ); //Add diode drop prev_charger_adc_volt =0; } ADC_close(ChargerVolt_ADC); }