summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2018-05-28 16:10:51 -0700
committerKeith Packard <keithp@keithp.com>2018-05-28 16:10:51 -0700
commit42a261a56606be69b5fb90fd6017c70a1e5d72dd (patch)
tree3972d6fa826d8c74527e0a0d194aff4e2d908d5a
parent3fb27f0ab7163c96945a60fd406e5423552206a2 (diff)
altos/telelco-v2.0: Display local batt voltage at startup
Show the battery voltage for a second at startup. Signed-off-by: Keith Packard <keithp@keithp.com>
-rw-r--r--src/telelco-v2.0/Makefile2
-rw-r--r--src/telelco-v2.0/ao_lco_v2.c14
-rw-r--r--src/telelco-v2.0/ao_pins.h36
-rw-r--r--src/telelco-v2.0/ao_telelco.c2
4 files changed, 54 insertions, 0 deletions
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 <ao_quadrature.h>
#include <ao_lco_func.h>
#include <ao_radio_cmac.h>
+#include <ao_adc_single.h>
#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 <ao_lco_cmd.h>
#include <ao_radio_cmac_cmd.h>
#include <ao_eeprom.h>
+#include <ao_adc_single.h>
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();