aboutsummaryrefslogtreecommitdiffstats
path: root/klippy/chipmisc.py
diff options
context:
space:
mode:
authorKevin O'Connor <kevin@koconnor.net>2017-08-24 09:34:31 -0400
committerKevin O'Connor <kevin@koconnor.net>2017-08-26 18:27:20 -0400
commit9d75c3b0cace034ef8d51be1b38b705db33ac793 (patch)
tree2e748e7868c8a10d3e60a49a248b8766c388b3a9 /klippy/chipmisc.py
parent6ab8567d51d9f1b536d0adef276e31c3a986c1f2 (diff)
downloadkutter-9d75c3b0cace034ef8d51be1b38b705db33ac793.tar.gz
kutter-9d75c3b0cace034ef8d51be1b38b705db33ac793.tar.xz
kutter-9d75c3b0cace034ef8d51be1b38b705db33ac793.zip
chipmisc: Add support for statically configured output pins
Allow digital and PWM output pins to be setup via new config sections. This makes it easier to setup pin configurations. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Diffstat (limited to 'klippy/chipmisc.py')
-rw-r--r--klippy/chipmisc.py43
1 files changed, 43 insertions, 0 deletions
diff --git a/klippy/chipmisc.py b/klippy/chipmisc.py
new file mode 100644
index 00000000..bdcb59d8
--- /dev/null
+++ b/klippy/chipmisc.py
@@ -0,0 +1,43 @@
+# Code to configure miscellaneous chips
+#
+# Copyright (C) 2017 Kevin O'Connor <kevin@koconnor.net>
+#
+# This file may be distributed under the terms of the GNU GPLv3 license.
+import pins
+
+
+######################################################################
+# Statically configured output pins
+######################################################################
+
+class PrinterStaticDigitalOut:
+ def __init__(self, printer, config):
+ pin_list = [pin.strip() for pin in config.get('pins').split(',')]
+ for pin_desc in pin_list:
+ mcu_pin = pins.setup_pin(printer, 'digital_out', pin_desc)
+ mcu_pin.setup_static()
+
+class PrinterStaticPWM:
+ def __init__(self, printer, config):
+ mcu_pwm = pins.setup_pin(printer, 'pwm', config.get('pin'))
+ mcu_pwm.setup_max_duration(0.)
+ hard_pwm = config.getint('hard_pwm', None, minval=1)
+ if hard_pwm is None:
+ mcu_pwm.setup_cycle_time(config.getfloat(
+ 'cycle_time', 0.100, above=0.))
+ else:
+ mcu_pwm.setup_hard_pwm(hard_pwm)
+ scale = config.getfloat('scale', 1., above=0.)
+ value = config.getfloat('value', minval=0., maxval=scale)
+ mcu_pwm.setup_static_pwm(value / scale)
+
+
+######################################################################
+# Setup
+######################################################################
+
+def add_printer_objects(printer, config):
+ for s in config.get_prefix_sections('static_digital_output '):
+ printer.add_object(s.section, PrinterStaticDigitalOut(printer, s))
+ for s in config.get_prefix_sections('static_pwm_output '):
+ printer.add_object(s.section, PrinterStaticPWM(printer, s))