From fd2feb1325a6899fa20fd9996e22d22205c01f85 Mon Sep 17 00:00:00 2001 From: Nicolas Schodet Date: Sun, 8 May 2011 12:34:13 +0200 Subject: digital/{asserv,mimot}: fix counter fix, see 05923d2e3433 If division is done after difference, then odd displacement are dropped. Mask unused bit so that difference is always even. --- digital/mimot/src/dirty/counter_ext.avr.c | 2 ++ 1 file changed, 2 insertions(+) (limited to 'digital/mimot/src') diff --git a/digital/mimot/src/dirty/counter_ext.avr.c b/digital/mimot/src/dirty/counter_ext.avr.c index e99d9dc0..bd004c25 100644 --- a/digital/mimot/src/dirty/counter_ext.avr.c +++ b/digital/mimot/src/dirty/counter_ext.avr.c @@ -150,6 +150,7 @@ counter_update (void) counter_update_step (); /* First auxiliary counter. */ uint16_t aux0 = counter_aux_new_step[0]; + aux0 &= 0xffff << COUNTER_AUX0_SHIFT; /* Reset unused bits. */ #if !COUNTER_AUX0_REVERSE counter_aux_diff[0] = (int16_t) (aux0 - counter_aux_old[0]); #else @@ -160,6 +161,7 @@ counter_update (void) counter_aux[0] += counter_aux_diff[0]; /* Second auxiliary counter. */ uint16_t aux1 = counter_aux_new_step[1]; + aux1 &= 0xffff << COUNTER_AUX1_SHIFT; /* Reset unused bits. */ #if !COUNTER_AUX1_REVERSE counter_aux_diff[1] = (int16_t) (aux1 - counter_aux_old[1]); #else -- cgit v1.2.3