Firmware/Marlin
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
2016-12-05 12:22:54 -06:00
..
example_configurations Merge pull request #5318 from Sebastianv650/Account_for_LCD_improvements 2016-12-05 11:23:58 -06:00
blinkm.cpp
blinkm.h
boards.h Update boards.h 2016-11-12 12:24:47 +01:00
buzzer.h fixed warning: ISO C++ forbids compound-literals 2016-10-22 11:23:16 -05:00
cardreader.cpp Hide hidden files and folders 2016-11-26 06:26:28 -06:00
cardreader.h Fix bug in CardReader::stopSDPrint 2016-08-12 03:21:10 -07:00
circularqueue.h Patch up CircularQueue 2016-08-02 18:57:15 -07:00
Conditionals_LCD.h Support for distinct E factors 2016-12-05 07:26:18 -06:00
Conditionals_post.h Merge pull request #5169 from thinkyhead/rc_core_inverted 2016-11-28 02:26:41 -06:00
Conditionals.h Make Conditionals.h a catch-all for old configs 2016-07-30 04:25:30 -07:00
Configuration_adv.h Merge pull request #5318 from Sebastianv650/Account_for_LCD_improvements 2016-12-05 11:23:58 -06:00
configuration_store.cpp Support for distinct E factors 2016-12-05 07:26:18 -06:00
configuration_store.h Print error for M500 with disabled EEPROM 2016-10-28 18:53:48 -05:00
Configuration.h Support for distinct E factors 2016-12-05 07:26:18 -06:00
dac_mcp4728.cpp Fix DAC current code 2016-10-17 15:17:57 -05:00
dac_mcp4728.h Fix DAC current code 2016-10-17 15:17:57 -05:00
digipot_mcp4451.cpp Unify config in a single include without nested includes 2016-07-25 23:04:19 -07:00
dogm_bitmaps.h
dogm_font_data_6x9_marlin.h
dogm_font_data_HD44780_C.h
dogm_font_data_HD44780_J.h
dogm_font_data_HD44780_W.h
dogm_font_data_ISO10646_1_tr.h Change font decent to -1 for tt and gr 2016-11-26 02:29:23 +01:00
dogm_font_data_ISO10646_1.h
dogm_font_data_ISO10646_5_Cyrillic.h
dogm_font_data_ISO10646_CN.h
dogm_font_data_ISO10646_Greek.h Change font decent to -1 for tt and gr 2016-11-26 02:29:23 +01:00
dogm_font_data_ISO10646_Kana.h
dogm_font_data_Marlin_symbols.h
duration_t.h Better alignment of elapsed print time 2016-12-04 21:30:49 -06:00
endstop_interrupts.h More detailed static_assert messages 2016-11-18 22:24:46 -06:00
endstops.cpp Implement reversed CORE options 2016-11-05 23:47:51 -05:00
endstops.h const arguments to test_dual_z_endstops 2016-10-29 16:01:27 -05:00
enum.h Support for distinct E factors 2016-12-05 07:26:18 -06:00
fastio.h Merge pull request #4894 from thinkyhead/rc_mightyboard_rev_e 2016-10-31 08:01:41 -05:00
language_an.h max_jerk array, DEFAULT_XYJERK => DEFAULT_[XY]JERK 2016-10-02 06:34:56 -05:00
language_bg.h Add placeholders for Bulgarian translation 2016-12-03 12:14:02 -06:00
language_ca.h max_jerk array, DEFAULT_XYJERK => DEFAULT_[XY]JERK 2016-10-02 06:34:56 -05:00
language_cn.h Follow up the PR #5167 (Add Turkish Language), etc 2016-11-06 23:59:02 +09:00
language_cz.h Update Czech 2016-12-03 10:32:34 +01:00
language_da.h Re-follow the PR #4634 (Set language display charset in language.h) 2016-11-18 17:44:49 +09:00
language_de.h Add missing translations to lang-de 2016-12-03 20:51:49 +01:00
language_el-gr.h Activate font and mapper for el-gr 2016-11-26 02:30:37 +01:00
language_el.h Patch up some language formatting 2016-11-18 01:16:58 -06:00
language_en.h Added Menu entry for Case light 2016-11-23 19:29:15 +01:00
language_es.h Follow up the PR #5167 (Add Turkish Language), etc 2016-11-06 23:59:02 +09:00
language_eu.h max_jerk array, DEFAULT_XYJERK => DEFAULT_[XY]JERK 2016-10-02 06:34:56 -05:00
language_fi.h max_jerk array, DEFAULT_XYJERK => DEFAULT_[XY]JERK 2016-10-02 06:34:56 -05:00
language_fr.h Patch up some language formatting 2016-11-18 01:16:58 -06:00
language_gl.h Galician language update. 2016-12-05 10:11:28 -06:00
language_hr.h Update Croatian to include missing strings 2016-12-03 11:15:41 -06:00
language_it.h Added missing translations 2016-12-02 18:49:39 +01:00
language_kana_utf8.h Update Japanese translation 2016-11-24 21:10:40 +09:00
language_kana.h Update Japanese translation 2016-11-24 21:10:40 +09:00
language_nl.h max_jerk array, DEFAULT_XYJERK => DEFAULT_[XY]JERK 2016-10-02 06:34:56 -05:00
language_pl.h Add placeholders for Polish translatable strings 2016-12-05 10:37:00 -06:00
language_pt_utf8.h max_jerk array, DEFAULT_XYJERK => DEFAULT_[XY]JERK 2016-10-02 06:34:56 -05:00
language_pt-br_utf8.h max_jerk array, DEFAULT_XYJERK => DEFAULT_[XY]JERK 2016-10-02 06:34:56 -05:00
language_pt-br.h max_jerk array, DEFAULT_XYJERK => DEFAULT_[XY]JERK 2016-10-02 06:34:56 -05:00
language_pt.h max_jerk array, DEFAULT_XYJERK => DEFAULT_[XY]JERK 2016-10-02 06:34:56 -05:00
language_ru.h max_jerk array, DEFAULT_XYJERK => DEFAULT_[XY]JERK 2016-10-02 06:34:56 -05:00
language_test.h Keep SIMULATE_ROMFONT only language.h 2016-08-15 19:11:31 -07:00
language_tr_utf8.h Add UTF8 Turkish Translation 2016-11-23 14:19:16 -06:00
language_tr.h Added Human Readable Comments 2016-11-23 14:19:16 -06:00
language_uk.h adding ukrainian laguage support 2016-11-29 14:49:45 +02:00
language.h adding ukrainian laguage support 2016-11-29 14:49:45 +02:00
M100_Free_Mem_Chk.cpp
macros.h Limit preheat parameters based on all nozzles 2016-11-28 01:37:24 -06:00
Makefile reduce binary size of .hex 2016-11-15 21:57:15 +01:00
Marlin_main.cpp Merge pull request #5371 from thinkyhead/rc_extruders_can_differ 2016-12-05 11:22:31 -06:00
Marlin.h Make LOGICAL and RAW position macros ternary-compatible 2016-12-05 06:43:26 -06:00
Marlin.ino Add TMC2130 support 2016-11-21 00:17:45 -06:00
MarlinConfig.h Merge pull request #4419 from AnHardt/sd2pinmap 2016-07-28 17:38:46 -07:00
MarlinSerial.cpp Centralize click-handling in the LCD loop 2016-10-28 20:57:21 -05:00
MarlinSerial.h Optimize, reduce size of MarlinSerial 2016-08-19 16:53:20 -05:00
mesh_bed_leveling.cpp Add a ZERO macro to clear arrays 2016-10-22 10:07:18 -05:00
mesh_bed_leveling.h Pass the fade factor to mbl.get_z 2016-12-05 03:01:51 -06:00
nozzle.h
pins_3DRAG.h Follow-up the PR #4955, etc 2016-10-10 14:22:43 +09:00
pins_5DPRINT.h Follow-up the PR #4955, etc 2016-10-10 14:22:43 +09:00
pins_99.h Follow-up the PR #4955, etc 2016-10-10 14:22:43 +09:00
pins_A4JP.h No FAN0_PIN 2016-10-31 08:08:03 -05:00
pins_AZTEEG_X1.h
pins_AZTEEG_X3_PRO.h Predefine auto fan pins in some pins files 2016-10-26 18:38:32 -05:00
pins_AZTEEG_X3.h Follow-up the PR #5087 (Fixed SERVO pins on Azteeg X3), etc 2016-10-27 06:46:03 +09:00
pins_BAM_DICE_DUE.h Follow-up the PR #4955, etc 2016-10-10 14:22:43 +09:00
pins_BQ_ZUM_MEGA_3D.h Predefine auto fan pins in some pins files 2016-10-26 18:38:32 -05:00
pins_BRAINWAVE_PRO.h Follow-up the PR #4955, etc 2016-10-10 14:22:43 +09:00
pins_BRAINWAVE.h Follow-up the PR #4955, etc 2016-10-10 14:22:43 +09:00
pins_CHEAPTRONIC.h Follow-up the PR #4955, etc 2016-10-10 14:22:43 +09:00
pins_CNCONTROLS_11.h Predefine auto fan pins in some pins files 2016-10-26 18:38:32 -05:00
pins_CNCONTROLS_12.h Predefine auto fan pins in some pins files 2016-10-26 18:38:32 -05:00
pins_ELEFU_3.h Follow-up the PR #4955, etc 2016-10-10 14:22:43 +09:00
pins_FELIX2.h Follow-up the PR #4955, etc 2016-10-10 14:22:43 +09:00
pins_GEN3_MONOLITHIC.h Follow-up the PR #4955, etc 2016-10-10 14:22:43 +09:00
pins_GEN3_PLUS.h Follow-up the PR #4955, etc 2016-10-10 14:22:43 +09:00
pins_GEN6_DELUXE.h
pins_GEN6.h Follow-up the PR #4955, etc 2016-10-10 14:22:43 +09:00
pins_GEN7_12.h Label analog pins in a similar way 2016-10-05 06:13:30 -05:00
pins_GEN7_13.h
pins_GEN7_14.h Follow-up the PR #4955, etc 2016-10-10 14:22:43 +09:00
pins_GEN7_CUSTOM.h Follow-up the PR #4955, etc 2016-10-10 14:22:43 +09:00
pins_K8200.h
pins_K8400.h Follow-up the PR #4955, etc 2016-10-10 14:22:43 +09:00
pins_LEAPFROG.h Follow-up the PR #4955, etc 2016-10-10 14:22:43 +09:00
pins_MEGACONTROLLER.h Follow-up the PR #4955, etc 2016-10-10 14:22:43 +09:00
pins_MEGATRONICS_2.h Follow-up the PR #4955, etc 2016-10-10 14:22:43 +09:00
pins_MEGATRONICS_3.h Update pins_MEGATRONICS_3.h 2016-11-12 12:26:07 +01:00
pins_MEGATRONICS.h Follow-up the PR #4955, etc 2016-10-10 14:22:43 +09:00
pins_MELZI_MAKR3D.h
pins_MELZI.h
pins_MIGHTYBOARD_REVE.h Developer note in pins_MIGHTYBOARD_REVE.h 2016-10-31 08:22:39 -05:00
pins_MINIRAMBO.h Follow-up the PR #4955, etc 2016-10-10 14:22:43 +09:00
pins_MINITRONICS.h Follow-up the PR #4955, etc 2016-10-10 14:22:43 +09:00
pins_MKS_13.h Follow-up the PR #4955, etc 2016-10-10 14:22:43 +09:00
pins_MKS_BASE.h Follow-up the PR #4955, etc 2016-10-10 14:22:43 +09:00
pins_OMCA_A.h Follow-up the PR #4955, etc 2016-10-10 14:22:43 +09:00
pins_OMCA.h Follow-up the PR #4955, etc 2016-10-10 14:22:43 +09:00
pins_PRINTRBOARD_REVF.h Follow-up the PR #4955, etc 2016-10-10 14:22:43 +09:00
pins_PRINTRBOARD.h Follow-up the PR #4955, etc 2016-10-10 14:22:43 +09:00
pins_RAMBO.h Follow-up the PR #4955, etc 2016-10-10 14:22:43 +09:00
pins_RAMPS_13.h pins_RAMPS_14.h => pins_RAMPS.h 2016-07-30 04:17:21 -07:00
pins_RAMPS_OLD.h Follow-up the PR #4955, etc 2016-10-10 14:22:43 +09:00
pins_RAMPS.h Add TMC2130 support 2016-11-21 00:17:45 -06:00
pins_RIGIDBOARD_V2.h Follow-up the PR #4955, etc 2016-10-10 14:22:43 +09:00
pins_RIGIDBOARD.h Follow-up the PR #4955, etc 2016-10-10 14:22:43 +09:00
pins_RUMBA.h Follow-up the PR #4955, etc 2016-10-10 14:22:43 +09:00
pins_SAINSMART_2IN1.h Follow-up the PR #4955, etc 2016-10-10 14:22:43 +09:00
pins_SANGUINOLOLU_11.h Follow-up the PR #4955, etc 2016-10-10 14:22:43 +09:00
pins_SANGUINOLOLU_12.h
pins_SAV_MKI.h Follow-up the PR #4955, etc 2016-10-10 14:22:43 +09:00
pins_SETHI.h Follow-up the PR #4955, etc 2016-10-10 14:22:43 +09:00
pins_STB_11.h
pins_TEENSY2.h Follow-up the PR #4955, etc 2016-10-10 14:22:43 +09:00
pins_TEENSYLU.h Follow-up the PR #4955, etc 2016-10-10 14:22:43 +09:00
pins_ULTIMAIN_2.h Follow-up the PR #4955, etc 2016-10-10 14:22:43 +09:00
pins_ULTIMAKER_OLD.h Follow-up the PR #4955, etc 2016-10-10 14:22:43 +09:00
pins_ULTIMAKER.h Follow-up the PR #4955, etc 2016-10-10 14:22:43 +09:00
pins.h Update pins.h 2016-11-12 12:25:45 +01:00
pinsDebug.h Save PROGMEM with string changes 2016-12-03 19:21:46 -06:00
planner_bezier.cpp Improve planner kinematics, fix delta ABL 2016-10-09 13:32:46 -05:00
planner_bezier.h
planner.cpp Support for distinct E factors 2016-12-05 07:26:18 -06:00
planner.h Support for distinct E factors 2016-12-05 07:26:18 -06:00
platformio.ini Move platformio directories out of source tree 2016-10-08 13:45:26 -04:00
point_t.h
printcounter.cpp Renamed timestamp_t to duration_t 2016-07-24 03:16:02 +01:00
printcounter.h
qr_solve.cpp Enable ABL by type, support bilinear on cartesian 2016-09-25 23:35:37 -05:00
qr_solve.h Enable ABL by type, support bilinear on cartesian 2016-09-25 23:35:37 -05:00
SanityCheck.h Support for an RGB LED using 3 pins 2016-11-30 00:02:31 -06:00
Sd2Card.cpp Use fastio for literal pins 2016-09-25 06:33:38 -05:00
Sd2Card.h repair-software-spi 2016-07-31 15:50:42 +02:00
SdBaseFile.cpp Clear dir_t size, not pointer size 2016-10-25 22:59:40 -05:00
SdBaseFile.h
SdFatConfig.h repair-software-spi 2016-07-31 15:50:42 +02:00
SdFatStructs.h
SdFatUtil.cpp
SdFatUtil.h Cleanup SdFatUtil.h 2016-08-11 12:47:06 -07:00
SdFile.cpp
SdFile.h
SdInfo.h
SdVolume.cpp
SdVolume.h
servo.cpp Unify config in a single include without nested includes 2016-07-25 23:04:19 -07:00
servo.h
speed_lookuptable.h
stepper_dac.cpp DAC patches 2016-10-10 14:08:04 -05:00
stepper_dac.h Cleanup of code style 2016-10-07 15:57:24 -05:00
stepper_indirection.cpp Reduce all stepper_indirection init code with macros 2016-11-21 00:52:18 -06:00
stepper_indirection.h Add TMC2130 support 2016-11-21 00:17:45 -06:00
stepper.cpp Merge pull request #5259 from Sebastianv650/Allow_UART-ISR_inside_Stepper 2016-12-01 23:17:42 -06:00
stepper.h Minor stepper cleanup 2016-11-18 01:15:57 -06:00
stopwatch.cpp
stopwatch.h
temperature.cpp Enable ISRs inside temperature ISR 2016-11-28 20:08:50 +01:00
temperature.h Implement reversed CORE options 2016-11-05 23:47:51 -05:00
thermistornames.h
thermistortables.h
twibus.cpp Allow send to i2c address 0 (broadcast) 2016-11-08 17:54:55 -06:00
twibus.h M155=>M260, M156=>M261 2016-11-08 17:54:54 -06:00
types.h Adds types.h 2016-07-30 02:55:52 +01:00
ultralcd_impl_DOGM.h Distribute GLCD screen updates in time 2016-12-05 12:22:54 -06:00
ultralcd_impl_HD44780.h Better alignment of elapsed print time 2016-12-04 21:30:49 -06:00
ultralcd_st7920_u8glib_rrd.h Distribute GLCD screen updates in time 2016-12-05 12:22:54 -06:00
ultralcd.cpp Distribute GLCD screen updates in time 2016-12-05 12:22:54 -06:00
ultralcd.h Apply const to LCD arguments and locals 2016-11-26 06:53:52 -06:00
utf_mapper.h Adjust spacing in utf_mapper.h 2016-11-26 06:53:52 -06:00
utility.cpp Implement as optional feature LCD_DECIMAL_SMALL_XY 2016-12-05 09:26:05 -06:00
utility.h Implement as optional feature LCD_DECIMAL_SMALL_XY 2016-12-05 09:26:05 -06:00
vector_3.cpp Enable ABL by type, support bilinear on cartesian 2016-09-25 23:35:37 -05:00
vector_3.h Enable ABL by type, support bilinear on cartesian 2016-09-25 23:35:37 -05:00
Version.h Update distribution date and readme 2016-07-30 21:27:29 +09:00
watchdog.cpp
watchdog.h