aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlex Voinea <voinea.dragos.alexandru@gmail.com>2023-03-28 09:44:51 +0200
committerKevinOConnor <kevin@koconnor.net>2023-03-30 11:41:51 -0400
commitc9731a6fe2968b5c1364d8cb602b6e2230f9a4eb (patch)
treefe36812c534eea7333bf022c1b07b1f864790d5f
parent36e0afea2d7bd6243f58a4ae3b0a3a27551d5ecf (diff)
downloadkutter-c9731a6fe2968b5c1364d8cb602b6e2230f9a4eb.tar.gz
kutter-c9731a6fe2968b5c1364d8cb602b6e2230f9a4eb.tar.xz
kutter-c9731a6fe2968b5c1364d8cb602b6e2230f9a4eb.zip
tmc: DUMP_TMC optional REGISTER parameter
Add an optional REGISTER parameter to DUMP_TMC so that the output is more filtered/cleaner for manual TMC calibration. Signed-off-by: Alex Voinea <voinea.dragos.alexandru@gmail.com>
-rw-r--r--docs/G-Codes.md5
-rw-r--r--klippy/extras/tmc.py35
2 files changed, 28 insertions, 12 deletions
diff --git a/docs/G-Codes.md b/docs/G-Codes.md
index b28f8ab6..ea1f2d73 100644
--- a/docs/G-Codes.md
+++ b/docs/G-Codes.md
@@ -1219,8 +1219,9 @@ The following commands are available when any of the
are enabled.
#### DUMP_TMC
-`DUMP_TMC STEPPER=<name>`: This command will read the TMC driver
-registers and report their values.
+`DUMP_TMC STEPPER=<name>` [REGISTER=<name>]: This command will read all TMC
+driver registers and report their values. If a REGISTER is provided, only
+the specified register will be dumped.
#### INIT_TMC
`INIT_TMC STEPPER=<name>`: This command will initialize the TMC
diff --git a/klippy/extras/tmc.py b/klippy/extras/tmc.py
index 36c27d5c..10a15769 100644
--- a/klippy/extras/tmc.py
+++ b/klippy/extras/tmc.py
@@ -413,17 +413,32 @@ class TMCCommandHelper:
cmd_DUMP_TMC_help = "Read and display TMC stepper driver registers"
def cmd_DUMP_TMC(self, gcmd):
logging.info("DUMP_TMC %s", self.name)
- print_time = self.printer.lookup_object('toolhead').get_last_move_time()
- gcmd.respond_info("========== Write-only registers ==========")
- for reg_name, val in self.fields.registers.items():
- if reg_name not in self.read_registers:
+ reg_name = gcmd.get('REGISTER', None)
+ if reg_name is not None:
+ reg_name = reg_name.upper()
+ val = self.fields.registers.get(reg_name)
+ if (val is not None) and (reg_name not in self.read_registers):
+ # write-only register
+ gcmd.respond_info(self.fields.pretty_format(reg_name, val))
+ elif reg_name in self.read_registers:
+ # readable register
+ val = self.mcu_tmc.get_register(reg_name)
+ if self.read_translate is not None:
+ reg_name, val = self.read_translate(reg_name, val)
+ gcmd.respond_info(self.fields.pretty_format(reg_name, val))
+ else:
+ raise gcmd.error("Unknown register name '%s'" % (reg_name))
+ else:
+ gcmd.respond_info("========== Write-only registers ==========")
+ for reg_name, val in self.fields.registers.items():
+ if reg_name not in self.read_registers:
+ gcmd.respond_info(self.fields.pretty_format(reg_name, val))
+ gcmd.respond_info("========== Queried registers ==========")
+ for reg_name in self.read_registers:
+ val = self.mcu_tmc.get_register(reg_name)
+ if self.read_translate is not None:
+ reg_name, val = self.read_translate(reg_name, val)
gcmd.respond_info(self.fields.pretty_format(reg_name, val))
- gcmd.respond_info("========== Queried registers ==========")
- for reg_name in self.read_registers:
- val = self.mcu_tmc.get_register(reg_name)
- if self.read_translate is not None:
- reg_name, val = self.read_translate(reg_name, val)
- gcmd.respond_info(self.fields.pretty_format(reg_name, val))
######################################################################