Commit Graph

1549 Commits

Author SHA1 Message Date
Kevin O'Connor 005cfea5c3 gcode: Fix detection of some "extended" g-code commands
Fix typo that resulted in _get_extended_params() being called for all
commands.  Allow "extended" g-code commands to contain numbers.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2020-01-07 19:17:20 -05:00
Kevin O'Connor ac863a95b6 rotary_delta: Initial support for rotary delta kinematics
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2020-01-06 11:52:42 -05:00
Kevin O'Connor a56484c98b delta_calibrate: Add support for manually entering a nozzle Z height
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2020-01-06 11:49:41 -05:00
Kevin O'Connor 2b6cf5b007 homing: Don't assume homing occurs with a constant step rate
Some kinematics do not result in a constant step rate during homing
operations.  Calculate the endstop checking rate using the total
distance traveled on the axis divided by the axis step distance.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2020-01-06 11:49:41 -05:00
Kevin O'Connor e43ad4c953 itersolve: Export itersolve_calc_position_from_coord()
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2020-01-06 11:49:41 -05:00
Kevin O'Connor 97d976fc53 stepper: Track if using units of radians instead of millimeters
The STEPPER_BUZZ command needs to know if the axis is using radians
instead of millimeters so that it can move a more appropriate
distance.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2020-01-06 11:49:41 -05:00
Kevin O'Connor bcf10aa990 delta: Simplify DeltaCalibration state tracking
Limit the use of coordinate descent "params".

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2020-01-06 11:41:09 -05:00
Kevin O'Connor 27e6b533bc delta: Move low-level delta calibration to delta.py
Move the linear delta specific calibration code from
delta_calibrate.py to delta.py.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2020-01-06 11:41:09 -05:00
Kevin O'Connor fdfa26edd6 delta_calibrate: Move stable position conversion to its own class
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2020-01-06 11:41:09 -05:00
Simo Apell 90bc1679a2 extruder_stepper: Initial support for synchronized extruder steppers
Signed-off-by: Simo Apell <simo.apell@live.fi>
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2020-01-06 11:03:05 -05:00
Kevin O'Connor e576571340 fan: Do not flush look-ahead queue on fan speed change
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2020-01-03 18:13:57 -05:00
Kevin O'Connor 8158dbcc21 toolhead: Add register_lookahead_callback() method
Add a mechanism for obtaining the print_time via a callback instead of
by flushing the look-ahead queue.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2020-01-03 18:13:57 -05:00
Kevin O'Connor 4b6a65c1e0 heater: Do not flush look-ahead queue on a heater temperature update
The print_time parameter of heater.set_temp() is not currently used
and it isn't necessary to flush the look-ahead queue just get the
print_time.  Remove the parameter from heater.set_temp() to avoid
flushing the look-ahead queue.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2020-01-03 18:13:57 -05:00
Kevin O'Connor dabffcc22c kin_extruder: Convert pressure advance to use "weighted average"
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-12-20 12:21:58 -05:00
Kevin O'Connor 54149e38f9 trapq: Limit the duration of "null" sentinal moves on the trapq
If a null move is added as the first move on the trapezoid motion
queue then it could have a very large move->move_t value.  This could
cause numerical stability issues with some advanced kinematic
formulas.  Place a limit on the move_t value to avoid this.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-12-20 12:13:19 -05:00
Daniel Kucera efc3335911 gcode_arcs: use correct current position from gcode
Signed-off-by: Daniel Kucera <github@danman.eu>
2019-12-18 12:42:40 -05:00
Kevin O'Connor 0a86190bae display: Revert "display: Add ST7567 display support (#1540)"
This reverts commit 1b92af6078.

The standard "uc1701" lcd_type can now be used in place of the custom
"st7567" lcd_type.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-12-18 12:30:20 -05:00
Kevin O'Connor abf493496c mathutil: Disable queuelogger in background_coordinate_descent()
If the queuelogger was holding the lock when the process is forked
then any attempt to log from the background process would result in a
deadlock.  Attempt a workaround by disabling the queuelogger at the
start of the background process.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-12-17 09:51:45 -05:00
Kevin O'Connor d9cd524aec extruder: No need to track extrude_pos locally
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-12-17 02:01:54 -05:00
Kevin O'Connor 46e7027bc7 extruder: Flush step generation on ACTIVATE_EXTRUDER
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-12-17 01:59:06 -05:00
Kevin O'Connor f4c4de1a24 extruder: Move M104/M140 commands from gcode.py to extruder.py
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-12-16 20:16:21 -05:00
Kevin O'Connor 9654816abf heater_bed: Move M140/M190 commands from gcode.py to heater_bed.py
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-12-16 20:02:48 -05:00
Kevin O'Connor 0e2d1a190e gcode: Rename bg_temp() to wait_for_temperature()
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-12-16 19:21:37 -05:00
Kevin O'Connor 665323eb29 heater: Use printer.command_error() instead of internal heater.error()
Use the more standard command_error to report invalid temperature
requests.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-12-16 19:16:58 -05:00
Kevin O'Connor 254789f4c5 neopixel: Add support for delaying updates in SET_LED command
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-12-15 23:24:17 -05:00
Simon Kühling b1bbe97576 temperature_sensor: Add get_status() function
Provide printer.<sensor-config-name>.temperature variable to gcode macro
environment

Signed-off-by: Simon Kühling <mail@simonkuehling.de>
2019-12-13 10:45:04 -05:00
Simon Kühling 2721211456 heater: Add PrinterHeater get_status() function
Provide a list of available heater and sensor names to
gcode macro templates through the printer.heater.available_heaters
and printer.heater.available_sensors variables

Signed-off-by: Simon Kühling <mail@simonkuehling.de>
2019-12-13 10:45:04 -05:00
Kevin O'Connor 4cbbe18afd itersolve: Improve numerical stability of gen_steps_pre_active check
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-12-10 16:44:02 -05:00
Kevin O'Connor 04b3603a1e itersolve: Rename scan_pre/_post to gen_steps_pre/post_active
Rename the variables to make it a little more clear what they do.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-12-10 15:53:50 -05:00
Kevin O'Connor fcee27fc19 gcode: Remove builtin T0/T1/T2/... command support
The builtin Tn command is not sufficiently flexible to control some
multi-extruder printers.  Remove the command and encourage users to
define individual gcode_macros for each Tn instance.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-12-10 14:24:32 -05:00
Kevin O'Connor c06618193d extruder: Add an ACTIVATE_EXTRUDER command
Add support for an extended g-code command to change the currently
active extruder.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-12-10 14:23:13 -05:00
Kevin O'Connor ab2d302b7e gcode: Remove support for the M206 command
The M206 command isn't particularly standardized and isn't issued by
default from 3rd party software in their standard configurations.
Encourage users to use the more powerful SET_GCODE_OFFSET command.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-12-10 14:23:10 -05:00
Kevin O'Connor 080ee0b512 kin_extruder: Apply pressure advance in kin_extruder.c
Implement the pressure advance calculations while performing the
definitive integral calculations.  This simplifies both the
extruder.py and kin_extruder.c code.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-12-08 20:41:35 -05:00
Kevin O'Connor 730a6d868b kin_extruder: Move integration code from trapq.c to kin_extruder.c
Move the code that calculates the definitive integral to the
kin_extruder.c file.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-12-08 18:30:42 -05:00
Kevin O'Connor 139274f0bb mathutil: Propagate errors from background_coordinate_descent()
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-12-05 14:48:52 -05:00
Kevin O'Connor 72161d0405 tuning_tower: Fix typo causing tuning tower to break when homing
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-12-04 20:11:54 -05:00
Petri Honkala 98d1fee8ad tmc5160: PWMCONF is write only
Signed-off-by: Petri Honkala <cruwaller@gmail.com>
2019-12-04 09:20:39 -05:00
Petri Honkala 99a74d9f07 tmc2130: use local variable instead of global Registers in MCU_TMC_SPI
Signed-off-by: Petri Honkala <cruwaller@gmail.com>
2019-12-03 12:06:37 -05:00
Kevin O'Connor e310e5f0e8 uc1701: Add a delay after reset toggle (for displays using ResetHelper)
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-12-03 11:13:54 -05:00
Kevin O'Connor 988ee5754e itersolve: Fix potential backwards time in itersolve_gen_steps_range()
Make sure that a newly choosen "high" bound is always greater than the
"low" bound.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-12-02 23:56:42 -05:00
Kevin O'Connor a8ad1ae726 screws_tilt_adjust: Remove check for probe printer object
The probe object may not have be instantiated when the
screws_tilt_adjust object is instantiated.  Just remove the check.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-12-02 20:06:04 -05:00
Kevin O'Connor 8e87ab0939 gcode: Remove support for "G4 S1" style commands
The S parameter is not a standard and was not commonly used.  The P
parameter (delay specified in milliseconds) is the commonly accepted
g-code mechanism for dwelling.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-12-02 19:31:20 -05:00
Kevin O'Connor 2d97e0e218 uc1701: Add support for rst_pin
Add support for an optional uc1701 rst_pin.  Use the same reset pin
code handling with the SSD1306 code.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-12-02 10:25:30 -05:00
Kevin O'Connor 2e7f38eadd hd44780: Use two separate text framebuffers
There is concern that some lcd boards that emulate the hd44780 don't
support text updates that wrap the two text framebuffers.  Update the
code to treat the two text areas as two separate framebuffers.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-12-01 19:18:52 -05:00
Matt Baker 8d93d1a8ef uc1701: add config option for sh1106 type with up to 132 columns.
Signed-off-by: Matt Baker <baker.matt.j@gmail.com>
2019-11-26 19:40:39 -05:00
Kevin O'Connor 3683273936 toolhead: Report which axes are homed via get_status()
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-11-24 20:21:13 -05:00
Kevin O'Connor 282af0220e toolhead: Report the current extruder from the get_status() method
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-11-24 20:21:13 -05:00
Justin Schuh 93f1e6dd86 FAN: Kick start fan when the increase is more than 50% (#2085)
Large increases in fan speed can suffer from acceleration lag, so this
change kick starts the fan for a change of 50% or more in the same way
that starting the fan from 0% does.

Signed-off-by: Justin Schuh <code@justinschuh.com>
2019-11-24 18:37:30 -05:00
Kevin O'Connor 05472bb8a3 virtual_sdcard: Don't wait for M25 in an SD gcode file
If an M25 is in a gcode file that is being printed from virtual SD, it
would cause a permanent hang.  Detect that case and don't wait for
those M25 commands.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-11-24 14:30:26 -05:00
Kevin O'Connor ade65b90af force_move: Make sure to flush step generation queue after each move
Add toolhead.note_kinematic_activity() call and use it to force the
step generation to be flushed.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-11-24 11:55:30 -05:00
Kevin O'Connor 00fd6223ed tuning_tower: Report start of tuning test on g-code console
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-11-21 13:44:02 -05:00
Kevin O'Connor 89d1ab7c04 extruder: Remove support for lookahead() method
Now that the extruder lookahead method is no longer used it can be
removed from the toolhead and extruder classes.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-11-21 13:18:21 -05:00
Kevin O'Connor 5f5896ad71 extruder: Add support for instantaneous corner velocity
Add mechanism to perform look-ahead between moves with different
extrusion ratios.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-11-21 13:18:21 -05:00
Kevin O'Connor 6d0c55b6c1 extruder: Initial support for "smoothed pressure advance"
Support averaging the extruder position over a time range to "smooth
out" the velocity changes that occur during pressure advance.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-11-21 13:18:19 -05:00
Kevin O'Connor da06e185fb trapq: Add trapq_find_move() function
Add support for finding a move by time in the trapezoidal velocity
move list.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-11-21 13:17:45 -05:00
Kevin O'Connor a28b29993a trapq: Add code to calculate definitive integral
Support calculating the definitive integral of a cartesian axis
position over a time range of the movement queue.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-11-21 13:17:45 -05:00
Kevin O'Connor d00023f3bb toolhead: Support step generation in lead up to and after stepper activity
Add support for kinematic functions that calculate step times based on
a range of the motion queue.  This requires adding additional pause
times when fully flushing the motion queue.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-11-21 13:17:45 -05:00
Kevin O'Connor 56cd39f038 itersolve: Support step generation in lead up to and after stepper activity
Add support for generating steps from kinematic functions that
calculate step times based on a range of the motion queue.  It
requires scanning for step generation during the lead up to stepper
activity (when the stepper would nominally be idle).  And it requires
scanning for step generation just after a stepper has nominally become
idle.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-11-21 13:17:45 -05:00
Kevin O'Connor 4dbe795ac2 trapq: Implement sentinel nodes on the trapq list
Use sentinels to make list traversal code simpler.  Also add in null
moves so that there are no time gaps in the list.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-11-21 13:17:45 -05:00
Kevin O'Connor 2843c85019 toolhead: Rename _full_flush() to flush_step_generation() and use globally
Update code that modifies the low-level kinematics handlers to first
call toolhead.flush_step_generation().

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-11-21 13:17:45 -05:00
Kevin O'Connor 7c80e8d533 toolhead: No need to transition to Flushed state before entering Drip state
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-11-21 13:17:45 -05:00
Florian Heilmann b0a158c271 tmc2130: Do not error if run current below hold current (#2190)
Signed-off-by: Florian Heilmann <Florian.Heilmann@gmx.net>
2019-11-21 11:09:39 -05:00
Kevin O'Connor d38aed0773 cartesian: Report dual_carriage_rails from get_steppers()
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-11-15 12:32:04 -05:00
Kevin O'Connor e1919e3731 toolhead: Don't report buffer_time stat during homing
The buffer_time info is misleading during a homing operation - just
report zero instead.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-11-15 12:21:23 -05:00
Kevin O'Connor 503891cd0e toolhead: Don't call _process_moves() if no moves present
Don't transition to the normal movement state if there aren't any
moves actually ready to be processed.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-11-15 11:55:15 -05:00
Petri Honkala dd529d7ad1 msgproto: unresolved symbol fixed
Signed-off-by: Petri Honkala <cruwaller@gmail.com>
2019-11-15 11:36:54 -05:00
Kevin O'Connor 8efa5e2db4 stepper_enable: Raise an error on bad lookup_enable() call
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-11-14 18:05:32 -05:00
Kevin O'Connor d39142139e stepper: Remove set_commanded_position() call
Now that the only caller to set_commanded_position() is
set_position(), remove the set_commanded_position() method and pass
the set_position() call directly to the itersolve.c code.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-11-13 19:35:26 -05:00
Kevin O'Connor 18b0749163 bltouch: No need to call get/set_commanded_position()
Now that the homing code does not call set_commanded_position(), it is
no longer necessary to save/restore the position in the bltouch code.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-11-13 19:35:26 -05:00
Kevin O'Connor 9396431c6b stepper: Do not call itersolve_set_commanded_pos() after homing
Now that the homing code does not use get_commanded_position(), it is
no longer necessary to alter the low-level commanded position after a
homing move.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-11-13 19:35:26 -05:00
Kevin O'Connor fa433c7f04 homing: Use get/set_tag_position() to determine probed position
Don't rely on get_commanded_position() to determine the final probe
point.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-11-13 19:35:26 -05:00
Kevin O'Connor eed371e924 endstop_phase: Use set_tag_position() instead of set_commanded_position()
Use the new get/set_tag_position() calls to avoid altering the
low-level kinematic position.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-11-13 19:00:23 -05:00
Kevin O'Connor 224574da4a stepper: Add get/set_tag_position() and convert calc_position()
Rename calc_position() to calc_tag_position() and have it calculate
the value of the position from the last stepper set_tag_position()
call.  This enables the calc_tag_position() code to be more flexible
as it can be run with arbitrary positions.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-11-13 19:00:17 -05:00
Kevin O'Connor e0e2f15498 fan: Move M106/M107 commands from gcode.py to fan.py
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-11-13 11:30:42 -05:00
Kevin O'Connor 0a39c339c7 gcode: Remove explicit active extruder tracking
There's no need to have special logic in gcode.py to track the active
extruder.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-11-13 11:02:26 -05:00
Kevin O'Connor e532b75e21 mcu: Minor simplification to default reset detection
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-11-12 22:15:04 -05:00
Kevin O'Connor 6116a5d48f stepper_enable: Remove ability to use a list of pins in enable_pin
Now that the tmc drivers perform automatic soft stepper enabling,
there is no need to be able to list multiple pins in the enable_pin
config setting.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-11-12 18:45:31 -05:00
Kevin O'Connor 77dff35fae tmc: Remove virtual_enable support and replace with automatic support
Automatically detect if the stepper has a dedicated enable line.  If
it does not, then automatically enable virtual enable support.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-11-12 18:45:31 -05:00
Kevin O'Connor a4995c61c9 stepper: Remove add_to_endstop() method
Now that the PrinterStepper and MCU_stepper classes have been merged,
there is no need for the add_to_endstop() method.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-11-12 17:32:18 -05:00
Kevin O'Connor 78153ca4c3 stepper: Merge PrinterStepper and MCU_stepper classes
There's no need to track the two classes separately - just combine
them.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-11-12 17:32:18 -05:00
Kevin O'Connor 4ca190d393 stepper: Move MCU_stepper from mcu.py to stepper.py
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-11-12 17:32:18 -05:00
Kevin O'Connor 0204de46a6 stepper: Simplify PrinterRail init
Use add_extra_stepper() during class init.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-11-12 17:32:18 -05:00
Kevin O'Connor 0e30b862c7 stepper_enable: Move enable tracking from stepper.py to stepper_enable.py
Move the enable line tracking out of the main stepper.py code.  This
simplifies the main kinematic code.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-11-12 17:32:18 -05:00
Kevin O'Connor bfb34e0701 stepper_enable: Move motor_off() logic to stepper_enable.py
Directly disable all the stepper motors on a global motor_off() from
the StepperEnable() class in stepper_enable.py.  This simplifies the
toolhead and kinematic classes.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-11-12 17:32:18 -05:00
Kevin O'Connor f50e054bd0 stepper_enable: Add new extras module for stepper enable line tracking
Move the M18/M84 command handling from gcode.py to new stepper_enable
module.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-11-10 11:55:53 -05:00
Kevin O'Connor bdc7383e51 itersolve: Improve numerical stability of itersolve_generate_steps() loop
Minor rework of the loop to reduce the chance that numerical stability
could cause an infinite loop.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-11-08 14:17:35 -05:00
Kevin O'Connor 0bfb655f66 query_adc: Add a new module to help query and debug analog pins
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-11-07 19:28:27 -05:00
Kevin O'Connor 124ba12485 buttons: Only call into main thread on an adc button change
Determine the selected button (and if it has changed) in the
background thread first.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-11-07 18:49:56 -05:00
Kevin O'Connor 196a69c613 buttons: No need to check for None on min_value/max_value
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-11-07 18:42:55 -05:00
Kevin O'Connor d40f951d6f buttons: Remove MCU_ADC_buttons debug capability
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-11-07 18:32:26 -05:00
Kevin O'Connor 2d5c761101 toolhead: Clear any pending pauses when a shutdown occurs
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-11-07 18:06:46 -05:00
Kevin O'Connor ed610a6600 extruder: Consistently use "extruder" for the primary extruder
No longer allow the primary extruder to be named "extruder0".  This
avoids internal and external confusion between the printer objects and
config section names.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-11-07 16:28:47 -05:00
Kevin O'Connor 32f61b01e9 trapq: Use C99 method for declaring struct members in trapq_append()
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-11-07 11:32:53 -05:00
Kevin O'Connor f63f68bbbb chelper: Report an error if the C host code does not compile
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-11-07 11:32:20 -05:00
Kevin O'Connor 5500538fc5 toolhead: Rename register_move_handler() to register_step_generator()
Rename the function so it is more clear what the step generation code
path is.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-11-07 10:59:35 -05:00
Kevin O'Connor 2981bd601b extruder: Treat extrude with Z only movement to be an "extrude only" move
Do not apply max_extrude_cross_section check, and do apply
extrude_only_xxx checks to Z only moves that also extrude.  Some
printer start scripts will prime the extruder while moving the Z.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-11-07 09:45:36 -05:00
Kevin O'Connor 86121ff79e toolhead: Calculate and store axes_r in move class
Calculate the ratio of axis distance to total move distance (axis_d /
move_d) and store in a new member variable axes_r.  This avoids
needing to recalculate the value in other code.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-11-06 15:51:51 -05:00
Kevin O'Connor 257058981e toolhead: Simplify set_junction() code
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-11-06 15:51:51 -05:00
Kevin O'Connor 076a66f791 trapq: Use separate 'move' entries for accel, cruise, and decel phases
Only track a single acceleration movement in a 'struct move' instance.
Break the classic trapezoid movement (accel, cruise, decel) into three
separate movements.  This simplifies the calculation logic.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-11-06 15:51:51 -05:00
Kevin O'Connor 7ca86f1723 toolhead: Flush trapezoid velocity queue in batches
Load all items from the look-ahead queue into the trapezoid velocity
queue, and then flush that queue by time.  This prevents the host cpu
from being starved on very long moves (which may require a large
number of steps to be generated).  It also improves the overall
performance.

With the batch flushing logic in place, it is no longer necessary to
split homing moves up.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-11-06 15:51:51 -05:00
Kevin O'Connor 1acaaa98c2 trapq: Remove move_fill()
Now that all callers use the trapq system to queue moves, it is no
longer necessary to individually allocate and fill a 'struct move'.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-11-06 15:51:51 -05:00
Kevin O'Connor 797dcfcb12 itersolve: Remove unused gen_steps()
Eliminate the old gen_steps() call now that all callers have been
converted to the newer trapq based generate_steps().

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-11-06 15:51:51 -05:00
Kevin O'Connor bd3c8920f6 mcu: Remove set_ignore_move()
Update callers of set_ignore_move() to use the trapq system to set a
stepper to ignore moves.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-11-06 15:51:51 -05:00
Kevin O'Connor befd263260 toolhead: Remove kinematic move() call
Now that all kinematics use the trapq system, there is no need to call
into the kinematics on each g-code move.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-11-06 15:51:51 -05:00
Kevin O'Connor ef53ded6bc force_move: Convert step generation to use trapq system
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-11-06 15:51:51 -05:00
Kevin O'Connor e6f713f1ce manual_stepper: Convert step generation to use trapq system
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-11-06 15:51:51 -05:00
Kevin O'Connor 9845d0d103 extruder: Convert step generation to use trapq system
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-11-06 15:51:51 -05:00
Kevin O'Connor 746b928c8b winch: Convert step generation to use trapq system
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-11-06 15:51:51 -05:00
Kevin O'Connor 4b5cbc18a4 polar: Convert step generation to use trapq system
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-11-06 15:51:51 -05:00
Kevin O'Connor 351b565728 delta: Convert step generation to use trapq system
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-11-06 15:51:51 -05:00
Kevin O'Connor b792e0fdd1 corexy: Convert step generation to use trapq system
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-11-06 15:51:51 -05:00
Kevin O'Connor 7afac2b3af cartesian: Convert step generation to use trapq system
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-11-06 15:51:51 -05:00
Kevin O'Connor f3ef9c1889 itersolve: Add support for generating steps from a trapq
Support associating a stepper_kinematics with a trapq.  Support
generating steps from a time range on the given trapq.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-11-06 15:51:51 -05:00
Kevin O'Connor d3afe4f1d8 trapq: Initial support for building a queue of trapezoidal velocity moves
Add support for building a list of moves in the trapq.c code.  Update
the toolhead code so that moves generated from the look-ahead code are
added to that list.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-11-06 15:51:51 -05:00
Kevin O'Connor c06f6943a6 list: Add additional list helper functions
Add list_is_first, list_is_last, list_last_entry, and list_prev_entry
helper functions.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-11-06 15:51:51 -05:00
Kevin O'Connor fdbdb3c707 trapq: Add new trapq.c file with code for trapezoidal velocity handling
Move the "struct move" code from itersolve.c to new file trapq.c.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-11-06 15:51:51 -05:00
Kevin O'Connor 374eb98765 polar: Implement bed angle wrapping adjustments in chelper code
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-11-06 15:51:51 -05:00
Kevin O'Connor 92993c062b itersolve: Rename calc_position to calc_position_cb
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-11-06 15:51:51 -05:00
Kevin O'Connor 9945cc0f46 itersolve: Fix possible infinite loop in itersolve_gen_steps()
If the kinematic position calculation function had an error in it (if
it produces sudden position changes) then it could lead to an infinite
loop in itersolve_gen_steps().

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-11-06 15:51:51 -05:00
Kevin O'Connor 5eb5841eaf mcu: Contact and identify all the mcus prior to configuring them
Break up the connect phase into two phases - mcu_identify and connect.
The first phase will contact all the micro-controllers and obtain the
"identify" data dictionaries for them.  Once all the micro-controllers
have been contacted, then they can be configured.  This fixes an issue
with FIRMWARE_RESTART not working correctly on multi-mcu setups that
use restart_method=command.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-11-06 10:35:24 -05:00
Kevin O'Connor 430ad0b658 virtual_sdcard: Only return from M25 after print confirmed paused
Wait in the M25 command handler until the work_handler() background
timer fully exits.  This ensures that subsequent g-code commands (such
as M27 or M24) will correctly report a paused state.

Reported by @foosel.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-10-31 11:36:35 -04:00
Kevin O'Connor 40e2c64c82 clocksync: Fix typo in pause() call at connect time
The initial clock measurement wasn't properly implementing a small
delay between clock queries.  Fix the pause() call so there is a small
delay between queries.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-10-31 11:36:35 -04:00
Kevin O'Connor 0ba5819370 tmc_uart: Don't try to configure analog pins to -1 value
Commit 6f5f2a3b incorrectly altered the analog mux pin config.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-10-26 11:33:30 -04:00
Kevin O'Connor 6f5f2a3bc7 tmc_uart: Make sure to set analog mux pins after a restart
Don't assume the analog mux pins are in a low state at startup.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-10-24 22:00:58 -04:00
Arksine dd12c981ef temperature_fan: add get_status() function
Signed-off-by:  Eric Callahan <arksine.code@gmail.com>
2019-10-22 22:10:13 -04:00
Arksine d85b395a9c bed_mesh: fix error reporting
Fix invalid string formatting in the parse_pair() helper.

Signed-off-by:  Eric Callahan <arksine.code@gmail.com>
2019-10-22 22:09:33 -04:00
Geoff Shannon 789659599c adc_temperature: add support for AD849x thermocouple amplifiers (#1994)
Signed-off-by: Geoff Shannon <geoffpshannon@gmail.com>
2019-10-10 20:11:34 -04:00
Kevin O'Connor 6d7d079bab tuning_tower: Only cancel tuning tower test if extrude at notably lower z
Some print start scripts may extrude at a position slightly higher
than the first z layer height.  Tweak the backwards z test to reduce
the chance of the tuning test ending prematurely.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-10-04 20:10:12 -04:00
Master92 2b553a8108 safe_z_home: Fix unintended change in default behavior
PR #1970 introduced a new parameter, controlling the default behavior of the safe_z_home-module. To avoid unexpected changes, the default of the move_to_previous is now defaulted to False.

Signed-off-by: Nils Friedchen <Nils.Friedchen@googlemail.com>
2019-10-03 18:06:08 -04:00
Jason S. McMullan 7605244fa0 safe_z_home: Fix issue where 'home_xy_position: 0,0' did not position at 0,0
If '[stepper_x]' and/or '[stepper_y]' have a 'position_min' that is
non-zero, and '[safe_z_home] home_xy_position' is '0,0'; then the 'G28'
command will _not_ move to '0,0'; but stay at 'position_min' during the
Z endstop test.

This fix corrects this issue.

Signed-off-by: Jason S. McMullan <jason.mcmullan@gmail.com>
2019-10-03 18:05:21 -04:00
Nicholas Seckar 004edb9613 fan: Add off_below option for fans (#1897)
Below off_below the fan will be turned off. When configured correctly this
can prevent stalling, which may lead to overheating and failed fans. To
simplify calibration and use of this setting, off_below is applied in the
input duty cycle domain, prior to any scaling due to e.g. max_power.

Signed-off-by: Nicholas Seckar <nseckar@gmail.com>
2019-10-03 17:59:03 -04:00
Kevin O'Connor 698159921f tuning_tower: Tool for tuning parameters based on print Z height
This adds a testing tool that can run a command on each Z layer of a
print.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-10-01 14:46:24 -04:00
Julien Lirochon 0c247e55e6 probe: Add range to probe accuracy results (#2015)
Signed-off-by: Julien Lirochon <julien@lirochon.net>
2019-09-29 16:56:46 -04:00
Kevin O'Connor 9fcd3e75cd toolhead: Fix velocity jumps in accel_to_decel lookahead processing
When reducing the maximum speed due to the max_accel_to_decel setting,
move velocity limits must still be propagated.  Otherwise, the
trapezoid move planner may produce moves with velocity jumps.

Signed-off-by: Dmitry Butyugin <dmbutyugin@google.com>
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-09-26 11:10:36 -04:00
Petri Honkala f8f0c3f142 z-tilt: Unresolved symbol fixed
Signed-off-by: Petri Honkala <cruwaller@gmail.com>
2019-09-24 12:17:03 -04:00
Piotr Usewicz a92bdf1d54 gcode_arcs: Use is operator for Null comparison (#1989)
Signed-off-by: Piotr Usewicz <piotr@layer22.com>
2019-09-23 16:49:52 -04:00
Piotr Usewicz 6b2b8f31ee gcode_arcs: Remove unused variables (#1988)
Signed-off-by: Piotr Usewicz <piotr@layer22.com>
2019-09-23 16:49:17 -04:00
achmed20 fce98c5519 gcode_arcs: use z-height defined in f2/3 code, if present
Signed-off-by: Aleksej Vasiljkovic <achmed21@gmail.com>
2019-09-18 11:57:16 -04:00
Kevin O'Connor 8c69e1bcfe gcode: Allow M105 to produce output if called from a macro
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-09-18 09:58:16 -04:00
Master92 3a37d4a208 safe_z_home: Hop only if necessary and add option to move xy back
Once a hop is performed, it will only be re-issued if the z-axis has been
moved in the meantime. Usually it is only moved by a z-homing so doing so
will cause safe_z_home to do the hop on the next homing action.

When z-axis is homed, x and y positions are known. When setting this
boolean option, these are set back to their last positions.

Whenever a hop is specified it is re-issued after the Z axis has been
homed. This is especially necessary when a pressure-based probe is used.
Also, the module decides if a hop is necessary, based on either a known
Z position or a flag that is set whenever the motors are disabled.

Signed-off-by: Nils Friedchen <Nils.Friedchen@googlemail.com>
2019-09-18 09:37:33 -04:00
John Jardine 020ca5ac2c samd_sercom: fix pin enumeration error when mcu is specified
Previously, when a sercom pin specified the mcu (myname:PIN), it would result in a pin enumeration error.

Signed-off-by: John Jardine <john@gprime.net>
2019-09-17 13:28:57 -04:00
Master92 fd2f17f847 controller_fan: Replace else followed by single if with elif
Signed-off-by: Nils Friedchen <Nils.Friedchen@googlemail.com>
2019-09-17 11:52:03 -04:00
Master92 4e09cacece controller_fan: Use keyword arguments to improve readability
Signed-off-by: Nils Friedchen <Nils.Friedchen@googlemail.com>
2019-09-17 11:52:03 -04:00
Master92 4fab93a8b0 controller_fan: Use snake-case for all variables and function-names
Signed-off-by: Nils Friedchen <Nils.Friedchen@googlemail.com>
2019-09-17 11:52:03 -04:00
Master92 6333dc2069 controller_fan: Use _ to declare discarded return value
Signed-off-by: Nils Friedchen <Nils.Friedchen@googlemail.com>
2019-09-17 11:52:03 -04:00
Master92 6250157397 controller_fan: Declare instance-attribute in __init__
Signed-off-by: Nils Friedchen <Nils.Friedchen@googlemail.com>
2019-09-17 11:52:03 -04:00
Kevin O'Connor 43103929e3 temperature_fan: Allow min_speed to be set to zero
Reported by @meteyou.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-09-14 15:35:09 -04:00
Kevin O'Connor 63311b2348 bltouch: Improve handling of low pin_move_time configuration
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-09-14 15:16:26 -04:00
Aleksej Vasiljkovic 7d8c70363a gcode_arcs: Add support for G2/G3 commands
R Still missing, also might be somewhat dirty since code is converted
into G1 commands.

Signed-off-by: Aleksej Vasiljkovic <achmed21@gmail.com>
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-09-13 11:57:54 -04:00
Arksine 49779f13a2 filament_switch_sensor: Add a delay between dispatch of pause and execution of pause gcode
Signed-off-by:  Eric Callahan <arksine.code@gmail.com>
2019-09-08 20:42:43 -04:00