summaryrefslogtreecommitdiff
path: root/digital/mimot
diff options
context:
space:
mode:
authorNicolas Schodet2011-05-08 12:34:13 +0200
committerNicolas Schodet2011-05-08 12:34:13 +0200
commitfd2feb1325a6899fa20fd9996e22d22205c01f85 (patch)
treef480449044d57e9d94882037bc4991ca6b71a5cb /digital/mimot
parent446fde10b087cead3bf59810947ff495116d737b (diff)
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.
Diffstat (limited to 'digital/mimot')
-rw-r--r--digital/mimot/src/dirty/counter_ext.avr.c2
1 files changed, 2 insertions, 0 deletions
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