aboutsummaryrefslogtreecommitdiffstats
path: root/klippy/extras/pulse_counter.py
diff options
context:
space:
mode:
Diffstat (limited to 'klippy/extras/pulse_counter.py')
-rw-r--r--klippy/extras/pulse_counter.py35
1 files changed, 21 insertions, 14 deletions
diff --git a/klippy/extras/pulse_counter.py b/klippy/extras/pulse_counter.py
index a7587187..922398a6 100644
--- a/klippy/extras/pulse_counter.py
+++ b/klippy/extras/pulse_counter.py
@@ -4,14 +4,15 @@
#
# This file may be distributed under the terms of the GNU GPLv3 license.
+
class MCU_counter:
def __init__(self, printer, pin, sample_time, poll_time):
- ppins = printer.lookup_object('pins')
+ ppins = printer.lookup_object("pins")
pin_params = ppins.lookup_pin(pin, can_pullup=True)
- self._mcu = pin_params['chip']
+ self._mcu = pin_params["chip"]
self._oid = self._mcu.create_oid()
- self._pin = pin_params['pin']
- self._pullup = pin_params['pullup']
+ self._pin = pin_params["pin"]
+ self._pullup = pin_params["pullup"]
self._poll_time = poll_time
self._poll_ticks = 0
self._sample_time = sample_time
@@ -20,42 +21,48 @@ class MCU_counter:
self._mcu.register_config_callback(self.build_config)
def build_config(self):
- self._mcu.add_config_cmd("config_counter oid=%d pin=%s pull_up=%d"
- % (self._oid, self._pin, self._pullup))
+ self._mcu.add_config_cmd(
+ "config_counter oid=%d pin=%s pull_up=%d"
+ % (self._oid, self._pin, self._pullup)
+ )
clock = self._mcu.get_query_slot(self._oid)
self._poll_ticks = self._mcu.seconds_to_clock(self._poll_time)
sample_ticks = self._mcu.seconds_to_clock(self._sample_time)
self._mcu.add_config_cmd(
"query_counter oid=%d clock=%d poll_ticks=%d sample_ticks=%d"
- % (self._oid, clock, self._poll_ticks, sample_ticks), is_init=True)
- self._mcu.register_response(self._handle_counter_state,
- "counter_state", self._oid)
+ % (self._oid, clock, self._poll_ticks, sample_ticks),
+ is_init=True,
+ )
+ self._mcu.register_response(
+ self._handle_counter_state, "counter_state", self._oid
+ )
# Callback is called periodically every sample_time
def setup_callback(self, cb):
self._callback = cb
def _handle_counter_state(self, params):
- next_clock = self._mcu.clock32_to_clock64(params['next_clock'])
+ next_clock = self._mcu.clock32_to_clock64(params["next_clock"])
time = self._mcu.clock_to_print_time(next_clock - self._poll_ticks)
- count_clock = self._mcu.clock32_to_clock64(params['count_clock'])
+ count_clock = self._mcu.clock32_to_clock64(params["count_clock"])
count_time = self._mcu.clock_to_print_time(count_clock)
# handle 32-bit counter overflow
last_count = self._last_count
- delta_count = (params['count'] - last_count) & 0xffffffff
+ delta_count = (params["count"] - last_count) & 0xFFFFFFFF
count = last_count + delta_count
self._last_count = count
if self._callback is not None:
self._callback(time, count, count_time)
+
class FrequencyCounter:
def __init__(self, printer, pin, sample_time, poll_time):
self._callback = None
self._last_time = self._last_count = None
- self._freq = 0.
+ self._freq = 0.0
self._counter = MCU_counter(printer, pin, sample_time, poll_time)
self._counter.setup_callback(self._counter_callback)
@@ -70,7 +77,7 @@ class FrequencyCounter:
self._freq = delta_count / delta_time
else: # No counts since last sample
self._last_time = time
- self._freq = 0.
+ self._freq = 0.0
if self._callback is not None:
self._callback(time, self._freq)
self._last_count = count