From 42a261a56606be69b5fb90fd6017c70a1e5d72dd Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Mon, 28 May 2018 16:10:51 -0700 Subject: [PATCH] altos/telelco-v2.0: Display local batt voltage at startup Show the battery voltage for a second at startup. Signed-off-by: Keith Packard --- src/telelco-v2.0/Makefile | 2 ++ src/telelco-v2.0/ao_lco_v2.c | 14 ++++++++++++++ src/telelco-v2.0/ao_pins.h | 36 +++++++++++++++++++++++++++++++++++ src/telelco-v2.0/ao_telelco.c | 2 ++ 4 files changed, 54 insertions(+) diff --git a/src/telelco-v2.0/Makefile b/src/telelco-v2.0/Makefile index 75c66abf..4871993d 100644 --- a/src/telelco-v2.0/Makefile +++ b/src/telelco-v2.0/Makefile @@ -50,6 +50,8 @@ ALTOS_SRC = \ ao_spi_stm.c \ ao_beep_stm.c \ ao_eeprom_stm.c \ + ao_adc_single_stm.c \ + ao_convert_volt.c \ ao_fast_timer.c \ ao_lcd_stm.c \ ao_usb_stm.c \ diff --git a/src/telelco-v2.0/ao_lco_v2.c b/src/telelco-v2.0/ao_lco_v2.c index 45895908..140955da 100644 --- a/src/telelco-v2.0/ao_lco_v2.c +++ b/src/telelco-v2.0/ao_lco_v2.c @@ -23,6 +23,7 @@ #include #include #include +#include #define DEBUG 1 @@ -625,6 +626,18 @@ ao_lco_arm_warn(void) } } +static void +ao_lco_batt_voltage(void) +{ + struct ao_adc packet; + int16_t decivolt; + + ao_adc_single_get(&packet); + decivolt = ao_battery_decivolt(packet.v_batt); + ao_lco_set_voltage(decivolt); + ao_delay(AO_MS_TO_TICKS(1000)); +} + static struct ao_task ao_lco_input_task; static struct ao_task ao_lco_monitor_task; static struct ao_task ao_lco_arm_warn_task; @@ -636,6 +649,7 @@ ao_lco_monitor(void) uint16_t delay; uint8_t box; + ao_lco_batt_voltage(); ao_lco_search(); ao_add_task(&ao_lco_input_task, ao_lco_input, "lco input"); ao_add_task(&ao_lco_arm_warn_task, ao_lco_arm_warn, "lco arm warn"); diff --git a/src/telelco-v2.0/ao_pins.h b/src/telelco-v2.0/ao_pins.h index 73ce9d6c..4311bac8 100644 --- a/src/telelco-v2.0/ao_pins.h +++ b/src/telelco-v2.0/ao_pins.h @@ -357,4 +357,40 @@ #define AO_BUTTON_8_PORT &stm_gpioe #define AO_BUTTON_8 13 +/* ADC */ + +struct ao_adc { + int16_t v_batt; +}; + +#define AO_ADC_DUMP(p) \ + printf("batt: %5d\n", p.v_batt) + +#define HAS_ADC_TEMP 0 +#define HAS_BATTERY_REPORT 1 + +#define AO_ADC_V_BATT 0 +#define AO_ADC_V_BATT_PORT (&stm_gpioa) +#define AO_ADC_V_BATT_PIN 0 + +#define AO_ADC_RCC_AHBENR (1 << STM_RCC_AHBENR_GPIOAEN) + +#define AO_ADC_PIN0_PORT AO_ADC_V_BATT_PORT +#define AO_ADC_PIN0_PIN AO_ADC_V_BATT_PIN + +#define AO_ADC_SQ1 AO_ADC_V_BATT + +#define AO_NUM_ADC 1 + +/* + * Voltage divider on ADC battery sampler + */ +#define AO_BATTERY_DIV_PLUS 15 /* 15k */ +#define AO_BATTERY_DIV_MINUS 27 /* 27k */ + +/* + * ADC reference in decivolts + */ +#define AO_ADC_REFERENCE_DV 33 + #endif /* _AO_PINS_H_ */ diff --git a/src/telelco-v2.0/ao_telelco.c b/src/telelco-v2.0/ao_telelco.c index 7b04d386..9693c657 100644 --- a/src/telelco-v2.0/ao_telelco.c +++ b/src/telelco-v2.0/ao_telelco.c @@ -30,6 +30,7 @@ #include #include #include +#include int main(void) @@ -45,6 +46,7 @@ main(void) ao_spi_init(); ao_dma_init(); ao_exti_init(); + ao_adc_single_init(); ao_beep_init(); ao_cmd_init(); -- 2.30.2