summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2012-04-07 18:55:53 -0700
committerKeith Packard <keithp@keithp.com>2012-04-07 18:55:53 -0700
commita41628c97e90770890cce1d6f580e92c1cad1a7f (patch)
treeec97c1b7ae16776ee5dd7eca1c56366401ebb02f /src
parent9b9357f48597a034211affb3f18fc6089816456d (diff)
altos: Add ADC support to megametrum firmware
Measures all MM igniter and battery voltages. Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'src')
-rw-r--r--src/megametrum-v0.1/Makefile3
-rw-r--r--src/megametrum-v0.1/ao_megametrum.c1
-rw-r--r--src/megametrum-v0.1/ao_pins.h82
3 files changed, 85 insertions, 1 deletions
diff --git a/src/megametrum-v0.1/Makefile b/src/megametrum-v0.1/Makefile
index fbcb4a57..71f4adf7 100644
--- a/src/megametrum-v0.1/Makefile
+++ b/src/megametrum-v0.1/Makefile
@@ -34,7 +34,8 @@ ALTOS_SRC = \
ao_freq.c \
ao_dma_stm.c \
ao_spi_stm.c \
- ao_ms5607.c
+ ao_ms5607.c \
+ ao_adc_stm.c
PRODUCT=MegaMetrum-v0.1
PRODUCT_DEF=-DMEGAMETRUM
diff --git a/src/megametrum-v0.1/ao_megametrum.c b/src/megametrum-v0.1/ao_megametrum.c
index 0d88f4c1..02fe91fe 100644
--- a/src/megametrum-v0.1/ao_megametrum.c
+++ b/src/megametrum-v0.1/ao_megametrum.c
@@ -32,6 +32,7 @@ main(void)
ao_dma_init();
ao_spi_init();
ao_ms5607_init();
+ ao_adc_init();
ao_start_scheduler();
return 0;
diff --git a/src/megametrum-v0.1/ao_pins.h b/src/megametrum-v0.1/ao_pins.h
index ee4510e6..803678b2 100644
--- a/src/megametrum-v0.1/ao_pins.h
+++ b/src/megametrum-v0.1/ao_pins.h
@@ -69,4 +69,86 @@
#define LEDS_AVAILABLE (AO_LED_RED | AO_LED_GREEN)
+#define HAS_ADC 1
+
+#define AO_ADC_RING 32
+#define AO_ADC_NUM_SENSE 6
+
+struct ao_adc {
+ uint16_t tick;
+ int16_t sense[AO_ADC_NUM_SENSE];
+ int16_t v_batt;
+ int16_t v_pbatt;
+ int16_t temp;
+};
+
+#define AO_ADC_SENSE_A 0
+#define AO_ADC_SENSE_A_PORT stm_gpioa
+#define AO_ADC_SENSE_A_PIN 0
+
+#define AO_ADC_SENSE_B 1
+#define AO_ADC_SENSE_B_PORT stm_gpioa
+#define AO_ADC_SENSE_B_PIN 1
+
+#define AO_ADC_SENSE_C 2
+#define AO_ADC_SENSE_C_PORT stm_gpioa
+#define AO_ADC_SENSE_C_PIN 2
+
+#define AO_ADC_SENSE_D 3
+#define AO_ADC_SENSE_D_PORT stm_gpioa
+#define AO_ADC_SENSE_D_PIN 3
+
+#define AO_ADC_SENSE_E 4
+#define AO_ADC_SENSE_E_PORT stm_gpioa
+#define AO_ADC_SENSE_E_PIN 4
+
+#define AO_ADC_SENSE_F 22
+#define AO_ADC_SENSE_F_PORT stm_gpioe
+#define AO_ADC_SENSE_F_PIN 7
+
+#define AO_ADC_V_BATT 8
+#define AO_ADC_V_BATT_PORT stm_gpiob
+#define AO_ADC_V_BATT_PIN 0
+
+#define AO_ADC_V_PBATT 9
+#define AO_ADC_V_PBATT_PORT stm_gpiob
+#define AO_ADC_V_PBATT_PIN 1
+
+#define AO_ADC_TEMP 16
+
+#define AO_ADC_RCC_AHBENR ((1 << STM_RCC_AHBENR_GPIOAEN) | \
+ (1 << STM_RCC_AHBENR_GPIOEEN) | \
+ (1 << STM_RCC_AHBENR_GPIOBEN))
+
+#define AO_NUM_ADC_PIN (AO_ADC_NUM_SENSE + 2)
+
+#define AO_ADC_PIN0_PORT AO_ADC_SENSE_A_PORT
+#define AO_ADC_PIN0_PIN AO_ADC_SENSE_A_PIN
+#define AO_ADC_PIN1_PORT AO_ADC_SENSE_B_PORT
+#define AO_ADC_PIN1_PIN AO_ADC_SENSE_B_PIN
+#define AO_ADC_PIN2_PORT AO_ADC_SENSE_C_PORT
+#define AO_ADC_PIN2_PIN AO_ADC_SENSE_C_PIN
+#define AO_ADC_PIN3_PORT AO_ADC_SENSE_D_PORT
+#define AO_ADC_PIN3_PIN AO_ADC_SENSE_D_PIN
+#define AO_ADC_PIN4_PORT AO_ADC_SENSE_E_PORT
+#define AO_ADC_PIN4_PIN AO_ADC_SENSE_E_PIN
+#define AO_ADC_PIN5_PORT AO_ADC_SENSE_F_PORT
+#define AO_ADC_PIN5_PIN AO_ADC_SENSE_F_PIN
+#define AO_ADC_PIN6_PORT AO_ADC_V_BATT_PORT
+#define AO_ADC_PIN6_PIN AO_ADC_V_BATT_PIN
+#define AO_ADC_PIN7_PORT AO_ADC_V_PBATT_PORT
+#define AO_ADC_PIN7_PIN AO_ADC_V_PBATT_PIN
+
+#define AO_NUM_ADC (AO_ADC_NUM_SENSE + 3)
+
+#define AO_ADC_SQ1 AO_ADC_SENSE_A
+#define AO_ADC_SQ2 AO_ADC_SENSE_B
+#define AO_ADC_SQ3 AO_ADC_SENSE_C
+#define AO_ADC_SQ4 AO_ADC_SENSE_D
+#define AO_ADC_SQ5 AO_ADC_SENSE_E
+#define AO_ADC_SQ6 AO_ADC_SENSE_F
+#define AO_ADC_SQ7 AO_ADC_V_BATT
+#define AO_ADC_SQ8 AO_ADC_V_PBATT
+#define AO_ADC_SQ9 AO_ADC_TEMP
+
#endif /* _AO_PINS_H_ */