aboutsummaryrefslogtreecommitdiffstats
path: root/klippy/extras/tmc2660.py
diff options
context:
space:
mode:
Diffstat (limited to 'klippy/extras/tmc2660.py')
-rw-r--r--klippy/extras/tmc2660.py15
1 files changed, 10 insertions, 5 deletions
diff --git a/klippy/extras/tmc2660.py b/klippy/extras/tmc2660.py
index cb9b6c86..87e63ec0 100644
--- a/klippy/extras/tmc2660.py
+++ b/klippy/extras/tmc2660.py
@@ -170,11 +170,13 @@ class TMC2660CurrentHelper:
def handle_printing(self, print_time):
print_time -= 0.100 # Schedule slightly before deadline
- self.set_current(print_time, self.current)
+ self.printer.get_reactor().register_callback(
+ (lambda ev: self.set_current(print_time, self.current)))
def handle_ready(self, print_time):
- self.set_current(print_time, (float(self.idle_current_percentage)
- * self.current / 100))
+ current = self.current * float(self.idle_current_percentage) / 100.
+ self.printer.get_reactor().register_callback(
+ (lambda ev: self.set_current(print_time, current)))
def set_current(self, print_time, current):
vsense, cs = self._calc_current(current)
@@ -204,6 +206,7 @@ class TMC2660CurrentHelper:
class MCU_TMC2660_SPI:
def __init__(self, config, name_to_reg, fields):
self.printer = config.get_printer()
+ self.mutex = self.printer.get_reactor().mutex()
self.spi = bus.MCU_SPI_from_config(config, 0, default_speed=4000000)
self.name_to_reg = name_to_reg
self.fields = fields
@@ -215,7 +218,8 @@ class MCU_TMC2660_SPI:
if self.printer.get_start_args().get('debugoutput') is not None:
return 0
msg = [((val >> 16) | reg) & 0xff, (val >> 8) & 0xff, val & 0xff]
- params = self.spi.spi_transfer(msg)
+ with self.mutex:
+ params = self.spi.spi_transfer(msg)
pr = bytearray(params['response'])
return (pr[0] << 16) | (pr[1] << 8) | pr[2]
def set_register(self, reg_name, val, print_time=None):
@@ -224,7 +228,8 @@ class MCU_TMC2660_SPI:
minclock = self.spi.get_mcu().print_time_to_clock(print_time)
reg = self.name_to_reg[reg_name]
msg = [((val >> 16) | reg) & 0xff, (val >> 8) & 0xff, val & 0xff]
- self.spi.spi_send(msg, minclock)
+ with self.mutex:
+ self.spi.spi_send(msg, minclock)
######################################################################