diff options
Diffstat (limited to 'klippy/extras/pulse_counter.py')
-rw-r--r-- | klippy/extras/pulse_counter.py | 35 |
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 |