Commit Graph

2076 Commits

Author SHA1 Message Date
Kevin O'Connor 4d3d25b1f7 fan: Minor updates to tachometer handling
Add new fields to Command_Templates.md.

Remove unused self.rpm variable.

Use an explicit get_frequency() method in keeping with Klipper's
convention of not "peeking into member variables".

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2021-03-01 14:57:40 -05:00
Adrian Keet 16d85d1a78 fan: Add tachometer support
This adds new config options for fans:  'tachometer_pin' to specify the
GPIO pin, and 'tachometer_ppr' (default 2) to specify the number of
signal pulses per revolution.  The rpm is also exposed by get_status for
command templates and the API server.  For fast fans (at least 10000
RPM), the polling interval can be shortened using the
'tachometer_poll_interval' option.

There is a new mcu object for a generic edge counter, which repeatedly
polls a GPIO pin and periodically reports the count to the host.

Signed-off-by: Adrian Keet <arkeet@gmail.com>
2021-03-01 14:53:13 -05:00
Lasse Dalegaard f8b0ea53dc serialqueue: correctly report EOF errors
If `klippy` loses connection to a device, the next `read()` from the
device file descriptor will result in a zero-byte result, i.e. an `EOF`.
Right now this gives a confusing error message, so this simply handles
the special case of `EOF` and outputs a better log message.

Signed-off-by: Lasse Dalegaard <dalegaard@gmail.com>
2021-03-01 13:46:59 -05:00
Kevin O'Connor 70a1b752c9 chelper: Move logging_callback() to global scope
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2021-03-01 13:30:02 -05:00
Lasse Dalegaard e0db9f3a6e serialhdl: prevent creation of controlling tty
When `serialhdl` opens a terminal device it must prevent the device from
becoming the controlling terminal of `klippy`, as such a terminal will
send additional messages to the session leader, e.g. a SIGHUP, which
would kill `klippy`. See e.g. #3981.

pySerial already does this, but for e.g. `klipper_mcu` we were not doing
this ourselves.

On Linux a process must set `O_NOCTTY` when opening any file that could
potentially be a terminal device, to avoid this.

Earlier process daemonization tools prevent this from being an issue by
double forking, but under `systemd` a process must take steps to avoid
opening a controlling terminal.

Signed-off-by: Lasse Dalegaard <dalegaard@gmail.com>
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2021-03-01 12:59:33 -05:00
Kevin O'Connor 1b989b81e0 tmc: Fix order of init during sensorless homing
With commit 53b10d3a the setup of sensorless homing could occur before
the driver was enabled which would cause the reinitialization of the
driver settings to undo the sensorless homing setup.

Use set_field() when setting the sensorless homing registers so that
it wont conflict with a driver init.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2021-02-28 18:30:25 -05:00
Kevin O'Connor 36ca639e1f tmc: No need to delay init on a stepper enable
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2021-02-28 18:04:20 -05:00
Kevin O'Connor c9b81e698e tmc: Allow more retries on a TMC UART read error during background checks
Allow three retries if we can't contact the TMC driver at all when it
is in UART mode.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2021-02-28 16:44:03 -05:00
Kevin O'Connor 86c943467f tmc_uart: Minor change - make the baud rate setting more clear
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2021-02-27 11:46:03 -05:00
Kevin O'Connor f035de264f tmc: Add support for periodic checking of driver status
Check the status of all Trinamic stepper motor drivers once a second.
If the driver reports an error then invoke a shutdown.  Also log any
serious warnings.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2021-02-27 10:39:47 -05:00
Kevin O'Connor 53b10d3ae7 tmc: Reinitialize on every driver enable
Send the full TMC stepper motor driver initialization sequence every
time the driver is enabled.

Don't raise an error on startup if unable to contact a tmc2208/tmc2209
driver.  If the driver is still unavailable when it is enabled then a
shutdown will be issued.  This allows users to troubleshoot (and
possibly bring up communication to the driver) prior to enabling the
driver.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2021-02-27 10:39:47 -05:00
Kevin O'Connor af8bfee210 tmc2660: Fix tmc register reading
The tmc2660 appears to send responses as soon as the clk starts
toggling.  That means the 20 bit response is at the top of the 24bit
sent message.  Also, this implies that RDSEL must already have the
correct value in the prior message.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2021-02-27 10:39:47 -05:00
Kevin O'Connor e24709b112 tmc2660: Use common warning/error flag names and descriptions
Where the tmc2660 flags match other drivers, use lowercase so that the
same monitoring code can be used for all the tmc drivers.  Also, use
the same field formatters where applicable.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2021-02-27 10:39:47 -05:00
Kevin O'Connor 2d781b8340 tmc5160: Merge field formatters into tmc2130.py
The tmc5160 field formatters were mostly duplicates of the tmc2130 -
add the "reset" field to tmc2130.py so both drivers have similar
reporting.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2021-02-27 10:39:46 -05:00
Kevin O'Connor 21383fa32e tmc: Always report values after a SET_TMC_CURRENT command
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2021-02-27 10:39:46 -05:00
Kevin O'Connor 6e4270fa79 tmc: Move SET_TMC_CURRENT command to TMCCommandHelper()
Refactor the tmc driver implementations so that there is a single
implementation of the SET_TMC_CURRENT command.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2021-02-27 10:39:46 -05:00
Kevin O'Connor a657aab0bf tmc2660: Add set_current()/get_current() helpers to TMC2660CurrentHelper
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2021-02-27 10:39:46 -05:00
Kevin O'Connor 8312843bbe tmc5160: Add set_current()/get_current() helpers to TMC5160CurrentHelper
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2021-02-27 10:39:46 -05:00
Kevin O'Connor 9c9f78037b tmc2130: Add set_current()/get_current() helper functions to TMCCurrentHelper
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2021-02-27 10:39:46 -05:00
Kevin O'Connor 0bdee6bc04 mcu: Raise a command_error on a command timeout event
Raise a printer.command_error() instead of an mcu.error() if a query
command does not succeed.  That error is less likely to result in an
unhandled exception error.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2021-02-27 10:39:46 -05:00
Andre LeBlanc 3fc72da9ae virtual_sdcard: exact filename match before case insensitive one
currently, if there are 2 files on the virtual sd card whose names differ only in
case (eg. MyFile.gcode vs myfile.gcode) the actual file that gets loaded is at
best unpredictable.  this patch checks for an exact match before attempting a
case-insensitive one.

Signed-off-by: Andre LeBlanc <andrepleblanc@gmail.com>
2021-02-26 22:53:35 -05:00
Kevin O'Connor c5a9d7914b extruder: Make sure to flush steps during sync_stepper()
The stepper positions will only be in sync after the step generation
code has been flushed.  This fixes an "internal error in stepcompress"
error during a SYNC_STEPPER_TO_EXTRUDER command.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2021-02-26 20:11:39 -05:00
Marco D'Alessio c7688c6bca tmc2130: Add spi daisy chain support
This patch adds the ability to daisy-chain multiple tmc2130 and
tmc5160 drivers.

Signed-off-by: Marco D'Alessio <marco@wrecklab.com>
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2021-02-26 10:54:47 -05:00
Kevin O'Connor a8742e982d tmc: Improve error message on missing microsteps config
If microsteps is missing, warn about it in the stepper config section,
not the tmc config section.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2021-02-23 12:00:08 -05:00
Kevin O'Connor 4d2adddb20 stepper: Improve error messages on missing rotation_distance
If neither rotation_distance nor step_distance is present, then
generate an error saying rotation_distance is needed (instead of an
error about step_distance).

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2021-02-23 11:58:17 -05:00
Kevin O'Connor 2aa2e91f2c Revert "bme280: Rename sensor_type from BME280 to bme280"
This reverts commit ac61f8b726.

Many temperature sensors are capitalized, so don't make this chaneg to
the bme280.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2021-02-20 15:39:03 -05:00
Janar Sööt 92cc286159
menu: Default menu should check extruders have heaters (#3969)
For the hotend targets check also available heaters.
It'll solve crash when using shared heaters.

Signed-off-by: Janar Sööt <janar.soot@gmail.com>
2021-02-20 11:33:34 -05:00
Janar Sööt 5a7fbe671e
menu: redesigned name scroller & menu rendering (#3837)
Signed-off-by: Janar Sööt <janar.soot@gmail.com>
2021-02-20 11:31:03 -05:00
Kevin O'Connor ac61f8b726 bme280: Rename sensor_type from BME280 to bme280
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2021-02-20 09:23:39 -05:00
Kevin O'Connor c29585f7f3 temperature_host: Rename "path" config to "sensor_path"
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2021-02-20 09:23:13 -05:00
Kevin O'Connor 227d9bdbcf temperature_host: Improve backwards compatibility check
Don't register two names for the same instance of the sensor.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2021-02-19 18:51:42 -05:00
Evgenii 3d35c003db temperature_host: Rename rpi_temperature and add support for custom paths
Signed-off-by: Evgenii Shavrin <shavrin0591@gmail.com>
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2021-02-19 18:44:28 -05:00
Christian S bc2f6faa17
probe: Add last_z_result to get the latest z result in an Macro (#3835)
Signed-off-by: Christian Schnellrieder <schnello.android@gmail.com>
2021-02-18 22:03:32 -05:00
Arjan Mels b2cbb9aa96
idle_timeout: Add help to SET_IDLE_TIMEOUT (#3945)
Signed-off-by: Arjan Mels <github@mels.email>
2021-02-18 20:32:46 -05:00
Kevin O'Connor ba940da9b5 stepper: Don't cache ffi_lib object in the stepper
It's easier to just call chelper.get_ffi() if the ffi_lib object is
needed.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2021-02-18 15:39:55 -05:00
Kevin O'Connor 81da5379d4 buildcommands: Extend number of available mcu messages from 96 to 128
Some internal code treats the message ids as encoded "variable length
quantities", while other internal code assumes the message id is
always one byte long.  Continue using this scheme, but convert the VLQ
users to use the name "msgtag" while the 1-byte users use "msgid".
Increase the number of available msgids from 96 to 127 - the higher
values get encoded as negative "msgtags".

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2021-02-18 15:21:32 -05:00
Kevin O'Connor efa497dfd8 msgproto: Avoid peeking into the msgproto class members
Update callers to only use exported methods of the msgproto objects.
This makes it easier to make internal changes to the code.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2021-02-18 14:33:44 -05:00
Kevin O'Connor c5968a0830 serialqueue: Batch multiple message blocks in a single write()
Some communication protocols are more efficient if fewer write() calls
are invoked.  If multiple message blocks can be sent at the same time
then batch them into a single write() call.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2021-02-12 13:59:57 -05:00
Kevin O'Connor 730ef9d347 serialqueue: Improve timing of sleep durations
If any callback is invoked from the pollreactor then obtain a new
eventtime before calculating a sleep duration.  This improves the
timing of events.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2021-02-12 13:57:51 -05:00
Kevin O'Connor 1049282eec chelper: Fix check for failed code build
Commit 73b78af6 inadvertently removed the check for a successful gcc
compilation.  Add the check back in.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2021-02-07 20:48:21 -05:00
Alan Lord 7d4df65920
ds18b20: new module for 1-wire temperature sensor (#3462)
Initial commit of code to support 1-wire (Dallas) sensors such
as the DS18B20. Requires Linux kernel drivers to create a file
in /sysfs which is read by this module, and temperature
typically returned to a temperature_fan.

Signed-off-by: Alan Lord <alanslists@gmail.com>
Signed-off-by: Josh Headapohl <joshhead@gmail.com>
2021-02-02 14:34:56 -05:00
Lane Roberts 19397a0a2b
temperature_fan: Add MAX_SPEED and MIN_SPEED to SET_TEMPERATURE_FAN_TARGET command (#3873)
Allows setting min_speed and max_speed at runtime, rather than updating the config and restarting.

Signed-off-by Lane Roberts <nolatari@vandarin.net>
2021-02-02 14:30:04 -05:00
Dmitry Butyugin d136b1e41a resonance_tester: Increase test max_accel to 10K and max_freq to 133 Hz
Signed-off-by: Dmitry Butyugin <dmbutyugin@google.com>
2021-02-02 14:13:24 -05:00
Dmitry Butyugin a8b282d67a resonance_tester: Disable input shaping for resonance testing
Signed-off-by: Dmitry Butyugin <dmbutyugin@google.com>
2021-02-02 14:13:24 -05:00
Dmitry Butyugin 0fb2449be0 adxl345: Add accelerometer chip name to the raw data file name
Signed-off-by: Dmitry Butyugin <dmbutyugin@google.com>
2021-02-02 14:13:24 -05:00
Kevin O'Connor 6a3f4c7ae6 serialqueue: Improve checking of out-of-order messages
Consider any message block that acks a message never sent as an
out-of-order block and discard it.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2021-02-01 19:16:23 -05:00
Kevin O'Connor 6e79152f47 htu21d: Implement support for min_temp/max_temp checks
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2021-02-01 11:30:27 -05:00
Kevin O'Connor a15952770b bme280: Implement support for min_temp/max_temp checks
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2021-02-01 11:27:16 -05:00
Kevin O'Connor 74244ab0eb spi_temperature: Improve handling of min_temp/max_temp overflows
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2021-02-01 10:37:19 -05:00
Kevin O'Connor 333f8c210f lm75: Implement support for min_temp/max_temp checks
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2021-02-01 10:37:19 -05:00
Kevin O'Connor 7775e0ed54 lm75: Use getfloat() for reading the lm75_report_time parameter
Reported by @theopensourcer.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2021-02-01 10:26:14 -05:00
Thomas Kroll 60e4cddf36 hd44780: Add hd44780 protocol init config
LDO OLED needs a different init string.

Fixes: #3722
Signed-off-by: Thomas Kroll <t.kroll@outlook.com>
2021-01-31 19:35:40 -05:00
Kevin O'Connor 5d960aef37 htu21d: Fix time reporting of temperature measurements
The temperature callback takes a "print time" not a "system time".

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2021-01-24 15:38:16 -05:00
Kevin O'Connor 8de86ad51f rpi_temperature: Fix time reporting of temperature measurements
The temperature callback takes a "print time" not a "system time".

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2021-01-24 15:37:37 -05:00
Kevin O'Connor bded15b743 temperature_mcu: Improve handling when in debug output mode
Call mcu_adc.setup_minmax() even in debug output mode so that the
debugging output contains a more accurate configuration.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2021-01-24 15:28:16 -05:00
Kevin O'Connor 04179f3eae bme280: Disable bme280 when using debug output
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2021-01-24 15:19:43 -05:00
Kevin O'Connor c3e3b2280a rpi_temperature: Fix missing get_report_time_delta() callback
Reported by @ronald5555.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2021-01-24 14:00:41 -05:00
Kevin O'Connor cf8d5a6606 rpi_temperature: Disable rpi_temperature when using debug output
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2021-01-24 13:59:09 -05:00
Kevin O'Connor 29831a2f69 rpi_temperature: Minor formatting changes
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2021-01-24 13:58:54 -05:00
Kevin O'Connor db86a4edcb temperature_mcu: Disable the temperature_mcu when using debug output
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2021-01-24 13:56:57 -05:00
Chip b9899a23a3
menu: Update menu.cfg sd_card menu enable condition (#3826)
Change SD card enable condition and add Cancel printing option.

Signed-off-by: John Smith <login721@gmail.com>
2021-01-24 10:35:05 -05:00
Pascal P 1e2eb9a4de
hall_filament_width_sensor: Fix race condition (#3790)
Fix race condition of filament width sensor
Added fix to similar code of TSL1401CL filament width sensor

Signed-off-by: Pascal Pieper <accounts@pascalpieper.de>
2021-01-22 13:41:34 -05:00
Kevin O'Connor 8cc1d84180 configfile: Add printer.configfile.settings command template parameter
Make available the parsed value (or default value) for config options
to command templates and to the api server.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2021-01-20 16:25:25 -05:00
Kevin O'Connor 023a985bfc gcode_macro: Use deepcopy() on get_status() results
If a get_status() method returns a mutable object (such as a list or
dict) then it would be possible for a gcode command template to
incorrectly alter the program's internal state.  Perform a deepcopy()
operation on all get_status() return results to avoid that.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2021-01-20 16:25:25 -05:00
Kevin O'Connor 8a6619d18e mcu: Add a get_status() callback with micro-controller info and stats
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2021-01-19 23:12:41 -05:00
Kevin O'Connor 611b76369f winch: Improve python3 compatibility
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2021-01-17 22:54:16 -05:00
Kevin O'Connor 0e9cb2abac save_variables: Import ConfigParser as configparser for better Python3 support
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2021-01-17 22:46:04 -05:00
Alex Zellner dac0fba50d
menu: Update menu.cfg (#3778)
Update min/max in move menu to printer variables.

Signed-off-by: Alex Zellner <alexander.zellner@googlemail.com>
2021-01-17 22:39:54 -05:00
Maël Kerbiriou 9278f56e36
webhooks: Fix use of deprecated Exception.message attribute (#3781)
Since Python 2.6, the BaseException.message attribute is deprecated (PEP-352[1])
in favor of e.args[0] or str(e). This commit replaces e.message with str(e).

[1] https://www.python.org/dev/peps/pep-0352/

Signed-off-by: Maël Kerbiriou <m431.kerbiriou@gmail.com>
2021-01-17 22:37:41 -05:00
Kevin O'Connor c57352a336 homing: Fix references to CommandError()
Commit ea85d419 moved CommandError from homing.py to gcode.py, but
failed to fix the references to CommandError within homing.py.  Fix
that.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2021-01-11 10:01:14 -05:00
Kevin O'Connor 8260a3a0c3 homing: Make homing.py an "extras" module
Move klippy/homing.py to klippy/extras/homing.py and convert the code
to an "extras" modules.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2021-01-08 14:01:34 -05:00
Kevin O'Connor ea85d419de gcode: Move definition of CommandError and Coord from homing.py to gcode.py
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2021-01-08 12:07:45 -05:00
Kevin O'Connor c8434ec54b kinematics: Calculate axis_minimum/axis_maximum in advance
Calculate the get_status() axis_minimum and axis_maximum fields in
advance so that they don't need to be calculated on each get_status()
call.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2021-01-08 11:52:28 -05:00
Janar Sööt e68cf08d15 kinematics: report all axis limits (min/max)
Signed-off-by: Janar Sööt <janar.soot@gmail.com>
2020-12-28 10:19:57 -05:00
Justin Schuh a5ebe5825a
heaters: Make MINIMUM optional for TEMPERATURE_WAIT command (#3674)
Signed-off-by: Justin Schuh <code@justinschuh.com>
2020-12-24 11:34:26 -05:00
Justin Schuh 1a9218532b heaters: Add MAXIMUM option to TEMPERATURE_WAIT command
Signed-off-by: Justin Schuh <code@justinschuh.com>
2020-12-23 18:16:46 -05:00
Kevin O'Connor 16963a8e1a configfile: Improve error message when a required option is missing
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2020-12-22 20:07:39 -05:00
Kevin O'Connor ca8e6ad89b configfile: Minor line wrapping changes
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2020-12-22 20:06:15 -05:00
Dmitry Butyugin 1b1a97e8bd shaper_calibrate: Choose input shapers accounting smoothing
Improved algorithm to choose the 'optimal' shaper frequency taking
shaper smoothing into account. This may choose a frequency with
slightly more vibrations but less smoothing. Also allow users to
limit the maximum input shaper smoothing.

Signed-off-by: Dmitry Butyugin <dmbutyugin@google.com>
2020-12-22 18:37:41 -05:00
Kevin O'Connor a637c2f110 heaters: Fix TEMPERATURE_WAIT command with extruder and heater_bed
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2020-12-22 15:22:13 -05:00
Kevin O'Connor f84a570dde temperature_mcu: Fix slope on stm32f070
The stm32f070 has a negative temperature slope.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2020-12-19 11:19:44 -05:00
Kevin O'Connor e0395c69aa temperature_mcu: Fix slope on stm32f1
The stm32f103 has a negative temperature slope.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2020-12-19 10:38:50 -05:00
Kevin O'Connor 96eba9f2df endstop_phase: Obtain phases directly from stepper microsteps config
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2020-12-18 10:30:32 -05:00
Kevin O'Connor 7dcc778b6c stepper: Calculate step_distance from rotation_distance
Add support for automatically calculating the internal step_distance
from new config parameters - rotation_distance, microsteps,
full_steps_per_rotation, and gear_ratio.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2020-12-18 10:30:32 -05:00
Kevin O'Connor e786748f18 heaters: Always register heater pin as a pwm pin
There's no need to sometimes register the pin as a 'digital_out' pin
instead of as a 'pwm' pin.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2020-12-15 12:21:04 -05:00
Stefan Dej 77add95675
heaters: add last pwm value to heater.get_status (#3621)
Signed-off-by: Stefan Dej <meteyou@gmail.com>
2020-12-13 20:08:16 -05:00
Kevin O'Connor 0923450286 tmc: Use configfile note_valid=False when inspecting stepper step_distance
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2020-12-13 10:42:25 -05:00
Kevin O'Connor 14fd40e3f9 safe_z_home: Use configfile note_valid=False when inspecting z position_max
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2020-12-13 10:42:25 -05:00
Kevin O'Connor b25520795d probe: Use configfile note_valid=False when inspecting z position_min
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2020-12-13 10:42:25 -05:00
Kevin O'Connor 89183edbda manual_probe: Use configfile note_valid=False when inspecting Z position_endstop
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2020-12-13 10:41:40 -05:00
Kevin O'Connor 65a49d17dd hd44780: Make the 4-bit init sequence more robust
The previous init sequence relied on the display ignoring commands if
they are sent faster than 40us.  Some displays may not have this
limit.

Rework the init to make it more robust to command transmission times.
The new init should still transition the display into 4-bit mode even
if the display processes commands faster than 40us.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2020-12-12 10:07:53 -05:00
Kevin O'Connor f3c5be0f00 gpiocmds: Merge digital output and soft pwm code
The digital output commands implement a subset of the software pwm
commands.  Change the host code to just use the software pwm commands
and simplify the micro-controller code.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2020-12-10 12:06:26 -05:00
Kevin O'Connor a1baefc2c2 temperature_mcu: Add enhanced support for monitoring mcu temperature
Add a "temperature_mcu" tool that can monitor builtin micro-controller
temperature sensors.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2020-12-10 02:39:06 -05:00
Kevin O'Connor e83801daab heaters: Add a TEMPERATURE_WAIT command
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2020-12-07 09:57:13 -05:00
Kevin O'Connor c4a37756ea temperature_sensor: Report temperature in stats
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2020-12-06 21:55:26 -05:00
Kevin O'Connor 9e293be5e0 pca9685: Use move queue for pwm updates
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2020-12-04 16:10:13 -05:00
Kevin O'Connor 19a96346a8 gpiocmds: Use move queue for software pwm
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2020-12-04 16:10:13 -05:00
Pascal Pieper 9cdf9bb6ec gpiocmds: Use move queue for digital output pins
Signed-off-by: Pascal Pieper <accounts@pascalpieper.de>
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2020-12-04 16:10:13 -05:00
Pascal Pieper e8ec1801ff pwmcmds: Use move queue for hard PWM
Signed-off-by: Pascal Pieper <accounts@pascalpieper.de>
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2020-12-04 16:10:13 -05:00
Pascal Pieper 99fe290753 mcu: Support reserving move queue slots
Signed-off-by: Pascal Pieper <accounts@pascalpieper.de>
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2020-12-04 16:10:13 -05:00
Kevin O'Connor 086f0fafde gpiocmds: Send soft pwm cycle_time separately from schedule_soft_pwm_out
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2020-12-04 16:10:13 -05:00
Kevin O'Connor 14952ccef5 docs: Add links to default display.cfg and menu.cfg in Config_Reference.md
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2020-12-03 18:11:29 -05:00
Kevin O'Connor 23f547169c rpi_temperature: Don't read min_temp/max_temp directly from config
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2020-12-03 12:37:56 -05:00
Al b911db4c0d
rpi_temperature: New module to monitor RPi temperature (#3587)
Module to monitor RPi cpu temperature

Signed-off-by: Al Crate <aleph@al3ph.org>
2020-12-03 12:35:37 -05:00
Kevin O'Connor d7053f6e71 save_variables: Support saving variables to a disk file
Signed-off-by: Dushyant Ahuja dusht.ahuja@gmail.com
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2020-12-03 12:19:47 -05:00
Janar Sööt 91de1560a7
menu: modifications (#3262)
- remove lot of helper methods
- differentiate class instantiate from config or directly
- don't use 'enable' template rendering when static value is used.
- new element 'disabled'
- other internal adjustments

Signed-off-by: Janar Sööt <janar.soot@gmail.com>
2020-12-03 10:46:55 -05:00
Kevin O'Connor 1f4c52e7db serialhdl: Improve Python3 compatibility
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2020-12-01 12:40:13 -05:00
Kevin O'Connor a4f7ad9ffc heater_fan: Fix typo causing excessive cpu usage
Commit error introduced in a7e90504 and f261a468.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2020-12-01 12:31:22 -05:00
Kevin O'Connor f261a4688b controller_fan: Improve timing of fan commands
Don't use the reactor eventtime to schedule micro-controller commands
as that time may have low accuracy.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2020-12-01 11:51:29 -05:00
Kevin O'Connor a7e9050439 heater_fan: Improve timing of fan commands
Don't use the reactor eventtime to schedule micro-controller commands
as that time may have low accuracy.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2020-12-01 11:51:24 -05:00
Kevin O'Connor f90fbb56d2 input_shaper: Simplify input shaper type reporting
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2020-12-01 11:36:37 -05:00
Kevin O'Connor 6ead8dd9d9 lm75: Start temperature measurements from "klippy:connect" callback
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2020-12-01 11:36:37 -05:00
Kevin O'Connor 52c6ba3bb5 htu21d: Start temperature measurements from "klippy:connect" callback
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2020-12-01 11:36:37 -05:00
Kevin O'Connor 69f06054e1 bme280: Start temperature measurements from "klippy:connect" callback
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2020-12-01 11:36:37 -05:00
Kevin O'Connor f3fd814ce0 neopixel: Don't wait for responses when in debug mode.
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2020-12-01 11:36:37 -05:00
Kevin O'Connor 1af28d8a79 webhooks: Improve python3 compatibility
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2020-12-01 11:07:36 -05:00
Stefan Dej 7266473fec
controller_fan: add get_status (#3566)
Signed-off-by: Stefan Dej <meteyou@gmail.com>
2020-11-23 11:55:14 -05:00
Kevin O'Connor 665ec5e987 spi_temperature: Fix incorrect max31856 spi initialization
Writes to the max31856 chip use "burst mode", so only one address
during the initialization sequence can be sent.  This fixes erroneous
"Cold Junction Fault" errors.

Reported by @NBouquain.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2020-11-23 09:58:42 -05:00
Martin Hierholzer fcb78e50e5
hd44780: allow to configure line length (#3543)
This allows to use 16x4 displays rather than only 20x4.

Signed-off-by: Martin Hierholzer <hier@beta-centauri.de>
2020-11-20 14:49:38 -05:00
Kevin O'Connor bdd938b578 board_pins: Use an explicit parameter to specify mcu name(s)
Add an 'mcu' option to the board_pins config and use that to specify
the name of the mcu to apply the aliases to.  Support applying the
aliases to multiple mcus.

Add support for any number of options starting with an "aliases_"
prefix.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2020-11-20 12:00:36 -05:00
Kevin O'Connor 15b5dbaf8f docs: Move config reference information to new Config_Reference.md
Move all the config reference information from files in the config/
directory to a new Config_Reference.md document.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2020-11-18 20:10:21 -05:00
Arksine 5970227cbd print_stats: exclude time prior to first extrusion from "print_duration"
Signed-off-by:  Eric Callahan <arksine.code@gmail.com>
2020-11-13 20:48:15 -05:00
Kevin O'Connor 90d755dc0a output_pin: Don't flush lookahead queue on a SET_PIN command
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2020-11-13 18:29:41 -05:00
Kevin O'Connor 9e1697786d neopixel: Apply LED updates at time of transmission
Queue updates so that delays between updates are properly applied.
This fixes macros that would blink LEDs by pausing between update
commands.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2020-11-05 12:57:14 -05:00
Kevin O'Connor 123908ac7a neopixel: Fix neopixel_result message so that it contains an oid
In order for commit 82156170 to work properly, the neopixel_result
message must contain the oid.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2020-11-05 11:40:34 -05:00
Kevin O'Connor 821561708d neopixel: Fix failure with multiple simultaneous neopixel updates
Make sure to set the oid parameter of mcu.lookup_query_command() so
responses are routed correctly.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2020-11-04 18:47:36 -05:00
Arksine 8a5e7d8d28 gcode_macro: implement "action_call_remote_method" context action
Users may use this action to call methods registered by a webhooks client from a command template.

Signed-off-by:  Eric Callahan <arksine.code@gmail.com>
2020-11-04 18:32:30 -05:00
Arksine 108b66efe9 webhooks: Add "register_remote_method" endpoint
This allows clients to register methods that can be called from Klipper.

Signed-off-by:  Eric Callahan <arksine.code@gmail.com>
2020-11-04 18:32:30 -05:00
Kevin O'Connor ccc8fe2fc5 itersolve: Convert iterative solver to use "secant method"
The previous code calculates each step time via an "exponential
search" followed by a "false position with Illinois algorithm" search.
Replace with a "secant method" with "bounds check" search.  This
simplifies the code, improves the performance, and does a better job
of finding steps near a direction change.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2020-11-02 12:07:23 -05:00
Kevin O'Connor e0842e0e03 heaters: Add sensors to printer.heaters.available_sensors even if no gcode_id
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2020-11-01 20:09:16 -05:00
Kevin O'Connor aaf3dc6ac3 serialqueue: Fix registration of serial fd in debug mode
When in debug output mode, make sure to register the fd correctly.
Otherwise, the poll() call will use the 0 fd which could cause random
results.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2020-10-30 14:02:12 -04:00
Kevin O'Connor 19b2363c93 klippy: Remove import of unused threading module
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2020-10-30 13:02:44 -04:00
Kevin O'Connor 79877acb14 mcu: Add support for setting reqclock in CommandQueryWrapper.send()
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2020-10-29 12:00:28 -04:00
Kevin O'Connor 5f96f8a29b dotstar: Don't flush the lookahead queue on a SET_LED command
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2020-10-29 12:00:28 -04:00
Kevin O'Connor 6133737215 neopixel: Don't flush the lookahead queue on a SET_LED command
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2020-10-29 12:00:28 -04:00
Kevin O'Connor 7263077db5 neopixel: Add support for RGBW LEDs
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2020-10-29 12:00:25 -04:00
Kevin O'Connor 2bb30265b5 neopixel: Increase the maximum LED chain length
Rework neopixel updates to use an mcu buffer so that more than 18 LEDs
can be in a chain.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2020-10-29 11:59:15 -04:00
Kevin O'Connor 56004c0228 mcu: Don't default serial config option to /dev/ttyS0
If the mcu config section is omitted, it leads to confusing error
messages.  Don't default the serial config option to /dev/ttyS0 to
improve the error reporting.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2020-10-28 15:35:08 -04:00
Kevin O'Connor c2c79ff98d bltouch: Fix bug causing incorrect position when "stow_on_each_sample=False"
It is only valid to call raise_probe() when the toolhead is not
moving.  Make sure to call sync_print_time() from multi_probe_end() to
ensure that.  This fixes a bug that could cause the Z axis steppers to
lose their position when "stow_on_each_sample=False".

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2020-10-24 00:22:58 -04:00
Kevin O'Connor 1b6b7fc58c kin_extruder: Fix numerical stability when using pressure advance
Avoid using the absolute E position when calculating pressure advance
as that position can grow arbitrarily large, which can result in
"numerical stability" problems.  That instability could eventually
lead to internal errors during step compression.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2020-10-23 22:59:20 -04:00
Kevin O'Connor f8cb1e30eb heaters: Don't raise an error if PID Ki is set to zero
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2020-10-17 20:48:25 -04:00
Dmitry Butyugin f8c4f90c04
resonance_tester: Resonance testing and input shaper auto-calibration (#3381)
Signed-off-by: Dmitry Butyugin <dmbutyugin@google.com>
2020-10-14 20:08:10 -04:00
Dmitry Butyugin fac4e53e86 toolhead: Fixed reporting of the kinematic limits
Signed-off-by: Dmitry Butyugin <dmbutyugin@google.com>
2020-10-14 12:42:15 -04:00
Kevin O'Connor 27249dc709 mcu: Increase the time to reset a pwm pin during startup
Some RPi0 users were reporting "timer too close" errors due to pwm pin
resets - increase the time the host has to complete the startup to
avoid this.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2020-10-11 11:14:32 -04:00
Kevin O'Connor d317793171 bltouch: Add an extra 200ms delay to the initialization process
On a reset, the mcu.py code may have sent an initialization message to
the bltouch, which needs time to complete.  Add additional time during
the bltouch setup to avoid a race with these two times.  This avoids
some "timer too close" errors that users of fast host machines were
reporting.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2020-10-11 11:14:32 -04:00
Kevin O'Connor 930317fa2a thermistor: Add support for the board thermistor on the Einsy Rambo
Add in support for the "TDK NTCG104LH104JT1" thermistor.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2020-10-08 15:25:09 -04:00
jhpadjustable 48b30e0f5a
display_status: fix M117 checksum trimming (#3377)
The M117 command parser discards the last character of the message
whenever the M117 command does not begin the line and there is no *xx
checksum, e.g.
  N0 M117 Look at me
causes the banner area of the printer screen to display "Look at m".
This patch only trims the checksum when one is found to trim.

Signed-Off-By: Jonathan Pickard <jhp@adjustablelabs.info>
2020-09-28 10:11:05 -04:00
Eric Callahan a8e3afd64a
configfile: report "save_config_pending" via get_status() (#3372)
Signed-off-by:  Eric Callahan <arksine.code@gmail.com>
2020-09-28 00:05:55 -04:00
Kevin O'Connor 4d0d219716 mcu: Fix set_pwm() for hard pwm
Must use self._pwm_max to calculate range for hard pwm updates.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2020-09-27 18:09:53 -04:00
Kevin O'Connor 55e20f2c19 mcu: Add support for changing cycle_time in set_pwm()
Signed-off-by: Guy Shapira <gayuha@gmail.com>
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2020-09-26 20:55:56 -04:00