From 0ae20421d18bd53ee98e03e825a0b2a468fa5639 Mon Sep 17 00:00:00 2001 From: Kevin O'Connor Date: Wed, 15 Apr 2020 13:28:54 -0400 Subject: neopixel: Allow host software to configure neopixel timing Signed-off-by: Kevin O'Connor --- klippy/extras/neopixel.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'klippy/extras/neopixel.py') diff --git a/klippy/extras/neopixel.py b/klippy/extras/neopixel.py index 320435c5..fd473987 100644 --- a/klippy/extras/neopixel.py +++ b/klippy/extras/neopixel.py @@ -6,6 +6,9 @@ BACKGROUND_PRIORITY_CLOCK = 0x7fffffff00000000 +BIT_MAX_TIME=.000004 +RESET_MIN_TIME=.000050 + class PrinterNeoPixel: def __init__(self, config): self.printer = config.get_printer() @@ -15,8 +18,7 @@ class PrinterNeoPixel: pin_params = ppins.lookup_pin(config.get('pin')) self.mcu = pin_params['chip'] self.oid = self.mcu.create_oid() - self.mcu.add_config_cmd("config_neopixel oid=%d pin=%s" - % (self.oid, pin_params['pin'])) + self.pin = pin_params['pin'] self.mcu.register_config_callback(self.build_config) self.color_order_GRB = config.getboolean("color_order_GRB", True) self.chain_count = config.getint('chain_count', 1, minval=1, maxval=18) @@ -33,6 +35,11 @@ class PrinterNeoPixel: self.cmd_SET_LED, desc=self.cmd_SET_LED_help) def build_config(self): + bmt = self.mcu.seconds_to_clock(BIT_MAX_TIME) + rmt = self.mcu.seconds_to_clock(RESET_MIN_TIME) + self.mcu.add_config_cmd("config_neopixel oid=%d pin=%s" + " bit_max_ticks=%d reset_min_ticks=%d" + % (self.oid, self.pin, bmt, rmt)) cmd_queue = self.mcu.alloc_command_queue() self.neopixel_send_cmd = self.mcu.lookup_command( "neopixel_send oid=%c data=%*s", cq=cmd_queue) -- cgit v1.2.3-70-g09d2