fix interrupt locking
[protos/rc_servos.git] / main.c
diff --git a/main.c b/main.c
index e434690..923a8ea 100644 (file)
--- a/main.c
+++ b/main.c
@@ -173,16 +173,16 @@ static void poll_input_capture(void)
        if ((TIFR1 & _BV(ICF1)) == 0)
                return;
 
-       sei();
-       icp = ICR1;
        cli();
+       icp = ICR1;
+       sei();
 
        rising = TCCR1B & _BV(ICES1);
 
        /* change the edge type */
        TCCR1B ^= _BV(ICES1);
 
-       /* clear the flag */
+       /* clear the flag by writing a one */
        TIFR1 = TIFR1 | _BV(ICF1);
 
        diff = icp - icp_prev;