diff options
author | Kevin O'Connor <kevin@koconnor.net> | 2019-06-12 23:06:41 -0400 |
---|---|---|
committer | KevinOConnor <kevin@koconnor.net> | 2019-06-28 16:59:26 -0400 |
commit | a2e550d1cd24f36cb067ec6c9efa62ebd77bbbf8 (patch) | |
tree | 5e0f3262a1649a8551ee756b0ad1aacebda679a5 | |
parent | 7702f0a027686ccba4d45417c79c353c00e8c712 (diff) | |
download | kutter-a2e550d1cd24f36cb067ec6c9efa62ebd77bbbf8.tar.gz kutter-a2e550d1cd24f36cb067ec6c9efa62ebd77bbbf8.tar.xz kutter-a2e550d1cd24f36cb067ec6c9efa62ebd77bbbf8.zip |
stepper: Add support for providing a list of pins to enable
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
-rw-r--r-- | config/example.cfg | 3 | ||||
-rw-r--r-- | klippy/stepper.py | 34 |
2 files changed, 25 insertions, 12 deletions
diff --git a/config/example.cfg b/config/example.cfg index 56f60f29..ed33b3d6 100644 --- a/config/example.cfg +++ b/config/example.cfg @@ -30,7 +30,8 @@ dir_pin: ar55 # parameter must be provided. enable_pin: !ar38 # Enable pin (default is enable high; use ! to indicate enable -# low). If this parameter is not provided then the stepper motor +# low). Alternatively, this may be a comma separated list of pins to +# enable. If this parameter is not provided then the stepper motor # driver must always be enabled. step_distance: .0225 # Distance in mm that each step causes the axis to travel. This diff --git a/klippy/stepper.py b/klippy/stepper.py index 29b525a9..4617f97a 100644 --- a/klippy/stepper.py +++ b/klippy/stepper.py @@ -1,6 +1,6 @@ # Printer stepper support # -# Copyright (C) 2016-2018 Kevin O'Connor <kevin@koconnor.net> +# Copyright (C) 2016-2019 Kevin O'Connor <kevin@koconnor.net> # # This file may be distributed under the terms of the GNU GPLv3 license. import math, logging, collections @@ -26,17 +26,29 @@ class StepperEnablePin: if not self.enable_count: self.mcu_enable.set_digital(print_time, 0) -def lookup_enable_pin(ppins, pin): - if pin is None: +class StepperMultiEnablePin: + def __init__(self, enable_list): + self.enable_list = enable_list + def set_enable(self, print_time, enable): + for en in self.enable_list: + en.set_enable(print_time, enable) + +def lookup_enable_pin(ppins, pin_list): + if pin_list is None: return StepperEnablePin(None, 9999) - pin_params = ppins.lookup_pin(pin, can_invert=True, - share_type='stepper_enable') - enable = pin_params.get('class') - if enable is None: - mcu_enable = pin_params['chip'].setup_pin('digital_out', pin_params) - mcu_enable.setup_max_duration(0.) - pin_params['class'] = enable = StepperEnablePin(mcu_enable) - return enable + enable_list = [] + for pin in pin_list.split(','): + pin_params = ppins.lookup_pin(pin, can_invert=True, + share_type='stepper_enable') + enable = pin_params.get('class') + if enable is None: + mcu_enable = pin_params['chip'].setup_pin('digital_out', pin_params) + mcu_enable.setup_max_duration(0.) + pin_params['class'] = enable = StepperEnablePin(mcu_enable) + enable_list.append(enable) + if len(enable_list) == 1: + return enable_list[0] + return StepperMultiEnablePin(enable_list) ###################################################################### |