81 Commits (2af62a5d8df132a241cb112d59930724f05fb110)

Author SHA1 Message Date
AnHardt a6fbd4a5d8 Distribute GLCD screen updates in time
Currently we draw and send the screens for a graphical LCD all at once.
We draw in two or four parts but draw them directly behind each other.
For the tested status screen this takes 59-62ms in a single block.
During this time nothing else (except the interrupts) can be done.
When printing a sequence of very short moves the buffer drains - sometimes until it's empty.

This PR splits the screen update into parts.
Currently we have 10 time slots. During the first one the complete screen is drawn. (60,0,0,0,0,0,0,0,0,0,0)
Here i introduce pauses for doing other things. (30,30,0,0,0,0,0,0) or (15,15,15,15,0,0,0,0,0,0)
Drawing in consecutive time slots prevents from lagging too much. Even with a 4 stripe display all the drawing is done after 400ms.
Previous experiments with a even better distribution of the time slots like
(30,0,0,0,0,30,0,0,0,0) and (15,0,15,0,15,0,15,0,0,0) did not feel good when using the menu, because of too much lag.

Because of the previous PRs to speed up the display updates and especially reducing the difference between drawing 2 or 4 stripes,
it now makes sense for the REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER to go from 2 to 4 stripes. This costs about 1-2ms per complete
screen update, but is payed back by having partial updates lasting only the half time and two additional brakes. Also ~256 byte of
framebuffer are saved in RAM.

13:45:59.213 : echo: #:17 >:13 s:30;   #:16 >:13 s:29;   S#:33 S>:26 S:59
13:46:00.213 : echo: #:16 >:14 s:30;   #:17 >:13 s:30;   S#:33 S>:27 S:60
13:46:01.215 : echo: #:17 >:13 s:30;   #:16 >:13 s:29;   S#:33 S>:26 S:59
13:46:02.215 : echo: #:16 >:13 s:29;   #:16 >:14 s:30;   S#:32 S>:27 S:59
13:46:03.214 : echo: #:17 >:13 s:30;   #:17 >:13 s:30;   S#:34 S>:26 S:60
13:46:04.214 : echo: #:16 >:13 s:29;   #:16 >:14 s:30;   S#:32 S>:27 S:59
13:46:05.212 : echo: #:16 >:14 s:30;   #:17 >:13 s:30;   S#:33 S>:27 S:60
13:46:06.212 : echo: #:17 >:13 s:30;   #:16 >:13 s:29;   S#:33 S>:26 S:59

03:30:36.779 : echo: #:8 >:7 s:15;   #:10 >:7 s:17;   #:8 >:6 s:14;   #:8 >:7 s:15;   S#:34 S>:27 S:61
03:30:37.778 : echo: #:8 >:6 s:14;   #:10 >:7 s:17;   #:9 >:7 s:16;   #:8 >:6 s:14;   S#:35 S>:26 S:61
03:30:38.778 : echo: #:8 >:6 s:14;   #:11 >:7 s:18;   #:8 >:6 s:14;   #:8 >:7 s:15;   S#:35 S>:26 S:61
03:30:39.777 : echo: #:8 >:6 s:14;   #:10 >:7 s:17;   #:8 >:8 s:16;   #:8 >:6 s:14;   S#:34 S>:27 S:61
03:30:40.780 : echo: #:8 >:6 s:14;   #:11 >:7 s:18;   #:8 >:6 s:14;   #:8 >:6 s:14;   S#:35 S>:25 S:60
03:30:41.780 : echo: #:9 >:6 s:15;   #:10 >:7 s:17;   #:8 >:6 s:14;   #:9 >:6 s:15;   S#:36 S>:25 S:61
03:30:42.779 : echo: #:8 >:6 s:14;   #:10 >:8 s:18;   #:8 >:6 s:14;   #:8 >:6 s:14;   S#:34 S>:26 S:60
03:30:43.778 : echo: #:9 >:6 s:15;   #:10 >:7 s:17;   #:8 >:7 s:15;   #:9 >:6 s:15;   S#:36 S>:26 S:62

#: draw a stripe
>: transfer a stripe
s: sum of of draw and transfer for one stripe
S#: sum of draws for a complete screen
S>: sum of transfers for a complete screen
S: time to draw and transfer a complete screen
8 years ago
Scott Lahteine 09587f7c0d Fix rows error in DOGM 8 years ago
Scott Lahteine 9d88a61d52 Better alignment of elapsed print time 8 years ago
Scott Lahteine 59fafb93b2 Merge pull request #5304 from AnHardt/pixel-shifting
MENU_HOLLOW_FRAME for the menu screens
8 years ago
AnHardt 7a9fa78822 MENU_HOLLOW_FRAME for the menu screens
MENU_HOLLOW_FRAME for the menu screens and
some pixel shifting to optimize the look with tall fonts. (cn)
8 years ago
AnHardt 24ca1a6289 Not more then 4 stripes for u8g-devices
To optimise speed.
Costs well invested 128Byte of RAM.
8 years ago
Scott Lahteine 71842b6a17 Apply const to LCD arguments and locals 8 years ago
Scott Lahteine b1abd7edef Optimize graphical display with selective rendering 8 years ago
AnHardt b91fab2d7d Fix USE_BIG_EDIT_FONT 8 years ago
esenapaj 7b836a4000 Introduce a +1234.56 format for over 999 steps/mm 8 years ago
Rigid3D 2327764980 Add Turkish Language 8 years ago
Josef Pavlik d35dc407a8 fixed warning: ISO C99 requires rest arguments to be used 8 years ago
Scott Lahteine cb48292338 Use fastio for literal pins 8 years ago
Scott Lahteine 07703d2bd6 Use _PIN suffix on some pins 8 years ago
Scott Lahteine f20b2b21eb Optimize LCD string/char printing 8 years ago
Kai 445d8215e4 Option to show SD percent on Graphical LCD 8 years ago
Scott Lahteine 76c3f326ff Clean up DOGM code, comments 8 years ago
Scott Lahteine 71319adbb8 Wrap ULTIPANEL-dependent code 8 years ago
Scott Lahteine 305913545e Move number-to-string function to utility.* 8 years ago
Scott Lahteine 01f1f779a5 Followup to #4574, specify L for long 8 years ago
Scott Lahteine 880cdb553b Include days in Graphical LCD print timer 8 years ago
Scott Lahteine 03fdb26cd2 Wrangle encoder bits, LCD_CLICKED 8 years ago
Scott Lahteine 277899c175 Move include _Bootscreen.h where needed 8 years ago
Scott Lahteine c6226bb0aa Unify config in a single include without nested includes 8 years ago
brupje a60a668f6b Support for REPRAPWORLD_GRAPHICAL_LCD 8 years ago
Scott Lahteine b7b7c90477 Merge pull request #4389 from thinkyhead/rc_optimize_planner
Optimize planner with precalculation, etc.
8 years ago
Scott Lahteine d8f2876753 Replace some float division with multiplication 8 years ago
João Brázio 62d96d72f3 Renamed timestamp_t to duration_t 8 years ago
João Brázio 86d9311495 Rework LCD implementation to use timestamp_t 8 years ago
Scott Lahteine 62ecd107ba Patch ultralcd_impl header conditional names 8 years ago
Scott Lahteine 8a2efd1155 Rename ultralcd implementation files for consistency 8 years ago