X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=blobdiff_plain;f=src%2Fcore%2Fao_microflight.c;h=f680e4005c98a5cf9be432ed61509f79d1239863;hp=714bb90a946b6dd9cee6d4b99dc9a5765b8115e5;hb=1bd9786802751391cca3b83ac3045029e00e39ee;hpb=690094e2d7d9cfe5eb4edb478fd79e5d133c6b4b 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; }