diff options
author | Kevin O'Connor <kevin@koconnor.net> | 2017-08-24 09:34:31 -0400 |
---|---|---|
committer | Kevin O'Connor <kevin@koconnor.net> | 2017-08-26 18:27:20 -0400 |
commit | 9d75c3b0cace034ef8d51be1b38b705db33ac793 (patch) | |
tree | 2e748e7868c8a10d3e60a49a248b8766c388b3a9 /klippy/chipmisc.py | |
parent | 6ab8567d51d9f1b536d0adef276e31c3a986c1f2 (diff) | |
download | kutter-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.py | 43 |
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)) |