summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/core/ao_microflight.c12
-rw-r--r--src/product/ao_micropeak.h6
2 files changed, 9 insertions, 9 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;
}
diff --git a/src/product/ao_micropeak.h b/src/product/ao_micropeak.h
index 3e3dec15..0cefca6f 100644
--- a/src/product/ao_micropeak.h
+++ b/src/product/ao_micropeak.h
@@ -20,12 +20,12 @@
#define SAMPLE_SLEEP AO_MS_TO_TICKS(96)
-/* 16 sample, or about two seconds worth */
-#define GROUND_AVG_SHIFT 4
+/* 64 sample, or about six seconds worth */
+#define GROUND_AVG_SHIFT 6
#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 */
+#define BOOST_DETECT 360 /* 30m at sea level, 36m 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(60)