#define ECHO_TIMEOUT (CLOCK_HZ/10) // 100 ms
#define MEASUREMENT_WAIT (2*ECHO_TIMEOUT)
-#define MEASUREMENT_SHIFT 2 // running avg (1 << M_SHIFT)
+#define MEASUREMENT_SHIFT 0 // running avg (1 << M_SHIFT)
#define N_TRIGGERS 3
#define N_SENSORS 12
#define distances (hold_regs+MB_N_HOLD_REGS_EEPROM+1)
#define free_bitmap (hold_regs[MB_N_HOLD_REGS_EEPROM+13])
#define err_bitmap (hold_regs[MB_N_HOLD_REGS_EEPROM+14])
+#define max_distances (hold_regs+MB_N_HOLD_REGS_EEPROM+21)
static void pull_trigger(uint8_t trig)
{
to_start &= ~mask;
to_measure |= mask;
} else if ((to_measure & mask) && !(bits & mask)) {
- uint16_t old_d, new_d;
+#if MEASUREMENT_SHIFT > 0
+ uint16_t old_d;
+#endif
+ uint16_t new_d;
uint8_t idx = trig*N_TRIG_SENSORS+i;
// echo end
to_measure &= ~mask;
new_d = now - starttimes[i];
+ if (new_d > max_distances[idx])
+ max_distances[idx] = new_d;
+
+#if MEASUREMENT_SHIFT > 0
old_d = distances[idx];
if (old_d == 0
- old_d
) >> MEASUREMENT_SHIFT;
}
+#else
+ distances[idx] = new_d;
+#endif
}
}
}