Add atten to battery service

This commit is contained in:
Wizmo2
2021-05-13 19:53:55 -04:00
parent c7b1c7cd83
commit 2699216d25

View File

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