287 Commits (67ca6c7bfe83f7bdf757b2842abe6d926e7cd721)

Author SHA1 Message Date
AnHardt d0e24e0876 Adaptive screen updates for all kinds of displays
The target here is to update the screens of graphical and char base
displays as fast as possible, without draining the planner buffer too much.

For that measure the time it takes to draw and transfer one
(partial) screen to the display. Build a max. value from that.
Because ther can be large differences, depending on how much the display
updates are interrupted, the max value is decreased by one ms/s. This way
it can shrink again.
On the other side we keep track on how much time it takes to empty the
planner buffer.
Now we draw the next (partial) display update only then, when we do not
drain the planner buffer to much. We draw only when the time in the
buffer is two times larger than a update takes, or the buffer is empty anyway.

When we have begun to draw a screen we do not wait until the next 100ms
time slot comes. We draw the next partial screen as fast as possible, but
give the system a chance to refill the buffers a bit.

When we see, during drawing a screen, the screen contend has changed,
we stop the current draw and begin to draw the new content from the top.
8 years ago
Scott Lahteine 7b625e0048 Patch fade_factor compiler warning 8 years ago
AnHardt 13eebd11cf volatile_block_buffer_runtime_us
`block_buffer_runtime_us` is mangled in the planner and in the stepper-ISR.
So it needs to be volatile and interrupt protected.
8 years ago
Scott Lahteine fc2fc828b3 Prettify LIN_ADVANCE code with the positive condition 8 years ago
Scott Lahteine 1929502e15 Add const to some variables 8 years ago
Scott Lahteine 2da4d22520 Pretty up ADVANCE code 8 years ago
Scott Lahteine af024e1d7c Pretty up coast / reverse jerk code 8 years ago
Scott Lahteine 3f3b5c86d8 Slightly shrink code for jerk-based reduction of safe_speed 8 years ago
MagoKimbra 5383212a28 Fix Mesh without Fade Height 8 years ago
Scott Lahteine 3391c785c6 Support for distinct E factors 8 years ago
Scott Lahteine 0dfe95eaba Adjust formatting in Planner 8 years ago
Scott Lahteine 84ff78c1e3 Pass the fade factor to mbl.get_z 8 years ago
Scott Lahteine 8d14420331 Fix compile without ENABLE_LEVELING_FADE_HEIGHT 8 years ago
Scott Lahteine 092e949b58 Merge pull request #5169 from thinkyhead/rc_core_inverted
Support for COREYX, COREZX, COREZY
8 years ago
Scott Lahteine e9e4208ff1 Merge pull request #5274 from Sebastianv650/improve_smooth_moves
Improvement for ENSURE_SMOOTH_MOVES
8 years ago
Scott Lahteine f6f77d34a1 Add a fade factor for mesh leveling 8 years ago
Sebastianv650 8190483eeb Improvement for ENSURE_SMOOTH_MOVES
Instead of waiting for a single long block, compare the complete block
buffer runtime for the long_move() check.
8 years ago
Sebastianv650 de89dc9f04 Ensure smooth print moves even with LCD enabled
lcd_update can take so much time that the block buffer gets drained if
there are only short segments. This leads to jerky printer movements for
example in circles and a bad print quality.

This change implements a simple check: Only if the block currently
executed is long enough, run lcd_update.
This also means the printer will not show actual values on the LCD nor
will it respond to buttons pressed. A option that keeps the menu
accessible is also available.
Aditionaly, slow down if a block would be so fast that adding a new
block to the buffer would take more time. In this case, the buffer would
drain until it's empty in worst case.
8 years ago
Florian Heilmann d08867986e Add autotemp capabilities to M104
This allows M104 to pass the F and B parameters to enable autotemp as well
8 years ago
Sebastianv650 c11b2bb777 Bugfix LIN_ADV
Advance has nothing todo with Z_AXIS, strange copy&paste error?
8 years ago
Sebastianv650 e3ffb58fbd Save some cycle inside the planner
planner.h:
fan speed is used to set integer variables, so no need for long.
Basicaly a byte should be enough for all the fan things, as it's 0-255?

planner.cpp:
Save some float multiplications.
We could squeeze out even more by defining feedrate_percentage,
saved_feedrate_percentage and flow_percentage as float instead of int.
Everytime they are used in the time-critical planner, they are casted to
float and multiplied by 0.01. Not done jet, as they are used in LCD menu
functions I don't know well enough.
8 years ago
Scott Lahteine f663220e87 Store Mix factors as reciprocals and multiply 8 years ago
Scott Lahteine 1864b282c5 Implement reversed CORE options 8 years ago
Scott Lahteine 0269347682 Merge pull request #5141 from thinkyhead/rc_old_slowdown_what
OLD_SLOWDOWN does nothing, so remove it
8 years ago
Sebastianv650 d448500643 Account for moves with negative E movements
Added a rule so that LIN_ADVANCE isn't used for moves with negative E movements (de_float will be negative in this cases).
I also added a more detailed comment to make it more clear what the if statement does.
8 years ago
Scott Lahteine 12167bc8f3 OLD_SLOWDOWN does nothing, so remove it 8 years ago
Sebastianv650 f9bea7968f BugFix for incorrect E-speed calculation
The extrusion speed was wrong due to a not high enough precision of
esteps to XY steps, therefore now the target float values are used to
calculate the ratio between XY movement and extrusion speed.
The e_speed_multiplier8 was replaced by an absolute multiplier called
abs_adv_steps_multiplier8, therefore one multiplication and bitshift can
be saved inside the stepper ISR. Due to this, also extruder_advance_k is
better suited inside the planner and not the stepper files any more.
8 years ago
Scott Lahteine 8dc7807d85 Add support for CoreYZ to planner.buffer_line 8 years ago
Scott Lahteine 1cf878fdb1 Calculate dm and e-steps earlier in planner 8 years ago
Scott Lahteine 75dbb71dd7 Replace block.busy with a block.flag bit 8 years ago
Scott Lahteine c7f22f688f buffer_line can calculate while it's waiting 8 years ago
Scott Lahteine 3fcf915808 Fix uninitialized var in reset_acceleration_rates 8 years ago
Sebastianv650 c397b9d60a Planner acceleration bugfix and speedup v2
.) Use already existing inverse_millimeters instead of /
block->millimeters.
.) Prevent overflow during acceleration calculation by checking if float
is necessary. Idea modified from Sailfish.
.) Save two uint32_t or even float multiplications by checking if
step[AXIS] has steps and if max acceleration is lower than accel. If
not, there is no need to check this axis.
8 years ago
Scott Lahteine 5f5a55a0de Add a ZERO macro to clear arrays 8 years ago
Sebastianv650 9818d97587 Fix Z-hops during retract/prime lead to blobs
We don't want to have retract/prime movements done with LIN_ADVANCE, that's also true with simultaneously executed Z-hops.
8 years ago
esenapaj 1e1edeadd3 Fix for the commit dc2cb84 (Revert acceleration limiting to avoid overflow)
・Add forgotten '\'
8 years ago
Scott Lahteine dc2cb8454c Revert acceleration limiting to avoid overflow 8 years ago
Scott Lahteine 4d89652bc2 Apply minor optimizations to planner.cpp 8 years ago
Scott Lahteine 1092319b19 Adapt speed/jerk code based on Prusa MK2 branch 8 years ago
Scott Lahteine 8e1cc9332a Replace block flag bools with flag bits
…and apply const to some method parameters
8 years ago
Scott Lahteine c5cac486f5 Use a, b, c instead of lx, ly, lz 8 years ago
Josef Pavlik f8c2473a71 Improve planner kinematics, fix delta ABL 8 years ago
Scott Lahteine 761593b74b Cleanup some vars, use of min/max 8 years ago
Scott Lahteine d19cfcfc1d max_jerk array, DEFAULT_XYJERK => DEFAULT_[XY]JERK 8 years ago
Scott Lahteine e7dc174f30 More detailed debugging of G28 delta 8 years ago
Scott Lahteine ecf7cdde65 Augment planner/stepper getters/setters 8 years ago
Scott Lahteine ea0dbee3c9 Enable ABL by type, support bilinear on cartesian 8 years ago
Scott Lahteine 22ece0081e Pass array pointer to unapply_leveling 8 years ago
Scott Lahteine cbc158eb62 Add a proper flag for ABL enabled 8 years ago
Scott Lahteine c6142aa2a1 Minor cleanups in Marlin_main.cpp 8 years ago