diff options
Diffstat (limited to 'klippy/extras')
-rw-r--r-- | klippy/extras/bus.py | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/klippy/extras/bus.py b/klippy/extras/bus.py index b8236dc7..ceeed732 100644 --- a/klippy/extras/bus.py +++ b/klippy/extras/bus.py @@ -43,6 +43,7 @@ class MCU_SPI: cs_active_high=False): self.mcu = mcu self.bus = bus + self.speed = speed # Config SPI object (set all CS pins high before spi_set_bus commands) self.oid = mcu.create_oid() if pin is None: @@ -51,11 +52,17 @@ class MCU_SPI: mcu.add_config_cmd("config_spi oid=%d pin=%s cs_active_high=%d" % (self.oid, pin, cs_active_high)) # Generate SPI bus config message + self.config_fmt_ticks = None if sw_pins is not None: self.config_fmt = ( "spi_set_software_bus oid=%d" " miso_pin=%s mosi_pin=%s sclk_pin=%s mode=%d rate=%d" % (self.oid, sw_pins[0], sw_pins[1], sw_pins[2], mode, speed)) + self.config_fmt_ticks = ( + "spi_set_sw_bus oid=%d" + " miso_pin=%s mosi_pin=%s sclk_pin=%s mode=%d pulse_ticks=%%d" + % (self.oid, sw_pins[0], sw_pins[1], + sw_pins[2], mode)) else: self.config_fmt = ( "spi_set_bus oid=%d spi_bus=%%s mode=%d rate=%d" @@ -78,6 +85,12 @@ class MCU_SPI: if '%' in self.config_fmt: bus = resolve_bus_name(self.mcu, "spi_bus", self.bus) self.config_fmt = self.config_fmt % (bus,) + if self.config_fmt_ticks: + if self.mcu.try_lookup_command("spi_set_sw_bus oid=%c miso_pin=%u " + "mosi_pin=%u sclk_pin=%u " + "mode=%u pulse_ticks=%u"): + pulse_ticks = self.mcu.seconds_to_clock(1./self.speed) + self.config_fmt = self.config_fmt_ticks % (pulse_ticks,) self.mcu.add_config_cmd(self.config_fmt) self.spi_send_cmd = self.mcu.lookup_command( "spi_send oid=%c data=%*s", cq=self.cmd_queue) |