Browse Source

Add atten to battery service

Wizmo2 3 years ago
parent
commit
2699216d25
1 changed files with 4 additions and 2 deletions
  1. 4 2
      components/services/battery.c

+ 4 - 2
components/services/battery.c

@@ -32,12 +32,13 @@ static const char *TAG = "battery";
 static struct {
 	int channel;
 	float sum, avg, scale;
-	int count;
+	int count, attenuation;
 	int cells;
 	TimerHandle_t timer;
 } battery = {
 	.channel = CONFIG_BAT_CHANNEL,
 	.cells = 2,
+	.attenuation = ADC_ATTEN_DB_0,
 };	
 
 /****************************************************************************************
@@ -82,6 +83,7 @@ void battery_svc_init(void) {
 #ifndef CONFIG_BAT_LOCKED		
 		if ((p = strcasestr(nvs_item, "channel")) != NULL) battery.channel = atoi(strchr(p, '=') + 1);
 		if ((p = strcasestr(nvs_item, "scale")) != NULL) battery.scale = atof(strchr(p, '=') + 1);
+		if ((p = strcasestr(nvs_item, "atten")) != NULL) battery.attenuation = atoi(strchr(p, '=') + 1);
 #endif		
 		if ((p = strcasestr(nvs_item, "cells")) != NULL) battery.cells = atof(strchr(p, '=') + 1);		
 		free(nvs_item);
@@ -89,7 +91,7 @@ void battery_svc_init(void) {
 
 	if (battery.channel != -1) {
 		adc1_config_width(ADC_WIDTH_BIT_12);
-		adc1_config_channel_atten(battery.channel, ADC_ATTEN_DB_0);
+		adc1_config_channel_atten(battery.channel, battery.attenuation);
 
 		battery.avg = adc1_get_raw(battery.channel) * battery.scale / 4095.0;    
 		battery.timer = xTimerCreate("battery", BATTERY_TIMER / portTICK_RATE_MS, pdTRUE, NULL, battery_callback);