diff options
Diffstat (limited to 'src/micropeak/ao_micropeak.h')
| -rw-r--r-- | src/micropeak/ao_micropeak.h | 78 | 
1 files changed, 78 insertions, 0 deletions
diff --git a/src/micropeak/ao_micropeak.h b/src/micropeak/ao_micropeak.h new file mode 100644 index 00000000..382b98d9 --- /dev/null +++ b/src/micropeak/ao_micropeak.h @@ -0,0 +1,78 @@ +/* + * Copyright © 2012 Keith Packard <keithp@keithp.com> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + */ + +#ifndef _AO_MICROPEAK_H_ +#define _AO_MICROPEAK_H_ + +#define SAMPLE_SLEEP		AO_MS_TO_TICKS(96) + +/* 16 sample, or about two seconds worth */ +#define GROUND_AVG_SHIFT	4 +#define GROUND_AVG		(1 << GROUND_AVG_SHIFT) + +/* Pressure change (in Pa) to detect boost */ +#define BOOST_DETECT		120	/* 10m at sea level, 12m at 2000m */ + +/* Wait after power on before doing anything to give the user time to assemble the rocket */ +#define BOOST_DELAY		AO_SEC_TO_TICKS(30) + +/* Pressure change (in Pa) to detect landing */ +#define LAND_DETECT		24	/* 2m at sea level, 2.4m at 2000m */ + +/* Current sensor pressure value */ +extern uint32_t	pa; + +/* Average pressure value on ground */ +extern uint32_t	pa_ground; + +/* Minimum recorded filtered pressure value */ +extern uint32_t	pa_min; + +/* Pressure values converted to altitudes */ +extern alt_t	ground_alt, max_alt; + +/* max_alt - ground_alt */ +extern alt_t	ao_max_height; + +void +ao_pa_get(void); + +void +ao_microflight(void); + +#define ACCEL_LOCK_PA		-20 +#define ACCEL_LOCK_TIME		10 + +extern uint32_t	ao_k_pa;		/* 24.8 fixed point */ +extern int32_t	ao_k_pa_speed;		/* 16.16 fixed point */ +extern int32_t	ao_k_pa_accel;		/* 16.16 fixed point */ + +extern uint32_t	ao_pa;			/* integer portion */ +extern int16_t	ao_pa_speed;		/* integer portion */ +extern int16_t	ao_pa_accel;		/* integer portion */ + +void +ao_microkalman_init(void); + +void +ao_microkalman_predict(void); + +void +ao_microkalman_correct(void); +	 +#endif +  | 
