From e2e3038c627ea7460915cdd535cb91301af614a7 Mon Sep 17 00:00:00 2001 From: Lars-Dominik Braun Date: Thu, 26 Feb 2015 14:39:30 +0100 Subject: accel: Stop polling Use freefall interrupts instead. This drop the fancy horizon/shake detection algorithms, but it works surprisingly well and is way more energy-efficient. Shake detection is a little too sensitive imo and horizon detection needs some tweaking too. --- ui.c | 18 +++--------------- 1 file changed, 3 insertions(+), 15 deletions(-) (limited to 'ui.c') diff --git a/ui.c b/ui.c index 0d95751..f9e478d 100644 --- a/ui.c +++ b/ui.c @@ -461,21 +461,10 @@ void uiLoop () { accelStart (); pwmSet (1, PWM_OFF); - /* make sure data is read even when missing the first interrupt (i.e. - * reboot) */ - enableWakeup (WAKE_ACCEL); - enableWakeup (WAKE_GYRO); - while (1) { processSensors (); - horizon newh = accelGetHorizon (); - if (newh != h) { - horizonChanged = true; - } else { - horizonChanged = false; - } - h = newh; + h = accelGetHorizon (&horizonChanged); switch (mode) { case UIMODE_INIT: @@ -514,12 +503,11 @@ void uiLoop () { sleepwhile (wakeup == 0); #if 0 - printf ("t=%i, h=%i, s=%i\n", gyroGetZTicks (), accelGetHorizon (), + printf ("t=%i, h=%i, s=%i\n", gyroGetZTicks (), h, accelGetShakeCount ()); const int32_t gyroval = gyroGetZAccum (); const int16_t gyroraw = gyroGetZRaw (); - const int8_t accelval = accelGetZ (); - printf ("%li - %i - %i\n", gyroval, gyroraw, accelval); + printf ("%li - %i\n", gyroval, gyroraw); #endif } -- cgit v1.2.3