From e9ea0ad4024532fd6f87bb6708bf76b0c7aa1c5b Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Mon, 29 Oct 2012 11:47:17 -0700 Subject: [PATCH] altos/micropeak: Switch to MS5607 sensor. Require 4m for boost. Elide dead code Signed-off-by: Keith Packard --- src/micropeak/Makefile | 13 +++++++++---- src/micropeak/ao_micropeak.c | 18 ++++++++++++------ src/micropeak/ao_pins.h | 2 +- 3 files changed, 22 insertions(+), 11 deletions(-) diff --git a/src/micropeak/Makefile b/src/micropeak/Makefile index e0b2b80d..8cf608bb 100644 --- a/src/micropeak/Makefile +++ b/src/micropeak/Makefile @@ -19,6 +19,13 @@ ifndef VERSION include ../Version endif +# Support for a logging EEPROM +# +#EEPROM_SRC=ao_async.c \ +# ao_i2c_attiny.c \ +# ao_at24c.c +# + ALTOS_SRC = \ ao_micropeak.c \ ao_spi_attiny.c \ @@ -27,13 +34,11 @@ ALTOS_SRC = \ ao_ms5607.c \ ao_exti.c \ ao_convert_pa.c \ - ao_i2c_attiny.c \ - ao_at24c.c \ ao_report_tiny.c \ - ao_async.c \ ao_notask.c \ ao_eeprom_tiny.c \ - ao_panic.c + ao_panic.c \ + $(EEPROM_SRC) INC=\ ao.h \ diff --git a/src/micropeak/ao_micropeak.c b/src/micropeak/ao_micropeak.c index 6ceec3b5..1d11300e 100644 --- a/src/micropeak/ao_micropeak.c +++ b/src/micropeak/ao_micropeak.c @@ -47,6 +47,12 @@ ao_pa_get(void) #define GROUND_AVG_SHIFT 4 #define GROUND_AVG (1 << GROUND_AVG_SHIFT) +/* Pressure change (in Pa) to detect boost */ +#define BOOST_DETECT 48 /* 4m at sea level, 4.8m at 2000m */ + +/* Pressure change (in Pa) to detect landing */ +#define LAND_DETECT 12 /* 1m at sea level, 1.2m at 2000m */ + static void ao_compute_height(void) { @@ -122,9 +128,9 @@ main(void) sample_count = 0; for (;;) { time += SAMPLE_SLEEP; - ao_delay_until(time); if (sample_count == 0) ao_led_on(AO_LED_BLUE); + ao_delay_until(time); ao_pa_get(); if (sample_count == 0) ao_led_off(AO_LED_BLUE); @@ -133,12 +139,11 @@ main(void) if (pa_diff < 0) pa_diff = -pa_diff; - /* about 2 meters at sea level, more if you're higher */ - if (pa_diff > (24 << FILTER_SHIFT)) + /* Check for a significant pressure change */ + if (pa_diff > (BOOST_DETECT << FILTER_SHIFT)) break; if (sample_count < GROUND_AVG * 2) { - ao_led_off(AO_LED_BLUE); if (sample_count < GROUND_AVG) pa_sum += pa; ++sample_count; @@ -178,8 +183,9 @@ main(void) if (sample_count == (GROUND_AVG - 1)) { pa_diff = pa_interval_max - pa_interval_min; - /* About 1m at sea level */ - if (pa_diff < (12 << FILTER_SHIFT)) + + /* Check to see if the pressure is now stable */ + if (pa_diff < (LAND_DETECT << FILTER_SHIFT)) break; sample_count = 0; pa_interval_min = pa_avg; diff --git a/src/micropeak/ao_pins.h b/src/micropeak/ao_pins.h index de9fc7f2..67de1a8e 100644 --- a/src/micropeak/ao_pins.h +++ b/src/micropeak/ao_pins.h @@ -29,7 +29,7 @@ #define HAS_SERIAL_1 0 #define HAS_TASK 0 #define HAS_MS5607 1 -#define HAS_MS5611 1 +#define HAS_MS5611 0 #define HAS_EEPROM 0 #define HAS_BEEP 0 #define AVR_CLOCK 8000000UL -- 2.30.2