X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=blobdiff_plain;f=src%2Fkernel%2Fao_microflight.c;fp=src%2Fkernel%2Fao_microflight.c;h=bf994b8f80b647f1f56825053e1e0edb1e77e288;hp=f415420d6ea900015e220f894f5e0a0bdbf16e0d;hb=b140da92536d7c48ba37868f1c2afce7bb86dfdb;hpb=1d208c9509f03f7e2c913abe5c0dd78ef0083c0f diff --git a/src/kernel/ao_microflight.c b/src/kernel/ao_microflight.c index f415420d..bf994b8f 100644 --- a/src/kernel/ao_microflight.c +++ b/src/kernel/ao_microflight.c @@ -24,6 +24,7 @@ uint32_t pa; uint32_t pa_ground; +uint32_t pa_ground_next; uint32_t pa_min; static void @@ -45,7 +46,7 @@ ao_microflight(void) { int16_t sample_count; int16_t log_count; - uint16_t time; + AO_TICK_TYPE time; uint32_t pa_interval_min, pa_interval_max; int32_t pa_diff; uint8_t h; @@ -58,7 +59,7 @@ ao_microflight(void) time = ao_time(); ao_pa_get(); ao_microkalman_init(); - pa_ground = pa; + pa_ground_next = pa_ground = pa; sample_count = 0; h = 0; for (;;) { @@ -75,7 +76,7 @@ ao_microflight(void) #endif pa_hist[h] = pa; h = SKIP_PA_HIST(h,1); - pa_diff = pa_ground - ao_pa; + pa_diff = (int32_t) (pa_ground - ao_pa); #if BOOST_DETECT /* Check for a significant pressure change */ @@ -88,7 +89,8 @@ ao_microflight(void) pa_sum += pa; ++sample_count; } else { - pa_ground = pa_sum >> GROUND_AVG_SHIFT; + pa_ground = pa_ground_next; + pa_ground_next = pa_sum >> GROUND_AVG_SHIFT; pa_sum = 0; sample_count = 0; #if !BOOST_DETECT @@ -143,7 +145,7 @@ ao_microflight(void) pa_min = ao_pa; if (sample_count == (GROUND_AVG - 1)) { - pa_diff = pa_interval_max - pa_interval_min; + pa_diff = (int32_t) (pa_interval_max - pa_interval_min); /* Check to see if the pressure is now stable */ if (pa_diff < LAND_DETECT)