altos: Switch all tick variables to AO_TICK_TYPE/AO_TICK_SIGNED
[fw/altos] / src / kernel / ao_microflight.c
index f7521f218cbb376b662c10bb82174a6ad1c75c58..3c6caf7bac7db7d0509e069df6c30b1c8d42632d 100644 (file)
@@ -3,7 +3,8 @@
  *
  * 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.
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
  *
  * This program is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -23,6 +24,7 @@
 
 uint32_t       pa;
 uint32_t       pa_ground;
+uint32_t       pa_ground_next;
 uint32_t       pa_min;
 
 static void
@@ -57,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 (;;) {
@@ -87,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