aboutsummaryrefslogtreecommitdiffstats
path: root/klippy/extras
diff options
context:
space:
mode:
authorKevin O'Connor <kevin@koconnor.net>2023-12-27 12:58:53 -0500
committerKevin O'Connor <kevin@koconnor.net>2024-01-19 11:55:15 -0500
commit2dc4cfc5df3bd2b3e040a73b86d59c7a3883fc7f (patch)
tree42a929667eb8d6d2b24f3c2f959f2d4839dc1bd6 /klippy/extras
parent266e96621c0133e1192bbaec5addb6bcf443a203 (diff)
downloadkutter-2dc4cfc5df3bd2b3e040a73b86d59c7a3883fc7f.tar.gz
kutter-2dc4cfc5df3bd2b3e040a73b86d59c7a3883fc7f.tar.xz
kutter-2dc4cfc5df3bd2b3e040a73b86d59c7a3883fc7f.zip
bulk_sensor: Don't assume chip_clock is zero on start of queries
Send an explicit clock query in ChipClockUpdater to seed the initial clock. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Diffstat (limited to 'klippy/extras')
-rw-r--r--klippy/extras/adxl345.py2
-rw-r--r--klippy/extras/bulk_sensor.py16
-rw-r--r--klippy/extras/lis2dw.py2
-rw-r--r--klippy/extras/mpu9250.py2
4 files changed, 13 insertions, 9 deletions
diff --git a/klippy/extras/adxl345.py b/klippy/extras/adxl345.py
index b91224d5..45d8369f 100644
--- a/klippy/extras/adxl345.py
+++ b/klippy/extras/adxl345.py
@@ -310,7 +310,7 @@ class ADXL345:
reqclock=reqclock)
logging.info("ADXL345 starting '%s' measurements", self.name)
# Initialize clock tracking
- self.clock_updater.note_start(reqclock)
+ self.clock_updater.note_start()
self.last_error_count = 0
def _finish_measurements(self):
# Halt bulk reading
diff --git a/klippy/extras/bulk_sensor.py b/klippy/extras/bulk_sensor.py
index df5a5da2..ad486bc4 100644
--- a/klippy/extras/bulk_sensor.py
+++ b/klippy/extras/bulk_sensor.py
@@ -222,15 +222,15 @@ class ChipClockUpdater:
return self.last_overflows
def clear_duration_filter(self):
self.max_query_duration = 1 << 31
- def note_start(self, reqclock):
+ def note_start(self):
self.last_sequence = 0
self.last_overflows = 0
- self.clock_sync.reset(reqclock, 0)
+ # Set initial clock
self.clear_duration_filter()
- self.update_clock(minclock=reqclock)
+ self.update_clock(is_reset=True)
self.clear_duration_filter()
- def update_clock(self, minclock=0):
- params = self.query_status_cmd.send([self.oid], minclock=minclock)
+ def update_clock(self, is_reset=False):
+ params = self.query_status_cmd.send([self.oid])
mcu_clock = self.mcu.clock32_to_clock64(params['clock'])
seq_diff = (params['next_sequence'] - self.last_sequence) & 0xffff
self.last_sequence += seq_diff
@@ -250,4 +250,8 @@ class ChipClockUpdater:
# inaccuracy of query responses and plus .5 for assumed offset
# of hardware processing time.
chip_clock = msg_count + 1
- self.clock_sync.update(mcu_clock + duration // 2, chip_clock)
+ avg_mcu_clock = mcu_clock + duration // 2
+ if is_reset:
+ self.clock_sync.reset(avg_mcu_clock, chip_clock)
+ else:
+ self.clock_sync.update(avg_mcu_clock, chip_clock)
diff --git a/klippy/extras/lis2dw.py b/klippy/extras/lis2dw.py
index 74911e6f..469a4f0d 100644
--- a/klippy/extras/lis2dw.py
+++ b/klippy/extras/lis2dw.py
@@ -162,7 +162,7 @@ class LIS2DW:
reqclock=reqclock)
logging.info("LIS2DW starting '%s' measurements", self.name)
# Initialize clock tracking
- self.clock_updater.note_start(reqclock)
+ self.clock_updater.note_start()
self.last_error_count = 0
def _finish_measurements(self):
# Halt bulk reading
diff --git a/klippy/extras/mpu9250.py b/klippy/extras/mpu9250.py
index 4626e1c0..421274ba 100644
--- a/klippy/extras/mpu9250.py
+++ b/klippy/extras/mpu9250.py
@@ -175,7 +175,7 @@ class MPU9250:
reqclock=reqclock)
logging.info("MPU9250 starting '%s' measurements", self.name)
# Initialize clock tracking
- self.clock_updater.note_start(reqclock)
+ self.clock_updater.note_start()
self.last_error_count = 0
def _finish_measurements(self):
# Halt bulk reading