diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/micropeak/Makefile | 13 | ||||
| -rw-r--r-- | src/micropeak/ao_micropeak.c | 18 | ||||
| -rw-r--r-- | 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 | 
