Commit graph

287 commits

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.
2016-12-13 18:44:34 +01:00
Scott Lahteine 7b625e0048 Patch fade_factor compiler warning 2016-12-13 02:29:01 -08:00
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.
2016-12-09 14:49:02 +01:00
Scott Lahteine fc2fc828b3 Prettify LIN_ADVANCE code with the positive condition 2016-12-09 00:29:07 -08:00
Scott Lahteine 1929502e15 Add const to some variables 2016-12-09 00:29:06 -08:00
Scott Lahteine 2da4d22520 Pretty up ADVANCE code 2016-12-08 22:51:28 -08:00
Scott Lahteine af024e1d7c Pretty up coast / reverse jerk code 2016-12-08 22:50:25 -08:00
Scott Lahteine 3f3b5c86d8 Slightly shrink code for jerk-based reduction of safe_speed 2016-12-08 22:24:29 -08:00
MagoKimbra 5383212a28 Fix Mesh without Fade Height 2016-12-07 09:23:42 +01:00
Scott Lahteine 3391c785c6 Support for distinct E factors 2016-12-05 07:26:18 -06:00
Scott Lahteine 0dfe95eaba Adjust formatting in Planner 2016-12-05 07:26:17 -06:00
Scott Lahteine 84ff78c1e3 Pass the fade factor to mbl.get_z 2016-12-05 03:01:51 -06:00
Scott Lahteine 8d14420331 Fix compile without ENABLE_LEVELING_FADE_HEIGHT 2016-12-01 11:37:24 -06:00
Scott Lahteine 092e949b58 Merge pull request #5169 from thinkyhead/rc_core_inverted
Support for COREYX, COREZX, COREZY
2016-11-28 02:26:41 -06:00
Scott Lahteine e9e4208ff1 Merge pull request #5274 from Sebastianv650/improve_smooth_moves
Improvement for ENSURE_SMOOTH_MOVES
2016-11-28 02:22:08 -06:00
Scott Lahteine f6f77d34a1 Add a fade factor for mesh leveling 2016-11-26 03:41:26 -06:00
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.
2016-11-21 17:58:24 +01:00
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.
2016-11-19 01:28:47 -06:00
Florian Heilmann d08867986e Add autotemp capabilities to M104
This allows M104 to pass the F and B parameters to enable autotemp as well
2016-11-17 11:28:19 -06:00
Sebastianv650 c11b2bb777 Bugfix LIN_ADV
Advance has nothing todo with Z_AXIS, strange copy&paste error?
2016-11-17 11:28:19 -06:00
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.
2016-11-13 13:34:12 +01:00
Scott Lahteine f663220e87 Store Mix factors as reciprocals and multiply 2016-11-12 15:19:18 -06:00
Scott Lahteine 1864b282c5 Implement reversed CORE options 2016-11-05 23:47:51 -05:00
Scott Lahteine 0269347682 Merge pull request #5141 from thinkyhead/rc_old_slowdown_what
OLD_SLOWDOWN does nothing, so remove it
2016-11-03 23:30:43 -05:00
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.
2016-11-03 17:01:17 +01:00
Scott Lahteine 12167bc8f3 OLD_SLOWDOWN does nothing, so remove it 2016-11-02 01:28:19 -05:00
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.
2016-11-01 08:08:47 +01:00
Scott Lahteine 8dc7807d85 Add support for CoreYZ to planner.buffer_line 2016-10-30 16:16:28 -05:00
Scott Lahteine 1cf878fdb1 Calculate dm and e-steps earlier in planner 2016-10-30 16:16:28 -05:00
Scott Lahteine 75dbb71dd7 Replace block.busy with a block.flag bit 2016-10-30 16:16:28 -05:00
Scott Lahteine c7f22f688f buffer_line can calculate while it's waiting 2016-10-29 17:08:42 -05:00
Scott Lahteine 3fcf915808 Fix uninitialized var in reset_acceleration_rates 2016-10-24 11:55:41 -05:00
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.
2016-10-23 12:47:46 +02:00
Scott Lahteine 5f5a55a0de Add a ZERO macro to clear arrays 2016-10-22 10:07:18 -05:00
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.
2016-10-22 04:54:59 -05:00
esenapaj 1e1edeadd3 Fix for the commit dc2cb84 (Revert acceleration limiting to avoid overflow)
・Add forgotten '\'
2016-10-18 18:07:20 +09:00
Scott Lahteine dc2cb8454c Revert acceleration limiting to avoid overflow 2016-10-17 17:08:41 -05:00
Scott Lahteine 4d89652bc2 Apply minor optimizations to planner.cpp 2016-10-12 04:42:15 -05:00
Scott Lahteine 1092319b19 Adapt speed/jerk code based on Prusa MK2 branch 2016-10-12 04:42:14 -05:00
Scott Lahteine 8e1cc9332a Replace block flag bools with flag bits
…and apply const to some method parameters
2016-10-10 23:17:49 -05:00
Scott Lahteine c5cac486f5 Use a, b, c instead of lx, ly, lz 2016-10-09 14:34:24 -05:00
Josef Pavlik f8c2473a71 Improve planner kinematics, fix delta ABL 2016-10-09 13:32:46 -05:00
Scott Lahteine 761593b74b Cleanup some vars, use of min/max 2016-10-02 06:34:56 -05:00
Scott Lahteine d19cfcfc1d max_jerk array, DEFAULT_XYJERK => DEFAULT_[XY]JERK 2016-10-02 06:34:56 -05:00
Scott Lahteine e7dc174f30 More detailed debugging of G28 delta 2016-10-02 02:18:57 -05:00
Scott Lahteine ecf7cdde65 Augment planner/stepper getters/setters 2016-09-29 01:27:37 -05:00
Scott Lahteine ea0dbee3c9 Enable ABL by type, support bilinear on cartesian 2016-09-25 23:35:37 -05:00
Scott Lahteine 22ece0081e Pass array pointer to unapply_leveling 2016-09-23 15:39:01 -05:00
Scott Lahteine cbc158eb62 Add a proper flag for ABL enabled 2016-09-23 15:39:01 -05:00
Scott Lahteine c6142aa2a1 Minor cleanups in Marlin_main.cpp 2016-09-23 03:03:14 -05:00