aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--config/example.cfg3
-rw-r--r--klippy/stepper.py34
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)
######################################################################