diff options
author | Keith Packard <keithp@keithp.com> | 2013-10-13 22:05:20 -0700 |
---|---|---|
committer | Keith Packard <keithp@keithp.com> | 2013-10-13 22:05:20 -0700 |
commit | 1bd9786802751391cca3b83ac3045029e00e39ee (patch) | |
tree | d154e47d76517cb86eca380ad0dde7b22b322a57 /src/core/ao_microflight.c | |
parent | e0e98597887a970f31b33895adb77d35e06b34ff (diff) |
altos/micropeak: Increase boost detect to 30m
This meant increasing the data buffering as well so that we could
reliably capture the flight data back to the ground, even for slow
flights.
And, with the buffer extra large, we work backwards from the current
buffer location to find the last ground location rather than working
forwards from the first buffered location. This ensures that we don't
capture noise before boost and instead capture a nice flight curve instead.
Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'src/core/ao_microflight.c')
-rw-r--r-- | src/core/ao_microflight.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/src/core/ao_microflight.c b/src/core/ao_microflight.c index 714bb90a..f680e400 100644 --- a/src/core/ao_microflight.c +++ b/src/core/ao_microflight.c @@ -33,7 +33,7 @@ ao_microsample(void) ao_microkalman_correct(); } -#define NUM_PA_HIST 16 +#define NUM_PA_HIST (GROUND_AVG) #define SKIP_PA_HIST(i,j) (((i) + (j)) & (NUM_PA_HIST - 1)) @@ -60,11 +60,11 @@ ao_microflight(void) h = 0; for (;;) { time += SAMPLE_SLEEP; - if (sample_count == 0) + if ((sample_count & 0x1f) == 0) ao_led_on(AO_LED_REPORT); ao_delay_until(time); ao_microsample(); - if (sample_count == 0) + if ((sample_count & 0x1f) == 0) ao_led_off(AO_LED_REPORT); pa_hist[h] = pa; h = SKIP_PA_HIST(h,1); @@ -85,10 +85,10 @@ ao_microflight(void) } } - /* Go back and find the first sample a decent interval above the ground */ + /* Go back and find the last sample close to the ground */ pa_min = pa_ground - LAND_DETECT; - for (i = SKIP_PA_HIST(h,2); i != h; i = SKIP_PA_HIST(i,2)) { - if (pa_hist[i] < pa_min) + for (i = SKIP_PA_HIST(h,-2); i != SKIP_PA_HIST(h,2); i = SKIP_PA_HIST(i,-2)) { + if (pa_hist[i] >= pa_min) break; } |