Browse Source

Merge pull request #5253 from thinkyhead/rc_smooth_move_ex-lax

Ensure smooth print moves even with LCD enabled
Scott Lahteine 8 years ago
parent
commit
79c8591192

+ 29
- 0
Marlin/Configuration_adv.h View File

@@ -496,6 +496,35 @@
496 496
   #define BABYSTEP_MULTIPLICATOR 1 //faster movements
497 497
 #endif
498 498
 
499
+//
500
+// Ensure Smooth Moves
501
+//
502
+// Enable this option to prevent the machine from stuttering when printing multiple short segments.
503
+// This feature uses two strategies to eliminate stuttering:
504
+//
505
+// 1. During short segments a Graphical LCD update may take so much time that the planner buffer gets
506
+//    completely drained. When this happens pauses are introduced between short segments, and print moves
507
+//    will become jerky until a longer segment provides enough time for the buffer to be filled again.
508
+//    This jerkiness negatively affects print quality. The ENSURE_SMOOTH_MOVES option addresses the issue
509
+//    by pausing the LCD until there's enough time to safely update.
510
+//
511
+//    NOTE: This will cause the Info Screen to lag and controller buttons may become unresponsive.
512
+//          Enable ALWAYS_ALLOW_MENU to keep the controller responsive.
513
+//
514
+// 2. No block is allowed to take less time than MIN_BLOCK_TIME. That's the time it takes in the main
515
+//    loop to add a new block to the buffer, check temperatures, etc., including all blocked time due to
516
+//    interrupts (without LCD update). By enforcing a minimum time-per-move, the buffer is prevented from
517
+//    draining.
518
+//
519
+//#define ENSURE_SMOOTH_MOVES
520
+#if ENABLED(ENSURE_SMOOTH_MOVES)
521
+  //#define ALWAYS_ALLOW_MENU      // If enabled, the menu will always be responsive.
522
+                                   // WARNING: Menu navigation during short moves may cause stuttering!
523
+  #define LCD_UPDATE_THRESHOLD 170 // (ms) Minimum duration for the current segment to allow an LCD update.
524
+                                   // Default value is good for graphical LCDs (e.g., REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER).
525
+  #define MIN_BLOCK_TIME 6         // (ms) Minimum duration of a single block. You shouldn't need to modify this.
526
+#endif
527
+
499 528
 // @section extruder
500 529
 
501 530
 // extruder advance constant (s2/mm3)

+ 29
- 0
Marlin/example_configurations/Cartesio/Configuration_adv.h View File

@@ -496,6 +496,35 @@
496 496
   #define BABYSTEP_MULTIPLICATOR 1 //faster movements
497 497
 #endif
498 498
 
499
+//
500
+// Ensure Smooth Moves
501
+//
502
+// Enable this option to prevent the machine from stuttering when printing multiple short segments.
503
+// This feature uses two strategies to eliminate stuttering:
504
+//
505
+// 1. During short segments a Graphical LCD update may take so much time that the planner buffer gets
506
+//    completely drained. When this happens pauses are introduced between short segments, and print moves
507
+//    will become jerky until a longer segment provides enough time for the buffer to be filled again.
508
+//    This jerkiness negatively affects print quality. The ENSURE_SMOOTH_MOVES option addresses the issue
509
+//    by pausing the LCD until there's enough time to safely update.
510
+//
511
+//    NOTE: This will cause the Info Screen to lag and controller buttons may become unresponsive.
512
+//          Enable ALWAYS_ALLOW_MENU to keep the controller responsive.
513
+//
514
+// 2. No block is allowed to take less time than MIN_BLOCK_TIME. That's the time it takes in the main
515
+//    loop to add a new block to the buffer, check temperatures, etc., including all blocked time due to
516
+//    interrupts (without LCD update). By enforcing a minimum time-per-move, the buffer is prevented from
517
+//    draining.
518
+//
519
+//#define ENSURE_SMOOTH_MOVES
520
+#if ENABLED(ENSURE_SMOOTH_MOVES)
521
+  //#define ALWAYS_ALLOW_MENU      // If enabled, the menu will always be responsive.
522
+                                   // WARNING: Menu navigation during short moves may cause stuttering!
523
+  #define LCD_UPDATE_THRESHOLD 170 // (ms) Minimum duration for the current segment to allow an LCD update.
524
+                                   // Default value is good for graphical LCDs (e.g., REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER).
525
+  #define MIN_BLOCK_TIME 6         // (ms) Minimum duration of a single block. You shouldn't need to modify this.
526
+#endif
527
+
499 528
 // @section extruder
500 529
 
501 530
 // extruder advance constant (s2/mm3)

+ 29
- 0
Marlin/example_configurations/Felix/Configuration_adv.h View File

@@ -496,6 +496,35 @@
496 496
   #define BABYSTEP_MULTIPLICATOR 1 //faster movements
497 497
 #endif
498 498
 
499
+//
500
+// Ensure Smooth Moves
501
+//
502
+// Enable this option to prevent the machine from stuttering when printing multiple short segments.
503
+// This feature uses two strategies to eliminate stuttering:
504
+//
505
+// 1. During short segments a Graphical LCD update may take so much time that the planner buffer gets
506
+//    completely drained. When this happens pauses are introduced between short segments, and print moves
507
+//    will become jerky until a longer segment provides enough time for the buffer to be filled again.
508
+//    This jerkiness negatively affects print quality. The ENSURE_SMOOTH_MOVES option addresses the issue
509
+//    by pausing the LCD until there's enough time to safely update.
510
+//
511
+//    NOTE: This will cause the Info Screen to lag and controller buttons may become unresponsive.
512
+//          Enable ALWAYS_ALLOW_MENU to keep the controller responsive.
513
+//
514
+// 2. No block is allowed to take less time than MIN_BLOCK_TIME. That's the time it takes in the main
515
+//    loop to add a new block to the buffer, check temperatures, etc., including all blocked time due to
516
+//    interrupts (without LCD update). By enforcing a minimum time-per-move, the buffer is prevented from
517
+//    draining.
518
+//
519
+//#define ENSURE_SMOOTH_MOVES
520
+#if ENABLED(ENSURE_SMOOTH_MOVES)
521
+  //#define ALWAYS_ALLOW_MENU      // If enabled, the menu will always be responsive.
522
+                                   // WARNING: Menu navigation during short moves may cause stuttering!
523
+  #define LCD_UPDATE_THRESHOLD 170 // (ms) Minimum duration for the current segment to allow an LCD update.
524
+                                   // Default value is good for graphical LCDs (e.g., REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER).
525
+  #define MIN_BLOCK_TIME 6         // (ms) Minimum duration of a single block. You shouldn't need to modify this.
526
+#endif
527
+
499 528
 // @section extruder
500 529
 
501 530
 // extruder advance constant (s2/mm3)

+ 29
- 0
Marlin/example_configurations/Hephestos/Configuration_adv.h View File

@@ -496,6 +496,35 @@
496 496
   #define BABYSTEP_MULTIPLICATOR 1 //faster movements
497 497
 #endif
498 498
 
499
+//
500
+// Ensure Smooth Moves
501
+//
502
+// Enable this option to prevent the machine from stuttering when printing multiple short segments.
503
+// This feature uses two strategies to eliminate stuttering:
504
+//
505
+// 1. During short segments a Graphical LCD update may take so much time that the planner buffer gets
506
+//    completely drained. When this happens pauses are introduced between short segments, and print moves
507
+//    will become jerky until a longer segment provides enough time for the buffer to be filled again.
508
+//    This jerkiness negatively affects print quality. The ENSURE_SMOOTH_MOVES option addresses the issue
509
+//    by pausing the LCD until there's enough time to safely update.
510
+//
511
+//    NOTE: This will cause the Info Screen to lag and controller buttons may become unresponsive.
512
+//          Enable ALWAYS_ALLOW_MENU to keep the controller responsive.
513
+//
514
+// 2. No block is allowed to take less time than MIN_BLOCK_TIME. That's the time it takes in the main
515
+//    loop to add a new block to the buffer, check temperatures, etc., including all blocked time due to
516
+//    interrupts (without LCD update). By enforcing a minimum time-per-move, the buffer is prevented from
517
+//    draining.
518
+//
519
+//#define ENSURE_SMOOTH_MOVES
520
+#if ENABLED(ENSURE_SMOOTH_MOVES)
521
+  //#define ALWAYS_ALLOW_MENU      // If enabled, the menu will always be responsive.
522
+                                   // WARNING: Menu navigation during short moves may cause stuttering!
523
+  #define LCD_UPDATE_THRESHOLD 170 // (ms) Minimum duration for the current segment to allow an LCD update.
524
+                                   // Default value is good for graphical LCDs (e.g., REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER).
525
+  #define MIN_BLOCK_TIME 6         // (ms) Minimum duration of a single block. You shouldn't need to modify this.
526
+#endif
527
+
499 528
 // @section extruder
500 529
 
501 530
 // extruder advance constant (s2/mm3)

+ 29
- 0
Marlin/example_configurations/Hephestos_2/Configuration_adv.h View File

@@ -496,6 +496,35 @@
496 496
   #define BABYSTEP_MULTIPLICATOR 1 //faster movements
497 497
 #endif
498 498
 
499
+//
500
+// Ensure Smooth Moves
501
+//
502
+// Enable this option to prevent the machine from stuttering when printing multiple short segments.
503
+// This feature uses two strategies to eliminate stuttering:
504
+//
505
+// 1. During short segments a Graphical LCD update may take so much time that the planner buffer gets
506
+//    completely drained. When this happens pauses are introduced between short segments, and print moves
507
+//    will become jerky until a longer segment provides enough time for the buffer to be filled again.
508
+//    This jerkiness negatively affects print quality. The ENSURE_SMOOTH_MOVES option addresses the issue
509
+//    by pausing the LCD until there's enough time to safely update.
510
+//
511
+//    NOTE: This will cause the Info Screen to lag and controller buttons may become unresponsive.
512
+//          Enable ALWAYS_ALLOW_MENU to keep the controller responsive.
513
+//
514
+// 2. No block is allowed to take less time than MIN_BLOCK_TIME. That's the time it takes in the main
515
+//    loop to add a new block to the buffer, check temperatures, etc., including all blocked time due to
516
+//    interrupts (without LCD update). By enforcing a minimum time-per-move, the buffer is prevented from
517
+//    draining.
518
+//
519
+//#define ENSURE_SMOOTH_MOVES
520
+#if ENABLED(ENSURE_SMOOTH_MOVES)
521
+  //#define ALWAYS_ALLOW_MENU      // If enabled, the menu will always be responsive.
522
+                                   // WARNING: Menu navigation during short moves may cause stuttering!
523
+  #define LCD_UPDATE_THRESHOLD 170 // (ms) Minimum duration for the current segment to allow an LCD update.
524
+                                   // Default value is good for graphical LCDs (e.g., REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER).
525
+  #define MIN_BLOCK_TIME 6         // (ms) Minimum duration of a single block. You shouldn't need to modify this.
526
+#endif
527
+
499 528
 // @section extruder
500 529
 
501 530
 // extruder advance constant (s2/mm3)

+ 29
- 0
Marlin/example_configurations/K8200/Configuration_adv.h View File

@@ -509,6 +509,35 @@
509 509
   #define BABYSTEP_MULTIPLICATOR 1 //faster movements
510 510
 #endif
511 511
 
512
+//
513
+// Ensure Smooth Moves
514
+//
515
+// Enable this option to prevent the machine from stuttering when printing multiple short segments.
516
+// This feature uses two strategies to eliminate stuttering:
517
+//
518
+// 1. During short segments a Graphical LCD update may take so much time that the planner buffer gets
519
+//    completely drained. When this happens pauses are introduced between short segments, and print moves
520
+//    will become jerky until a longer segment provides enough time for the buffer to be filled again.
521
+//    This jerkiness negatively affects print quality. The ENSURE_SMOOTH_MOVES option addresses the issue
522
+//    by pausing the LCD until there's enough time to safely update.
523
+//
524
+//    NOTE: This will cause the Info Screen to lag and controller buttons may become unresponsive.
525
+//          Enable ALWAYS_ALLOW_MENU to keep the controller responsive.
526
+//
527
+// 2. No block is allowed to take less time than MIN_BLOCK_TIME. That's the time it takes in the main
528
+//    loop to add a new block to the buffer, check temperatures, etc., including all blocked time due to
529
+//    interrupts (without LCD update). By enforcing a minimum time-per-move, the buffer is prevented from
530
+//    draining.
531
+//
532
+//#define ENSURE_SMOOTH_MOVES
533
+#if ENABLED(ENSURE_SMOOTH_MOVES)
534
+  //#define ALWAYS_ALLOW_MENU      // If enabled, the menu will always be responsive.
535
+                                   // WARNING: Menu navigation during short moves may cause stuttering!
536
+  #define LCD_UPDATE_THRESHOLD 170 // (ms) Minimum duration for the current segment to allow an LCD update.
537
+                                   // Default value is good for graphical LCDs (e.g., REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER).
538
+  #define MIN_BLOCK_TIME 6         // (ms) Minimum duration of a single block. You shouldn't need to modify this.
539
+#endif
540
+
512 541
 // @section extruder
513 542
 
514 543
 // extruder advance constant (s2/mm3)

+ 29
- 0
Marlin/example_configurations/K8400/Configuration_adv.h View File

@@ -496,6 +496,35 @@
496 496
   #define BABYSTEP_MULTIPLICATOR 1 //faster movements
497 497
 #endif
498 498
 
499
+//
500
+// Ensure Smooth Moves
501
+//
502
+// Enable this option to prevent the machine from stuttering when printing multiple short segments.
503
+// This feature uses two strategies to eliminate stuttering:
504
+//
505
+// 1. During short segments a Graphical LCD update may take so much time that the planner buffer gets
506
+//    completely drained. When this happens pauses are introduced between short segments, and print moves
507
+//    will become jerky until a longer segment provides enough time for the buffer to be filled again.
508
+//    This jerkiness negatively affects print quality. The ENSURE_SMOOTH_MOVES option addresses the issue
509
+//    by pausing the LCD until there's enough time to safely update.
510
+//
511
+//    NOTE: This will cause the Info Screen to lag and controller buttons may become unresponsive.
512
+//          Enable ALWAYS_ALLOW_MENU to keep the controller responsive.
513
+//
514
+// 2. No block is allowed to take less time than MIN_BLOCK_TIME. That's the time it takes in the main
515
+//    loop to add a new block to the buffer, check temperatures, etc., including all blocked time due to
516
+//    interrupts (without LCD update). By enforcing a minimum time-per-move, the buffer is prevented from
517
+//    draining.
518
+//
519
+//#define ENSURE_SMOOTH_MOVES
520
+#if ENABLED(ENSURE_SMOOTH_MOVES)
521
+  //#define ALWAYS_ALLOW_MENU      // If enabled, the menu will always be responsive.
522
+                                   // WARNING: Menu navigation during short moves may cause stuttering!
523
+  #define LCD_UPDATE_THRESHOLD 170 // (ms) Minimum duration for the current segment to allow an LCD update.
524
+                                   // Default value is good for graphical LCDs (e.g., REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER).
525
+  #define MIN_BLOCK_TIME 6         // (ms) Minimum duration of a single block. You shouldn't need to modify this.
526
+#endif
527
+
499 528
 // @section extruder
500 529
 
501 530
 // extruder advance constant (s2/mm3)

+ 29
- 0
Marlin/example_configurations/RigidBot/Configuration_adv.h View File

@@ -496,6 +496,35 @@
496 496
   #define BABYSTEP_MULTIPLICATOR 1 //faster movements
497 497
 #endif
498 498
 
499
+//
500
+// Ensure Smooth Moves
501
+//
502
+// Enable this option to prevent the machine from stuttering when printing multiple short segments.
503
+// This feature uses two strategies to eliminate stuttering:
504
+//
505
+// 1. During short segments a Graphical LCD update may take so much time that the planner buffer gets
506
+//    completely drained. When this happens pauses are introduced between short segments, and print moves
507
+//    will become jerky until a longer segment provides enough time for the buffer to be filled again.
508
+//    This jerkiness negatively affects print quality. The ENSURE_SMOOTH_MOVES option addresses the issue
509
+//    by pausing the LCD until there's enough time to safely update.
510
+//
511
+//    NOTE: This will cause the Info Screen to lag and controller buttons may become unresponsive.
512
+//          Enable ALWAYS_ALLOW_MENU to keep the controller responsive.
513
+//
514
+// 2. No block is allowed to take less time than MIN_BLOCK_TIME. That's the time it takes in the main
515
+//    loop to add a new block to the buffer, check temperatures, etc., including all blocked time due to
516
+//    interrupts (without LCD update). By enforcing a minimum time-per-move, the buffer is prevented from
517
+//    draining.
518
+//
519
+//#define ENSURE_SMOOTH_MOVES
520
+#if ENABLED(ENSURE_SMOOTH_MOVES)
521
+  //#define ALWAYS_ALLOW_MENU      // If enabled, the menu will always be responsive.
522
+                                   // WARNING: Menu navigation during short moves may cause stuttering!
523
+  #define LCD_UPDATE_THRESHOLD 170 // (ms) Minimum duration for the current segment to allow an LCD update.
524
+                                   // Default value is good for graphical LCDs (e.g., REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER).
525
+  #define MIN_BLOCK_TIME 6         // (ms) Minimum duration of a single block. You shouldn't need to modify this.
526
+#endif
527
+
499 528
 // @section extruder
500 529
 
501 530
 // extruder advance constant (s2/mm3)

+ 29
- 0
Marlin/example_configurations/SCARA/Configuration_adv.h View File

@@ -496,6 +496,35 @@
496 496
   #define BABYSTEP_MULTIPLICATOR 1 //faster movements
497 497
 #endif
498 498
 
499
+//
500
+// Ensure Smooth Moves
501
+//
502
+// Enable this option to prevent the machine from stuttering when printing multiple short segments.
503
+// This feature uses two strategies to eliminate stuttering:
504
+//
505
+// 1. During short segments a Graphical LCD update may take so much time that the planner buffer gets
506
+//    completely drained. When this happens pauses are introduced between short segments, and print moves
507
+//    will become jerky until a longer segment provides enough time for the buffer to be filled again.
508
+//    This jerkiness negatively affects print quality. The ENSURE_SMOOTH_MOVES option addresses the issue
509
+//    by pausing the LCD until there's enough time to safely update.
510
+//
511
+//    NOTE: This will cause the Info Screen to lag and controller buttons may become unresponsive.
512
+//          Enable ALWAYS_ALLOW_MENU to keep the controller responsive.
513
+//
514
+// 2. No block is allowed to take less time than MIN_BLOCK_TIME. That's the time it takes in the main
515
+//    loop to add a new block to the buffer, check temperatures, etc., including all blocked time due to
516
+//    interrupts (without LCD update). By enforcing a minimum time-per-move, the buffer is prevented from
517
+//    draining.
518
+//
519
+//#define ENSURE_SMOOTH_MOVES
520
+#if ENABLED(ENSURE_SMOOTH_MOVES)
521
+  //#define ALWAYS_ALLOW_MENU      // If enabled, the menu will always be responsive.
522
+                                   // WARNING: Menu navigation during short moves may cause stuttering!
523
+  #define LCD_UPDATE_THRESHOLD 170 // (ms) Minimum duration for the current segment to allow an LCD update.
524
+                                   // Default value is good for graphical LCDs (e.g., REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER).
525
+  #define MIN_BLOCK_TIME 6         // (ms) Minimum duration of a single block. You shouldn't need to modify this.
526
+#endif
527
+
499 528
 // @section extruder
500 529
 
501 530
 // extruder advance constant (s2/mm3)

+ 29
- 0
Marlin/example_configurations/TAZ4/Configuration_adv.h View File

@@ -504,6 +504,35 @@
504 504
   #define BABYSTEP_MULTIPLICATOR 1 //faster movements
505 505
 #endif
506 506
 
507
+//
508
+// Ensure Smooth Moves
509
+//
510
+// Enable this option to prevent the machine from stuttering when printing multiple short segments.
511
+// This feature uses two strategies to eliminate stuttering:
512
+//
513
+// 1. During short segments a Graphical LCD update may take so much time that the planner buffer gets
514
+//    completely drained. When this happens pauses are introduced between short segments, and print moves
515
+//    will become jerky until a longer segment provides enough time for the buffer to be filled again.
516
+//    This jerkiness negatively affects print quality. The ENSURE_SMOOTH_MOVES option addresses the issue
517
+//    by pausing the LCD until there's enough time to safely update.
518
+//
519
+//    NOTE: This will cause the Info Screen to lag and controller buttons may become unresponsive.
520
+//          Enable ALWAYS_ALLOW_MENU to keep the controller responsive.
521
+//
522
+// 2. No block is allowed to take less time than MIN_BLOCK_TIME. That's the time it takes in the main
523
+//    loop to add a new block to the buffer, check temperatures, etc., including all blocked time due to
524
+//    interrupts (without LCD update). By enforcing a minimum time-per-move, the buffer is prevented from
525
+//    draining.
526
+//
527
+//#define ENSURE_SMOOTH_MOVES
528
+#if ENABLED(ENSURE_SMOOTH_MOVES)
529
+  //#define ALWAYS_ALLOW_MENU      // If enabled, the menu will always be responsive.
530
+                                   // WARNING: Menu navigation during short moves may cause stuttering!
531
+  #define LCD_UPDATE_THRESHOLD 170 // (ms) Minimum duration for the current segment to allow an LCD update.
532
+                                   // Default value is good for graphical LCDs (e.g., REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER).
533
+  #define MIN_BLOCK_TIME 6         // (ms) Minimum duration of a single block. You shouldn't need to modify this.
534
+#endif
535
+
507 536
 // @section extruder
508 537
 
509 538
 // extruder advance constant (s2/mm3)

+ 29
- 0
Marlin/example_configurations/WITBOX/Configuration_adv.h View File

@@ -496,6 +496,35 @@
496 496
   #define BABYSTEP_MULTIPLICATOR 1 //faster movements
497 497
 #endif
498 498
 
499
+//
500
+// Ensure Smooth Moves
501
+//
502
+// Enable this option to prevent the machine from stuttering when printing multiple short segments.
503
+// This feature uses two strategies to eliminate stuttering:
504
+//
505
+// 1. During short segments a Graphical LCD update may take so much time that the planner buffer gets
506
+//    completely drained. When this happens pauses are introduced between short segments, and print moves
507
+//    will become jerky until a longer segment provides enough time for the buffer to be filled again.
508
+//    This jerkiness negatively affects print quality. The ENSURE_SMOOTH_MOVES option addresses the issue
509
+//    by pausing the LCD until there's enough time to safely update.
510
+//
511
+//    NOTE: This will cause the Info Screen to lag and controller buttons may become unresponsive.
512
+//          Enable ALWAYS_ALLOW_MENU to keep the controller responsive.
513
+//
514
+// 2. No block is allowed to take less time than MIN_BLOCK_TIME. That's the time it takes in the main
515
+//    loop to add a new block to the buffer, check temperatures, etc., including all blocked time due to
516
+//    interrupts (without LCD update). By enforcing a minimum time-per-move, the buffer is prevented from
517
+//    draining.
518
+//
519
+//#define ENSURE_SMOOTH_MOVES
520
+#if ENABLED(ENSURE_SMOOTH_MOVES)
521
+  //#define ALWAYS_ALLOW_MENU      // If enabled, the menu will always be responsive.
522
+                                   // WARNING: Menu navigation during short moves may cause stuttering!
523
+  #define LCD_UPDATE_THRESHOLD 170 // (ms) Minimum duration for the current segment to allow an LCD update.
524
+                                   // Default value is good for graphical LCDs (e.g., REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER).
525
+  #define MIN_BLOCK_TIME 6         // (ms) Minimum duration of a single block. You shouldn't need to modify this.
526
+#endif
527
+
499 528
 // @section extruder
500 529
 
501 530
 // extruder advance constant (s2/mm3)

+ 29
- 0
Marlin/example_configurations/delta/biv2.5/Configuration_adv.h View File

@@ -498,6 +498,35 @@
498 498
   #define BABYSTEP_MULTIPLICATOR 1 //faster movements
499 499
 #endif
500 500
 
501
+//
502
+// Ensure Smooth Moves
503
+//
504
+// Enable this option to prevent the machine from stuttering when printing multiple short segments.
505
+// This feature uses two strategies to eliminate stuttering:
506
+//
507
+// 1. During short segments a Graphical LCD update may take so much time that the planner buffer gets
508
+//    completely drained. When this happens pauses are introduced between short segments, and print moves
509
+//    will become jerky until a longer segment provides enough time for the buffer to be filled again.
510
+//    This jerkiness negatively affects print quality. The ENSURE_SMOOTH_MOVES option addresses the issue
511
+//    by pausing the LCD until there's enough time to safely update.
512
+//
513
+//    NOTE: This will cause the Info Screen to lag and controller buttons may become unresponsive.
514
+//          Enable ALWAYS_ALLOW_MENU to keep the controller responsive.
515
+//
516
+// 2. No block is allowed to take less time than MIN_BLOCK_TIME. That's the time it takes in the main
517
+//    loop to add a new block to the buffer, check temperatures, etc., including all blocked time due to
518
+//    interrupts (without LCD update). By enforcing a minimum time-per-move, the buffer is prevented from
519
+//    draining.
520
+//
521
+//#define ENSURE_SMOOTH_MOVES
522
+#if ENABLED(ENSURE_SMOOTH_MOVES)
523
+  //#define ALWAYS_ALLOW_MENU      // If enabled, the menu will always be responsive.
524
+                                   // WARNING: Menu navigation during short moves may cause stuttering!
525
+  #define LCD_UPDATE_THRESHOLD 170 // (ms) Minimum duration for the current segment to allow an LCD update.
526
+                                   // Default value is good for graphical LCDs (e.g., REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER).
527
+  #define MIN_BLOCK_TIME 6         // (ms) Minimum duration of a single block. You shouldn't need to modify this.
528
+#endif
529
+
501 530
 // @section extruder
502 531
 
503 532
 // extruder advance constant (s2/mm3)

+ 29
- 0
Marlin/example_configurations/delta/generic/Configuration_adv.h View File

@@ -498,6 +498,35 @@
498 498
   #define BABYSTEP_MULTIPLICATOR 1 //faster movements
499 499
 #endif
500 500
 
501
+//
502
+// Ensure Smooth Moves
503
+//
504
+// Enable this option to prevent the machine from stuttering when printing multiple short segments.
505
+// This feature uses two strategies to eliminate stuttering:
506
+//
507
+// 1. During short segments a Graphical LCD update may take so much time that the planner buffer gets
508
+//    completely drained. When this happens pauses are introduced between short segments, and print moves
509
+//    will become jerky until a longer segment provides enough time for the buffer to be filled again.
510
+//    This jerkiness negatively affects print quality. The ENSURE_SMOOTH_MOVES option addresses the issue
511
+//    by pausing the LCD until there's enough time to safely update.
512
+//
513
+//    NOTE: This will cause the Info Screen to lag and controller buttons may become unresponsive.
514
+//          Enable ALWAYS_ALLOW_MENU to keep the controller responsive.
515
+//
516
+// 2. No block is allowed to take less time than MIN_BLOCK_TIME. That's the time it takes in the main
517
+//    loop to add a new block to the buffer, check temperatures, etc., including all blocked time due to
518
+//    interrupts (without LCD update). By enforcing a minimum time-per-move, the buffer is prevented from
519
+//    draining.
520
+//
521
+//#define ENSURE_SMOOTH_MOVES
522
+#if ENABLED(ENSURE_SMOOTH_MOVES)
523
+  //#define ALWAYS_ALLOW_MENU      // If enabled, the menu will always be responsive.
524
+                                   // WARNING: Menu navigation during short moves may cause stuttering!
525
+  #define LCD_UPDATE_THRESHOLD 170 // (ms) Minimum duration for the current segment to allow an LCD update.
526
+                                   // Default value is good for graphical LCDs (e.g., REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER).
527
+  #define MIN_BLOCK_TIME 6         // (ms) Minimum duration of a single block. You shouldn't need to modify this.
528
+#endif
529
+
501 530
 // @section extruder
502 531
 
503 532
 // extruder advance constant (s2/mm3)

+ 29
- 0
Marlin/example_configurations/delta/kossel_mini/Configuration_adv.h View File

@@ -498,6 +498,35 @@
498 498
   #define BABYSTEP_MULTIPLICATOR 1 //faster movements
499 499
 #endif
500 500
 
501
+//
502
+// Ensure Smooth Moves
503
+//
504
+// Enable this option to prevent the machine from stuttering when printing multiple short segments.
505
+// This feature uses two strategies to eliminate stuttering:
506
+//
507
+// 1. During short segments a Graphical LCD update may take so much time that the planner buffer gets
508
+//    completely drained. When this happens pauses are introduced between short segments, and print moves
509
+//    will become jerky until a longer segment provides enough time for the buffer to be filled again.
510
+//    This jerkiness negatively affects print quality. The ENSURE_SMOOTH_MOVES option addresses the issue
511
+//    by pausing the LCD until there's enough time to safely update.
512
+//
513
+//    NOTE: This will cause the Info Screen to lag and controller buttons may become unresponsive.
514
+//          Enable ALWAYS_ALLOW_MENU to keep the controller responsive.
515
+//
516
+// 2. No block is allowed to take less time than MIN_BLOCK_TIME. That's the time it takes in the main
517
+//    loop to add a new block to the buffer, check temperatures, etc., including all blocked time due to
518
+//    interrupts (without LCD update). By enforcing a minimum time-per-move, the buffer is prevented from
519
+//    draining.
520
+//
521
+//#define ENSURE_SMOOTH_MOVES
522
+#if ENABLED(ENSURE_SMOOTH_MOVES)
523
+  //#define ALWAYS_ALLOW_MENU      // If enabled, the menu will always be responsive.
524
+                                   // WARNING: Menu navigation during short moves may cause stuttering!
525
+  #define LCD_UPDATE_THRESHOLD 170 // (ms) Minimum duration for the current segment to allow an LCD update.
526
+                                   // Default value is good for graphical LCDs (e.g., REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER).
527
+  #define MIN_BLOCK_TIME 6         // (ms) Minimum duration of a single block. You shouldn't need to modify this.
528
+#endif
529
+
501 530
 // @section extruder
502 531
 
503 532
 // extruder advance constant (s2/mm3)

+ 29
- 0
Marlin/example_configurations/delta/kossel_pro/Configuration_adv.h View File

@@ -503,6 +503,35 @@
503 503
   #define BABYSTEP_MULTIPLICATOR 1 //faster movements
504 504
 #endif
505 505
 
506
+//
507
+// Ensure Smooth Moves
508
+//
509
+// Enable this option to prevent the machine from stuttering when printing multiple short segments.
510
+// This feature uses two strategies to eliminate stuttering:
511
+//
512
+// 1. During short segments a Graphical LCD update may take so much time that the planner buffer gets
513
+//    completely drained. When this happens pauses are introduced between short segments, and print moves
514
+//    will become jerky until a longer segment provides enough time for the buffer to be filled again.
515
+//    This jerkiness negatively affects print quality. The ENSURE_SMOOTH_MOVES option addresses the issue
516
+//    by pausing the LCD until there's enough time to safely update.
517
+//
518
+//    NOTE: This will cause the Info Screen to lag and controller buttons may become unresponsive.
519
+//          Enable ALWAYS_ALLOW_MENU to keep the controller responsive.
520
+//
521
+// 2. No block is allowed to take less time than MIN_BLOCK_TIME. That's the time it takes in the main
522
+//    loop to add a new block to the buffer, check temperatures, etc., including all blocked time due to
523
+//    interrupts (without LCD update). By enforcing a minimum time-per-move, the buffer is prevented from
524
+//    draining.
525
+//
526
+//#define ENSURE_SMOOTH_MOVES
527
+#if ENABLED(ENSURE_SMOOTH_MOVES)
528
+  //#define ALWAYS_ALLOW_MENU      // If enabled, the menu will always be responsive.
529
+                                   // WARNING: Menu navigation during short moves may cause stuttering!
530
+  #define LCD_UPDATE_THRESHOLD 170 // (ms) Minimum duration for the current segment to allow an LCD update.
531
+                                   // Default value is good for graphical LCDs (e.g., REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER).
532
+  #define MIN_BLOCK_TIME 6         // (ms) Minimum duration of a single block. You shouldn't need to modify this.
533
+#endif
534
+
506 535
 // @section extruder
507 536
 
508 537
 // extruder advance constant (s2/mm3)

+ 29
- 0
Marlin/example_configurations/delta/kossel_xl/Configuration_adv.h View File

@@ -498,6 +498,35 @@
498 498
   #define BABYSTEP_MULTIPLICATOR 1 //faster movements
499 499
 #endif
500 500
 
501
+//
502
+// Ensure Smooth Moves
503
+//
504
+// Enable this option to prevent the machine from stuttering when printing multiple short segments.
505
+// This feature uses two strategies to eliminate stuttering:
506
+//
507
+// 1. During short segments a Graphical LCD update may take so much time that the planner buffer gets
508
+//    completely drained. When this happens pauses are introduced between short segments, and print moves
509
+//    will become jerky until a longer segment provides enough time for the buffer to be filled again.
510
+//    This jerkiness negatively affects print quality. The ENSURE_SMOOTH_MOVES option addresses the issue
511
+//    by pausing the LCD until there's enough time to safely update.
512
+//
513
+//    NOTE: This will cause the Info Screen to lag and controller buttons may become unresponsive.
514
+//          Enable ALWAYS_ALLOW_MENU to keep the controller responsive.
515
+//
516
+// 2. No block is allowed to take less time than MIN_BLOCK_TIME. That's the time it takes in the main
517
+//    loop to add a new block to the buffer, check temperatures, etc., including all blocked time due to
518
+//    interrupts (without LCD update). By enforcing a minimum time-per-move, the buffer is prevented from
519
+//    draining.
520
+//
521
+//#define ENSURE_SMOOTH_MOVES
522
+#if ENABLED(ENSURE_SMOOTH_MOVES)
523
+  //#define ALWAYS_ALLOW_MENU      // If enabled, the menu will always be responsive.
524
+                                   // WARNING: Menu navigation during short moves may cause stuttering!
525
+  #define LCD_UPDATE_THRESHOLD 170 // (ms) Minimum duration for the current segment to allow an LCD update.
526
+                                   // Default value is good for graphical LCDs (e.g., REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER).
527
+  #define MIN_BLOCK_TIME 6         // (ms) Minimum duration of a single block. You shouldn't need to modify this.
528
+#endif
529
+
501 530
 // @section extruder
502 531
 
503 532
 // extruder advance constant (s2/mm3)

+ 29
- 0
Marlin/example_configurations/makibox/Configuration_adv.h View File

@@ -496,6 +496,35 @@
496 496
   #define BABYSTEP_MULTIPLICATOR 1 //faster movements
497 497
 #endif
498 498
 
499
+//
500
+// Ensure Smooth Moves
501
+//
502
+// Enable this option to prevent the machine from stuttering when printing multiple short segments.
503
+// This feature uses two strategies to eliminate stuttering:
504
+//
505
+// 1. During short segments a Graphical LCD update may take so much time that the planner buffer gets
506
+//    completely drained. When this happens pauses are introduced between short segments, and print moves
507
+//    will become jerky until a longer segment provides enough time for the buffer to be filled again.
508
+//    This jerkiness negatively affects print quality. The ENSURE_SMOOTH_MOVES option addresses the issue
509
+//    by pausing the LCD until there's enough time to safely update.
510
+//
511
+//    NOTE: This will cause the Info Screen to lag and controller buttons may become unresponsive.
512
+//          Enable ALWAYS_ALLOW_MENU to keep the controller responsive.
513
+//
514
+// 2. No block is allowed to take less time than MIN_BLOCK_TIME. That's the time it takes in the main
515
+//    loop to add a new block to the buffer, check temperatures, etc., including all blocked time due to
516
+//    interrupts (without LCD update). By enforcing a minimum time-per-move, the buffer is prevented from
517
+//    draining.
518
+//
519
+//#define ENSURE_SMOOTH_MOVES
520
+#if ENABLED(ENSURE_SMOOTH_MOVES)
521
+  //#define ALWAYS_ALLOW_MENU      // If enabled, the menu will always be responsive.
522
+                                   // WARNING: Menu navigation during short moves may cause stuttering!
523
+  #define LCD_UPDATE_THRESHOLD 170 // (ms) Minimum duration for the current segment to allow an LCD update.
524
+                                   // Default value is good for graphical LCDs (e.g., REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER).
525
+  #define MIN_BLOCK_TIME 6         // (ms) Minimum duration of a single block. You shouldn't need to modify this.
526
+#endif
527
+
499 528
 // @section extruder
500 529
 
501 530
 // extruder advance constant (s2/mm3)

+ 29
- 0
Marlin/example_configurations/tvrrug/Round2/Configuration_adv.h View File

@@ -496,6 +496,35 @@
496 496
   #define BABYSTEP_MULTIPLICATOR 1 //faster movements
497 497
 #endif
498 498
 
499
+//
500
+// Ensure Smooth Moves
501
+//
502
+// Enable this option to prevent the machine from stuttering when printing multiple short segments.
503
+// This feature uses two strategies to eliminate stuttering:
504
+//
505
+// 1. During short segments a Graphical LCD update may take so much time that the planner buffer gets
506
+//    completely drained. When this happens pauses are introduced between short segments, and print moves
507
+//    will become jerky until a longer segment provides enough time for the buffer to be filled again.
508
+//    This jerkiness negatively affects print quality. The ENSURE_SMOOTH_MOVES option addresses the issue
509
+//    by pausing the LCD until there's enough time to safely update.
510
+//
511
+//    NOTE: This will cause the Info Screen to lag and controller buttons may become unresponsive.
512
+//          Enable ALWAYS_ALLOW_MENU to keep the controller responsive.
513
+//
514
+// 2. No block is allowed to take less time than MIN_BLOCK_TIME. That's the time it takes in the main
515
+//    loop to add a new block to the buffer, check temperatures, etc., including all blocked time due to
516
+//    interrupts (without LCD update). By enforcing a minimum time-per-move, the buffer is prevented from
517
+//    draining.
518
+//
519
+//#define ENSURE_SMOOTH_MOVES
520
+#if ENABLED(ENSURE_SMOOTH_MOVES)
521
+  //#define ALWAYS_ALLOW_MENU      // If enabled, the menu will always be responsive.
522
+                                   // WARNING: Menu navigation during short moves may cause stuttering!
523
+  #define LCD_UPDATE_THRESHOLD 170 // (ms) Minimum duration for the current segment to allow an LCD update.
524
+                                   // Default value is good for graphical LCDs (e.g., REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER).
525
+  #define MIN_BLOCK_TIME 6         // (ms) Minimum duration of a single block. You shouldn't need to modify this.
526
+#endif
527
+
499 528
 // @section extruder
500 529
 
501 530
 // extruder advance constant (s2/mm3)

+ 13
- 1
Marlin/planner.cpp View File

@@ -937,12 +937,24 @@ void Planner::_buffer_line(const float &a, const float &b, const float &c, const
937 937
       if (segment_time < min_segment_time) {
938 938
         // buffer is draining, add extra time.  The amount of time added increases if the buffer is still emptied more.
939 939
         inverse_mm_s = 1000000.0 / (segment_time + lround(2 * (min_segment_time - segment_time) / moves_queued));
940
-        #ifdef XY_FREQUENCY_LIMIT
940
+        #if defined(XY_FREQUENCY_LIMIT) || ENABLED(ENSURE_SMOOTH_MOVES)
941 941
           segment_time = lround(1000000.0 / inverse_mm_s);
942 942
         #endif
943 943
       }
944 944
     }
945 945
   #endif
946
+  
947
+  #if ENABLED(ENSURE_SMOOTH_MOVES)
948
+    #if DISABLED(SLOWDOWN)
949
+      unsigned long segment_time = lround(1000000.0 / inverse_mm_s);
950
+    #endif
951
+    if (segment_time < (MIN_BLOCK_TIME) * 1000UL) {
952
+      // buffer will be draining, set to MIN_BLOCK_TIME.
953
+      inverse_mm_s = 1000000.0 / (1000.0 * (MIN_BLOCK_TIME));
954
+      segment_time = (MIN_BLOCK_TIME) * 1000UL;
955
+    }
956
+    block->segment_time = segment_time;
957
+  #endif
946 958
 
947 959
   block->nominal_speed = block->millimeters * inverse_mm_s; // (mm/sec) Always > 0
948 960
   block->nominal_rate = ceil(block->step_event_count * inverse_mm_s); // (step/sec) Always > 0

+ 15
- 0
Marlin/planner.h View File

@@ -123,6 +123,10 @@ typedef struct {
123 123
   #if ENABLED(BARICUDA)
124 124
     uint32_t valve_pressure, e_to_p_pressure;
125 125
   #endif
126
+  
127
+  #if ENABLED(ENSURE_SMOOTH_MOVES)
128
+    uint32_t segment_time;
129
+  #endif
126 130
 
127 131
 } block_t;
128 132
 
@@ -366,6 +370,17 @@ class Planner {
366 370
         return NULL;
367 371
     }
368 372
 
373
+    #if ENABLED(ENSURE_SMOOTH_MOVES)
374
+      static bool long_move() {
375
+        if (blocks_queued()) {
376
+          block_t* block = &block_buffer[block_buffer_tail];
377
+          return block->segment_time > (LCD_UPDATE_THRESHOLD) * 1000UL;
378
+        }
379
+        else
380
+          return true;
381
+      }
382
+    #endif
383
+
369 384
     #if ENABLED(AUTOTEMP)
370 385
       static float autotemp_max;
371 386
       static float autotemp_min;

+ 69
- 53
Marlin/ultralcd.cpp View File

@@ -2707,77 +2707,93 @@ void lcd_update() {
2707 2707
       }
2708 2708
     #endif // ULTIPANEL
2709 2709
 
2710
+    #if ENABLED(ENSURE_SMOOTH_MOVES) && ENABLED(ALWAYS_ALLOW_MENU)
2711
+      #define STATUS_UPDATE_CONDITION planner.long_move()
2712
+    #else
2713
+      #define STATUS_UPDATE_CONDITION true
2714
+    #endif
2715
+    #if ENABLED(ENSURE_SMOOTH_MOVES) && DISABLED(ALWAYS_ALLOW_MENU)
2716
+      #define LCD_HANDLER_CONDITION planner.long_move()
2717
+    #else
2718
+      #define LCD_HANDLER_CONDITION true
2719
+    #endif
2720
+
2710 2721
     // We arrive here every ~100ms when idling often enough.
2711 2722
     // Instead of tracking the changes simply redraw the Info Screen ~1 time a second.
2712 2723
     static int8_t lcd_status_update_delay = 1; // first update one loop delayed
2713
-    if (
2724
+    if (STATUS_UPDATE_CONDITION &&
2714 2725
       #if ENABLED(ULTIPANEL)
2715 2726
         currentScreen == lcd_status_screen &&
2716 2727
       #endif
2717
-        !lcd_status_update_delay--) {
2728
+        !lcd_status_update_delay--
2729
+    ) {
2718 2730
       lcd_status_update_delay = 9;
2719 2731
       lcdDrawUpdate = LCDVIEW_REDRAW_NOW;
2720 2732
     }
2721 2733
 
2722
-    if (lcdDrawUpdate) {
2734
+    if (LCD_HANDLER_CONDITION) {
2723 2735
 
2724
-      switch (lcdDrawUpdate) {
2725
-        case LCDVIEW_CALL_NO_REDRAW:
2726
-          lcdDrawUpdate = LCDVIEW_NONE;
2727
-          break;
2728
-        case LCDVIEW_CLEAR_CALL_REDRAW: // set by handlers, then altered after (rarely occurs here)
2729
-        case LCDVIEW_CALL_REDRAW_NEXT:  // set by handlers, then altered after (never occurs here?)
2730
-          lcdDrawUpdate = LCDVIEW_REDRAW_NOW;
2731
-        case LCDVIEW_REDRAW_NOW:        // set above, or by a handler through LCDVIEW_CALL_REDRAW_NEXT
2732
-        case LCDVIEW_NONE:
2733
-          break;
2734
-      }
2736
+      if (lcdDrawUpdate) {
2735 2737
 
2736
-      #if ENABLED(ULTIPANEL)
2737
-        #define CURRENTSCREEN() (*currentScreen)(), lcd_clicked = false
2738
-      #else
2739
-        #define CURRENTSCREEN() lcd_status_screen()
2740
-      #endif
2738
+        switch (lcdDrawUpdate) {
2739
+          case LCDVIEW_CALL_NO_REDRAW:
2740
+            lcdDrawUpdate = LCDVIEW_NONE;
2741
+            break;
2742
+          case LCDVIEW_CLEAR_CALL_REDRAW: // set by handlers, then altered after (rarely occurs here)
2743
+          case LCDVIEW_CALL_REDRAW_NEXT:  // set by handlers, then altered after (never occurs here?)
2744
+            lcdDrawUpdate = LCDVIEW_REDRAW_NOW;
2745
+          case LCDVIEW_REDRAW_NOW:        // set above, or by a handler through LCDVIEW_CALL_REDRAW_NEXT
2746
+          case LCDVIEW_NONE:
2747
+            break;
2748
+        } // switch
2749
+
2750
+        #if ENABLED(ULTIPANEL)
2751
+          #define CURRENTSCREEN() (*currentScreen)(), lcd_clicked = false
2752
+        #else
2753
+          #define CURRENTSCREEN() lcd_status_screen()
2754
+        #endif
2741 2755
 
2742
-      #if ENABLED(DOGLCD)  // Changes due to different driver architecture of the DOGM display
2743
-        static int8_t dot_color = 0;
2744
-        dot_color = 1 - dot_color;
2745
-        u8g.firstPage();
2746
-        do {
2747
-          lcd_setFont(FONT_MENU);
2748
-          u8g.setPrintPos(125, 0);
2749
-          u8g.setColorIndex(dot_color); // Set color for the alive dot
2750
-          u8g.drawPixel(127, 63); // draw alive dot
2751
-          u8g.setColorIndex(1); // black on white
2756
+        #if ENABLED(DOGLCD)  // Changes due to different driver architecture of the DOGM display
2757
+          static int8_t dot_color = 0;
2758
+          dot_color = 1 - dot_color;
2759
+          u8g.firstPage();
2760
+          do {
2761
+            lcd_setFont(FONT_MENU);
2762
+            u8g.setPrintPos(125, 0);
2763
+            u8g.setColorIndex(dot_color); // Set color for the alive dot
2764
+            u8g.drawPixel(127, 63); // draw alive dot
2765
+            u8g.setColorIndex(1); // black on white
2766
+            CURRENTSCREEN();
2767
+          } while (u8g.nextPage());
2768
+        #else
2752 2769
           CURRENTSCREEN();
2753
-        } while (u8g.nextPage());
2754
-      #else
2755
-        CURRENTSCREEN();
2756
-      #endif
2757
-    }
2770
+        #endif
2771
+      }
2758 2772
 
2759
-    #if ENABLED(ULTIPANEL)
2773
+      #if ENABLED(ULTIPANEL)
2760 2774
 
2761
-      // Return to Status Screen after a timeout
2762
-      if (currentScreen == lcd_status_screen || defer_return_to_status)
2763
-        return_to_status_ms = ms + LCD_TIMEOUT_TO_STATUS;
2764
-      else if (ELAPSED(ms, return_to_status_ms))
2765
-        lcd_return_to_status();
2775
+        // Return to Status Screen after a timeout
2776
+        if (currentScreen == lcd_status_screen || defer_return_to_status)
2777
+          return_to_status_ms = ms + LCD_TIMEOUT_TO_STATUS;
2778
+        else if (ELAPSED(ms, return_to_status_ms))
2779
+          lcd_return_to_status();
2766 2780
 
2767
-    #endif // ULTIPANEL
2781
+      #endif // ULTIPANEL
2768 2782
 
2769
-    switch (lcdDrawUpdate) {
2770
-      case LCDVIEW_CLEAR_CALL_REDRAW:
2771
-        lcd_implementation_clear();
2772
-      case LCDVIEW_CALL_REDRAW_NEXT:
2773
-        lcdDrawUpdate = LCDVIEW_REDRAW_NOW;
2774
-        break;
2775
-      case LCDVIEW_REDRAW_NOW:
2776
-        lcdDrawUpdate = LCDVIEW_NONE;
2777
-        break;
2778
-      case LCDVIEW_NONE:
2779
-        break;
2780
-    }
2783
+      switch (lcdDrawUpdate) {
2784
+        case LCDVIEW_CLEAR_CALL_REDRAW:
2785
+          lcd_implementation_clear();
2786
+        case LCDVIEW_CALL_REDRAW_NEXT:
2787
+          lcdDrawUpdate = LCDVIEW_REDRAW_NOW;
2788
+          break;
2789
+        case LCDVIEW_REDRAW_NOW:
2790
+          lcdDrawUpdate = LCDVIEW_NONE;
2791
+          break;
2792
+        case LCDVIEW_NONE:
2793
+          break;
2794
+      } // switch
2795
+
2796
+    } // LCD_HANDLER_CONDITION
2781 2797
 
2782 2798
   }
2783 2799
 }

Loading…
Cancel
Save