aboutsummaryrefslogtreecommitdiffstats
path: root/klippy/mcu.py
diff options
context:
space:
mode:
authorKevin O'Connor <kevin@koconnor.net>2024-03-05 21:32:36 -0500
committerKevin O'Connor <kevin@koconnor.net>2024-03-13 21:44:32 -0400
commitd99d1a84631fb3840132c492bc32fd9579740d1e (patch)
treed80460c4a8c4be2acdbc8338606c518d599ef5c0 /klippy/mcu.py
parentbb512ef5d7cf746d4864cb4f4fbdcf91fbf7f832 (diff)
downloadkutter-d99d1a84631fb3840132c492bc32fd9579740d1e.tar.gz
kutter-d99d1a84631fb3840132c492bc32fd9579740d1e.tar.xz
kutter-d99d1a84631fb3840132c492bc32fd9579740d1e.zip
mcu: Write a warning to the log if an incorrect mcu frequency is detected
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Diffstat (limited to 'klippy/mcu.py')
-rw-r--r--klippy/mcu.py14
1 files changed, 14 insertions, 0 deletions
diff --git a/klippy/mcu.py b/klippy/mcu.py
index f9b547c9..afd0d75d 100644
--- a/klippy/mcu.py
+++ b/klippy/mcu.py
@@ -588,6 +588,7 @@ class MCU:
printer.register_event_handler("klippy:connect", self._connect)
printer.register_event_handler("klippy:shutdown", self._shutdown)
printer.register_event_handler("klippy:disconnect", self._disconnect)
+ printer.register_event_handler("klippy:ready", self._ready)
# Serial callbacks
def _handle_mcu_stats(self, params):
count = params['count']
@@ -799,6 +800,19 @@ class MCU:
self.register_response(self._handle_shutdown, 'shutdown')
self.register_response(self._handle_shutdown, 'is_shutdown')
self.register_response(self._handle_mcu_stats, 'stats')
+ def _ready(self):
+ if self.is_fileoutput():
+ return
+ # Check that reported mcu frequency is in range
+ mcu_freq = self._mcu_freq
+ systime = self._reactor.monotonic()
+ get_clock = self._clocksync.get_clock
+ calc_freq = get_clock(systime + 1) - get_clock(systime)
+ mcu_freq_mhz = int(mcu_freq / 1000000. + 0.5)
+ calc_freq_mhz = int(calc_freq / 1000000. + 0.5)
+ if mcu_freq_mhz != calc_freq_mhz:
+ logging.warn("MCU '%s' configured for %dMhz but running at %dMhz!",
+ self._name, mcu_freq_mhz, calc_freq_mhz)
# Config creation helpers
def setup_pin(self, pin_type, pin_params):
pcs = {'endstop': MCU_endstop,