aboutsummaryrefslogtreecommitdiffstats
path: root/klippy/extras
diff options
context:
space:
mode:
authorAlex Voinea <voinea.dragos.alexandru@gmail.com>2023-03-16 13:11:34 +0100
committerKevinOConnor <kevin@koconnor.net>2023-03-20 10:58:25 -0400
commit73f4c6cd0077310ca748c13f5a7e223989cfe92d (patch)
treefafa055e589ccb4c1aa4a10ede746d5af92386a6 /klippy/extras
parent0469710a69b36960442ae1b067c6631b696d4dd1 (diff)
downloadkutter-73f4c6cd0077310ca748c13f5a7e223989cfe92d.tar.gz
kutter-73f4c6cd0077310ca748c13f5a7e223989cfe92d.tar.xz
kutter-73f4c6cd0077310ca748c13f5a7e223989cfe92d.zip
tmc: SET_TMC_FIELD VELOCITY
Ability to specify `VELOCITY` as a parameter for SET_TMC_FIELD. Useful for configuring at runtime the TSTEP based fields of the driver. Signed-off-by: Alex Voinea <voinea.dragos.alexandru@gmail.com>
Diffstat (limited to 'klippy/extras')
-rw-r--r--klippy/extras/tmc.py13
-rw-r--r--klippy/extras/tmc2130.py8
-rw-r--r--klippy/extras/tmc2208.py3
-rw-r--r--klippy/extras/tmc2209.py3
-rw-r--r--klippy/extras/tmc2240.py3
-rw-r--r--klippy/extras/tmc2660.py2
-rw-r--r--klippy/extras/tmc5160.py3
-rw-r--r--klippy/extras/tmc_uart.py5
8 files changed, 32 insertions, 8 deletions
diff --git a/klippy/extras/tmc.py b/klippy/extras/tmc.py
index f9f2d150..36c27d5c 100644
--- a/klippy/extras/tmc.py
+++ b/klippy/extras/tmc.py
@@ -258,7 +258,18 @@ class TMCCommandHelper:
reg_name = self.fields.lookup_register(field_name, None)
if reg_name is None:
raise gcmd.error("Unknown field name '%s'" % (field_name,))
- value = gcmd.get_int('VALUE')
+ value = gcmd.get_int('VALUE', None)
+ velocity = gcmd.get_float('VELOCITY', None, minval=0.)
+ tmc_frequency = self.mcu_tmc.get_tmc_frequency()
+ if tmc_frequency is None and velocity is not None:
+ raise gcmd.error("VELOCITY parameter not supported by this driver")
+ if (value is None) == (velocity is None):
+ raise gcmd.error("Specify either VALUE or VELOCITY")
+ if velocity is not None:
+ step_dist = self.stepper.get_step_dist()
+ mres = self.fields.get_field("mres")
+ value = TMCtstepHelper(step_dist, mres, tmc_frequency,
+ velocity)
reg_val = self.fields.set_field(field_name, value)
print_time = self.printer.lookup_object('toolhead').get_last_move_time()
self.mcu_tmc.set_register(reg_name, reg_val, print_time)
diff --git a/klippy/extras/tmc2130.py b/klippy/extras/tmc2130.py
index c78b0431..62a9abbf 100644
--- a/klippy/extras/tmc2130.py
+++ b/klippy/extras/tmc2130.py
@@ -248,13 +248,14 @@ def lookup_tmc_spi_chain(config):
# Helper code for working with TMC devices via SPI
class MCU_TMC_SPI:
- def __init__(self, config, name_to_reg, fields):
+ def __init__(self, config, name_to_reg, fields, tmc_frequency):
self.printer = config.get_printer()
self.name = config.get_name().split()[-1]
self.tmc_spi, self.chain_pos = lookup_tmc_spi_chain(config)
self.mutex = self.tmc_spi.mutex
self.name_to_reg = name_to_reg
self.fields = fields
+ self.tmc_frequency = tmc_frequency
def get_fields(self):
return self.fields
def get_register(self, reg_name):
@@ -271,6 +272,8 @@ class MCU_TMC_SPI:
return
raise self.printer.command_error(
"Unable to write tmc spi '%s' register %s" % (self.name, reg_name))
+ def get_tmc_frequency(self):
+ return self.tmc_frequency
######################################################################
@@ -281,7 +284,8 @@ class TMC2130:
def __init__(self, config):
# Setup mcu communication
self.fields = tmc.FieldHelper(Fields, SignedFields, FieldFormatters)
- self.mcu_tmc = MCU_TMC_SPI(config, Registers, self.fields)
+ self.mcu_tmc = MCU_TMC_SPI(config, Registers, self.fields,
+ TMC_FREQUENCY)
# Allow virtual pins to be created
tmc.TMCVirtualPinHelper(config, self.mcu_tmc)
# Register commands
diff --git a/klippy/extras/tmc2208.py b/klippy/extras/tmc2208.py
index 7cea109e..bedf8092 100644
--- a/klippy/extras/tmc2208.py
+++ b/klippy/extras/tmc2208.py
@@ -186,7 +186,8 @@ class TMC2208:
def __init__(self, config):
# Setup mcu communication
self.fields = tmc.FieldHelper(Fields, SignedFields, FieldFormatters)
- self.mcu_tmc = tmc_uart.MCU_TMC_uart(config, Registers, self.fields)
+ self.mcu_tmc = tmc_uart.MCU_TMC_uart(config, Registers, self.fields, 0,
+ TMC_FREQUENCY)
self.fields.set_field("pdn_disable", True)
# Register commands
current_helper = tmc2130.TMCCurrentHelper(config, self.mcu_tmc)
diff --git a/klippy/extras/tmc2209.py b/klippy/extras/tmc2209.py
index 843b32aa..1afa280c 100644
--- a/klippy/extras/tmc2209.py
+++ b/klippy/extras/tmc2209.py
@@ -58,7 +58,8 @@ class TMC2209:
# Setup mcu communication
self.fields = tmc.FieldHelper(Fields, tmc2208.SignedFields,
FieldFormatters)
- self.mcu_tmc = tmc_uart.MCU_TMC_uart(config, Registers, self.fields, 3)
+ self.mcu_tmc = tmc_uart.MCU_TMC_uart(config, Registers, self.fields, 3,
+ TMC_FREQUENCY)
# Setup fields for UART
self.fields.set_field("pdn_disable", True)
self.fields.set_field("senddelay", 2) # Avoid tx errors on shared uart
diff --git a/klippy/extras/tmc2240.py b/klippy/extras/tmc2240.py
index f3ae9a57..1bc4c1ca 100644
--- a/klippy/extras/tmc2240.py
+++ b/klippy/extras/tmc2240.py
@@ -343,7 +343,8 @@ class TMC2240:
def __init__(self, config):
# Setup mcu communication
self.fields = tmc.FieldHelper(Fields, SignedFields, FieldFormatters)
- self.mcu_tmc = tmc2130.MCU_TMC_SPI(config, Registers, self.fields)
+ self.mcu_tmc = tmc2130.MCU_TMC_SPI(config, Registers, self.fields,
+ TMC_FREQUENCY)
# Allow virtual pins to be created
tmc.TMCVirtualPinHelper(config, self.mcu_tmc)
# Register commands
diff --git a/klippy/extras/tmc2660.py b/klippy/extras/tmc2660.py
index e873c608..dcffac75 100644
--- a/klippy/extras/tmc2660.py
+++ b/klippy/extras/tmc2660.py
@@ -221,6 +221,8 @@ class MCU_TMC2660_SPI:
msg = [((val >> 16) | reg) & 0xff, (val >> 8) & 0xff, val & 0xff]
with self.mutex:
self.spi.spi_send(msg, minclock)
+ def get_tmc_frequency(self):
+ return None
######################################################################
diff --git a/klippy/extras/tmc5160.py b/klippy/extras/tmc5160.py
index c62c1e8b..0e7acf60 100644
--- a/klippy/extras/tmc5160.py
+++ b/klippy/extras/tmc5160.py
@@ -316,7 +316,8 @@ class TMC5160:
def __init__(self, config):
# Setup mcu communication
self.fields = tmc.FieldHelper(Fields, SignedFields, FieldFormatters)
- self.mcu_tmc = tmc2130.MCU_TMC_SPI(config, Registers, self.fields)
+ self.mcu_tmc = tmc2130.MCU_TMC_SPI(config, Registers, self.fields,
+ TMC_FREQUENCY)
# Allow virtual pins to be created
tmc.TMCVirtualPinHelper(config, self.mcu_tmc)
# Register commands
diff --git a/klippy/extras/tmc_uart.py b/klippy/extras/tmc_uart.py
index fe51303e..4d5ec1d5 100644
--- a/klippy/extras/tmc_uart.py
+++ b/klippy/extras/tmc_uart.py
@@ -210,7 +210,7 @@ def lookup_tmc_uart_bitbang(config, max_addr):
# Helper code for communicating via TMC uart
class MCU_TMC_uart:
- def __init__(self, config, name_to_reg, fields, max_addr=0):
+ def __init__(self, config, name_to_reg, fields, max_addr, tmc_frequency):
self.printer = config.get_printer()
self.name = config.get_name().split()[-1]
self.name_to_reg = name_to_reg
@@ -219,6 +219,7 @@ class MCU_TMC_uart:
self.instance_id, self.addr, self.mcu_uart = lookup_tmc_uart_bitbang(
config, max_addr)
self.mutex = self.mcu_uart.mutex
+ self.tmc_frequency = tmc_frequency
def get_fields(self):
return self.fields
def _do_get_register(self, reg_name):
@@ -250,3 +251,5 @@ class MCU_TMC_uart:
return
raise self.printer.command_error(
"Unable to write tmc uart '%s' register %s" % (self.name, reg_name))
+ def get_tmc_frequency(self):
+ return self.tmc_frequency