Browse Source

Merge pull request #2989 from AnHardt/fix2661

Pre home display - Stepper release
Scott Lahteine 8 years ago
parent
commit
eb85342fd9
36 changed files with 252 additions and 67 deletions
  1. 3
    1
      Marlin/Configuration.h
  2. 8
    2
      Marlin/Configuration_adv.h
  3. 1
    0
      Marlin/Marlin.h
  4. 10
    6
      Marlin/Marlin_main.cpp
  5. 48
    16
      Marlin/dogm_lcd_implementation.h
  6. 3
    1
      Marlin/example_configurations/Felix/Configuration.h
  7. 3
    1
      Marlin/example_configurations/Felix/Configuration_DUAL.h
  8. 6
    0
      Marlin/example_configurations/Felix/Configuration_adv.h
  9. 3
    1
      Marlin/example_configurations/Hephestos/Configuration.h
  10. 6
    0
      Marlin/example_configurations/Hephestos/Configuration_adv.h
  11. 3
    1
      Marlin/example_configurations/K8200/Configuration.h
  12. 6
    0
      Marlin/example_configurations/K8200/Configuration_adv.h
  13. 3
    1
      Marlin/example_configurations/RepRapWorld/Megatronics/Configuration.h
  14. 3
    1
      Marlin/example_configurations/RigidBot/Configuration.h
  15. 6
    0
      Marlin/example_configurations/RigidBot/Configuration_adv.h
  16. 3
    1
      Marlin/example_configurations/SCARA/Configuration.h
  17. 6
    0
      Marlin/example_configurations/SCARA/Configuration_adv.h
  18. 3
    1
      Marlin/example_configurations/TAZ4/Configuration.h
  19. 6
    0
      Marlin/example_configurations/TAZ4/Configuration_adv.h
  20. 3
    1
      Marlin/example_configurations/WITBOX/Configuration.h
  21. 6
    0
      Marlin/example_configurations/WITBOX/Configuration_adv.h
  22. 3
    1
      Marlin/example_configurations/adafruit/ST7565/Configuration.h
  23. 3
    1
      Marlin/example_configurations/delta/biv2.5/Configuration.h
  24. 6
    0
      Marlin/example_configurations/delta/biv2.5/Configuration_adv.h
  25. 3
    1
      Marlin/example_configurations/delta/generic/Configuration.h
  26. 6
    0
      Marlin/example_configurations/delta/generic/Configuration_adv.h
  27. 3
    1
      Marlin/example_configurations/delta/kossel_mini/Configuration.h
  28. 6
    0
      Marlin/example_configurations/delta/kossel_mini/Configuration_adv.h
  29. 3
    1
      Marlin/example_configurations/delta/kossel_pro/Configuration.h
  30. 6
    0
      Marlin/example_configurations/delta/kossel_pro/Configuration_adv.h
  31. 3
    1
      Marlin/example_configurations/makibox/Configuration.h
  32. 6
    0
      Marlin/example_configurations/makibox/Configuration_adv.h
  33. 3
    1
      Marlin/example_configurations/tvrrug/Round2/Configuration.h
  34. 6
    0
      Marlin/example_configurations/tvrrug/Round2/Configuration_adv.h
  35. 6
    4
      Marlin/ultralcd.cpp
  36. 50
    22
      Marlin/ultralcd_implementation_hitachi_HD44780.h

+ 3
- 1
Marlin/Configuration.h View File

@@ -349,11 +349,13 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
349 349
 #define Z_ENABLE_ON 0
350 350
 #define E_ENABLE_ON 0 // For all extruders
351 351
 
352
-// Disables axis when it's not being used.
352
+// Disables axis stepper immediately when it's not being used.
353 353
 // WARNING: When motors turn off there is a chance of losing position accuracy!
354 354
 #define DISABLE_X false
355 355
 #define DISABLE_Y false
356 356
 #define DISABLE_Z false
357
+// Warn on display about possibly reduced accuracy
358
+//#define DISABLE_REDUCED_ACCURACY_WARNING
357 359
 
358 360
 // @section extruder
359 361
 

+ 8
- 2
Marlin/Configuration_adv.h View File

@@ -52,7 +52,7 @@
52 52
  * The maximum buffered steps/sec of the extruder motor is called "se".
53 53
  * Start autotemp mode with M109 S<mintemp> B<maxtemp> F<factor>
54 54
  * The target temperature is set to mintemp+factor*se[steps/sec] and is limited by
55
- * mintemp and maxtemp. Turn this off by excuting M109 without F*
55
+ * mintemp and maxtemp. Turn this off by executing M109 without F*
56 56
  * Also, if the temperature is set to a value below mintemp, it will not be changed by autotemp.
57 57
  * On an Ultimaker, some initial testing worked with M109 S215 B260 F1 in the start.gcode
58 58
  */
@@ -232,7 +232,13 @@
232 232
 #define INVERT_E_STEP_PIN false
233 233
 
234 234
 // Default stepper release if idle. Set to 0 to deactivate.
235
-#define DEFAULT_STEPPER_DEACTIVE_TIME 60
235
+// Steppers will shut down DEFAULT_STEPPER_DEACTIVE_TIME seconds after the last move when DISABLE_INACTIVE_? is true.
236
+// Time can be set by M18 and M84.
237
+#define DEFAULT_STEPPER_DEACTIVE_TIME 120
238
+#define DISABLE_INACTIVE_X true
239
+#define DISABLE_INACTIVE_Y true
240
+#define DISABLE_INACTIVE_Z true  // set to false if the nozzle will fall down on your printed part when print has finished.
241
+#define DISABLE_INACTIVE_E true
236 242
 
237 243
 #define DEFAULT_MINIMUMFEEDRATE       0.0     // minimum feedrate
238 244
 #define DEFAULT_MINTRAVELFEEDRATE     0.0

+ 1
- 0
Marlin/Marlin.h View File

@@ -259,6 +259,7 @@ extern float home_offset[3]; // axis[n].home_offset
259 259
 extern float min_pos[3]; // axis[n].min_pos
260 260
 extern float max_pos[3]; // axis[n].max_pos
261 261
 extern bool axis_known_position[3]; // axis[n].is_known
262
+extern bool axis_homed[3]; // axis[n].is_homed
262 263
 
263 264
 #if ENABLED(DELTA)
264 265
   extern float delta[3];

+ 10
- 6
Marlin/Marlin_main.cpp View File

@@ -245,6 +245,7 @@ static float feedrate = 1500.0, saved_feedrate;
245 245
 float current_position[NUM_AXIS] = { 0.0 };
246 246
 static float destination[NUM_AXIS] = { 0.0 };
247 247
 bool axis_known_position[3] = { false };
248
+bool axis_homed[3] = { false };
248 249
 
249 250
 static long gcode_N, gcode_LastN, Stopped_gcode_LastN = 0;
250 251
 
@@ -1280,6 +1281,8 @@ static void setup_for_endstop_move() {
1280 1281
 
1281 1282
   static void run_z_probe() {
1282 1283
 
1284
+    refresh_cmd_timeout(); // to prevent stepper_inactive_time from running out and EXTRUDER_RUNOUT_PREVENT from extruding
1285
+
1283 1286
     #if ENABLED(DELTA)
1284 1287
 
1285 1288
       float start_z = current_position[Z_AXIS];
@@ -1983,6 +1986,7 @@ static void homeaxis(AxisEnum axis) {
1983 1986
     feedrate = 0.0;
1984 1987
     endstops_hit_on_purpose(); // clear endstop hit flags
1985 1988
     axis_known_position[axis] = true;
1989
+    axis_homed[axis] = true;
1986 1990
 
1987 1991
     #if ENABLED(Z_PROBE_SLED)
1988 1992
       // bring Z probe back
@@ -3980,6 +3984,7 @@ inline void gcode_M109() {
3980 3984
     }
3981 3985
 
3982 3986
     idle();
3987
+    refresh_cmd_timeout(); // to prevent stepper_inactive_time from running out
3983 3988
 
3984 3989
     #ifdef TEMP_RESIDENCY_TIME
3985 3990
       // start/restart the TEMP_RESIDENCY_TIME timer whenever we reach target temp for the first time
@@ -3994,7 +3999,6 @@ inline void gcode_M109() {
3994 3999
   }
3995 4000
 
3996 4001
   LCD_MESSAGEPGM(MSG_HEATING_COMPLETE);
3997
-  refresh_cmd_timeout();
3998 4002
   print_job_start_ms = previous_cmd_ms;
3999 4003
 }
4000 4004
 
@@ -4029,9 +4033,9 @@ inline void gcode_M109() {
4029 4033
         #endif
4030 4034
       }
4031 4035
       idle();
4036
+      refresh_cmd_timeout(); // to prevent stepper_inactive_time from running out
4032 4037
     }
4033 4038
     LCD_MESSAGEPGM(MSG_BED_DONE);
4034
-    refresh_cmd_timeout();
4035 4039
   }
4036 4040
 
4037 4041
 #endif // HAS_TEMP_BED
@@ -6972,16 +6976,16 @@ void manage_inactivity(bool ignore_stepper_queue/*=false*/) {
6972 6976
 
6973 6977
   if (stepper_inactive_time && ms > previous_cmd_ms + stepper_inactive_time
6974 6978
       && !ignore_stepper_queue && !blocks_queued()) {
6975
-    #if DISABLE_X == true
6979
+    #if DISABLE_INACTIVE_X == true
6976 6980
       disable_x();
6977 6981
     #endif
6978
-    #if DISABLE_Y == true
6982
+    #if DISABLE_INACTIVE_Y == true
6979 6983
       disable_y();
6980 6984
     #endif
6981
-    #if DISABLE_Z == true
6985
+    #if DISABLE_INACTIVE_Z == true
6982 6986
       disable_z();
6983 6987
     #endif
6984
-    #if DISABLE_E == true
6988
+    #if DISABLE_INACTIVE_E == true
6985 6989
       disable_e0();
6986 6990
       disable_e1();
6987 6991
       disable_e2();

+ 48
- 16
Marlin/dogm_lcd_implementation.h View File

@@ -270,7 +270,7 @@ static void _draw_heater_status(int x, int heater) {
270 270
   lcd_print(itostr3(int(heater >= 0 ? degHotend(heater) : degBed()) + 0.5));
271 271
 
272 272
   lcd_printPGM(PSTR(LCD_STR_DEGREE " "));
273
-  if (!isHeatingHotend(0)) {
273
+  if (heater >= 0 ? !isHeatingHotend(heater) : !isHeatingBed()) {
274 274
     u8g.drawBox(x+7,y,2,2);
275 275
   }
276 276
   else {
@@ -338,6 +338,9 @@ static void lcd_implementation_status_screen() {
338 338
     }
339 339
 
340 340
   // X, Y, Z-Coordinates
341
+  // Before homing the axis letters are blinking 'X' <-> '?'.
342
+  // When axis is homed but axis_known_position is false the axis letters are blinking 'X' <-> ' '.
343
+  // When everything is ok you see a constant 'X'.
341 344
   #define XYZ_BASELINE 38
342 345
   lcd_setFont(FONT_STATUSMENU);
343 346
 
@@ -348,32 +351,61 @@ static void lcd_implementation_status_screen() {
348 351
   #endif
349 352
   u8g.setColorIndex(0); // white on black
350 353
   u8g.setPrintPos(2, XYZ_BASELINE);
351
-  lcd_print('X');
354
+  if (blink & 1)
355
+    lcd_printPGM(PSTR("X"));
356
+  else {
357
+    if (!axis_homed[X_AXIS])
358
+      lcd_printPGM(PSTR("?"));
359
+    else
360
+      #if DISABLED(DISABLE_REDUCED_ACCURACY_WARNING)
361
+        if (!axis_known_position[X_AXIS])
362
+          lcd_printPGM(PSTR(" "));
363
+        else
364
+      #endif
365
+      lcd_printPGM(PSTR("X"));
366
+  }
352 367
   u8g.drawPixel(8, XYZ_BASELINE - 5);
353 368
   u8g.drawPixel(8, XYZ_BASELINE - 3);
354 369
   u8g.setPrintPos(10, XYZ_BASELINE);
355
-  if (axis_known_position[X_AXIS])
356
-    lcd_print(ftostr31ns(current_position[X_AXIS]));
357
-  else
358
-    lcd_printPGM(PSTR("---"));
370
+  lcd_print(ftostr31ns(current_position[X_AXIS]));
371
+
359 372
   u8g.setPrintPos(43, XYZ_BASELINE);
360
-  lcd_print('Y');
373
+  if (blink & 1)
374
+    lcd_printPGM(PSTR("Y"));
375
+  else {
376
+    if (!axis_homed[Y_AXIS])
377
+      lcd_printPGM(PSTR("?"));
378
+    else
379
+      #if DISABLED(DISABLE_REDUCED_ACCURACY_WARNING)
380
+        if (!axis_known_position[Y_AXIS])
381
+          lcd_printPGM(PSTR(" "));
382
+        else
383
+      #endif
384
+      lcd_printPGM(PSTR("Y"));
385
+  }
361 386
   u8g.drawPixel(49, XYZ_BASELINE - 5);
362 387
   u8g.drawPixel(49, XYZ_BASELINE - 3);
363 388
   u8g.setPrintPos(51, XYZ_BASELINE);
364
-  if (axis_known_position[Y_AXIS])
365
-    lcd_print(ftostr31ns(current_position[Y_AXIS]));
366
-  else
367
-    lcd_printPGM(PSTR("---"));
389
+  lcd_print(ftostr31ns(current_position[Y_AXIS]));
390
+
368 391
   u8g.setPrintPos(83, XYZ_BASELINE);
369
-  lcd_print('Z');
392
+  if (blink & 1)
393
+    lcd_printPGM(PSTR("Z"));
394
+  else {
395
+    if (!axis_homed[Z_AXIS])
396
+      lcd_printPGM(PSTR("?"));
397
+    else
398
+      #if DISABLED(DISABLE_REDUCED_ACCURACY_WARNING)
399
+        if (!axis_known_position[Z_AXIS])
400
+          lcd_printPGM(PSTR(" "));
401
+        else
402
+      #endif
403
+      lcd_printPGM(PSTR("Z"));
404
+  }
370 405
   u8g.drawPixel(89, XYZ_BASELINE - 5);
371 406
   u8g.drawPixel(89, XYZ_BASELINE - 3);
372 407
   u8g.setPrintPos(91, XYZ_BASELINE);
373
-  if (axis_known_position[Z_AXIS])
374
-    lcd_print(ftostr32sp(current_position[Z_AXIS]));
375
-  else
376
-    lcd_printPGM(PSTR("---.--"));
408
+  lcd_print(ftostr32sp(current_position[Z_AXIS]));
377 409
   u8g.setColorIndex(1); // black on white
378 410
 
379 411
   // Feedrate

+ 3
- 1
Marlin/example_configurations/Felix/Configuration.h View File

@@ -331,11 +331,13 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
331 331
 #define Z_ENABLE_ON 0
332 332
 #define E_ENABLE_ON 0 // For all extruders
333 333
 
334
-// Disables axis when it's not being used.
334
+// Disables axis stepper immediately when it's not being used.
335 335
 // WARNING: When motors turn off there is a chance of losing position accuracy!
336 336
 #define DISABLE_X false
337 337
 #define DISABLE_Y false
338 338
 #define DISABLE_Z false
339
+// Warn on display about possibly reduced accuracy
340
+//#define DISABLE_REDUCED_ACCURACY_WARNING
339 341
 
340 342
 // @section extruder
341 343
 

+ 3
- 1
Marlin/example_configurations/Felix/Configuration_DUAL.h View File

@@ -315,11 +315,13 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
315 315
 #define Z_ENABLE_ON 0
316 316
 #define E_ENABLE_ON 0 // For all extruders
317 317
 
318
-// Disables axis when it's not being used.
318
+// Disables axis stepper immediately when it's not being used.
319 319
 // WARNING: When motors turn off there is a chance of losing position accuracy!
320 320
 #define DISABLE_X false
321 321
 #define DISABLE_Y false
322 322
 #define DISABLE_Z false
323
+// Warn on display about possibly reduced accuracy
324
+//#define DISABLE_REDUCED_ACCURACY_WARNING
323 325
 #define DISABLE_E false // For all extruders
324 326
 #define DISABLE_INACTIVE_EXTRUDER true //disable only inactive extruders and keep active extruder enabled
325 327
 

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

@@ -232,7 +232,13 @@
232 232
 #define INVERT_E_STEP_PIN false
233 233
 
234 234
 // Default stepper release if idle. Set to 0 to deactivate.
235
+// Steppers will shut down DEFAULT_STEPPER_DEACTIVE_TIME seconds after the last move when DISABLE_INACTIVE_? is true.
236
+// Time can be set by M18 and M84.
235 237
 #define DEFAULT_STEPPER_DEACTIVE_TIME 60
238
+#define DISABLE_INACTIVE_X true
239
+#define DISABLE_INACTIVE_Y true
240
+#define DISABLE_INACTIVE_Z true  // set to false if the nozzle will fall down on your printed part when print has finished.
241
+#define DISABLE_INACTIVE_E true
236 242
 
237 243
 #define DEFAULT_MINIMUMFEEDRATE       0.0     // minimum feedrate
238 244
 #define DEFAULT_MINTRAVELFEEDRATE     0.0

+ 3
- 1
Marlin/example_configurations/Hephestos/Configuration.h View File

@@ -341,11 +341,13 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
341 341
 #define Z_ENABLE_ON 0
342 342
 #define E_ENABLE_ON 0 // For all extruders
343 343
 
344
-// Disables axis when it's not being used.
344
+// Disables axis stepper immediately when it's not being used.
345 345
 // WARNING: When motors turn off there is a chance of losing position accuracy!
346 346
 #define DISABLE_X false
347 347
 #define DISABLE_Y false
348 348
 #define DISABLE_Z false
349
+// Warn on display about possibly reduced accuracy
350
+//#define DISABLE_REDUCED_ACCURACY_WARNING
349 351
 
350 352
 // @section extruder
351 353
 

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

@@ -232,7 +232,13 @@
232 232
 #define INVERT_E_STEP_PIN false
233 233
 
234 234
 // Default stepper release if idle. Set to 0 to deactivate.
235
+// Steppers will shut down DEFAULT_STEPPER_DEACTIVE_TIME seconds after the last move when DISABLE_INACTIVE_? is true.
236
+// Time can be set by M18 and M84.
235 237
 #define DEFAULT_STEPPER_DEACTIVE_TIME 60
238
+#define DISABLE_INACTIVE_X true
239
+#define DISABLE_INACTIVE_Y true
240
+#define DISABLE_INACTIVE_Z true  // set to false if the nozzle will fall down on your printed part when print has finished.
241
+#define DISABLE_INACTIVE_E true
236 242
 
237 243
 #define DEFAULT_MINIMUMFEEDRATE       0.0     // minimum feedrate
238 244
 #define DEFAULT_MINTRAVELFEEDRATE     0.0

+ 3
- 1
Marlin/example_configurations/K8200/Configuration.h View File

@@ -364,11 +364,13 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
364 364
 #define Z_ENABLE_ON 0
365 365
 #define E_ENABLE_ON 0 // For all extruders
366 366
 
367
-// Disables axis when it's not being used.
367
+// Disables axis stepper immediately when it's not being used.
368 368
 // WARNING: When motors turn off there is a chance of losing position accuracy!
369 369
 #define DISABLE_X false
370 370
 #define DISABLE_Y false
371 371
 #define DISABLE_Z false // not for K8200 -> looses Steps
372
+// Warn on display about possibly reduced accuracy
373
+//#define DISABLE_REDUCED_ACCURACY_WARNING
372 374
 
373 375
 // @section extruder
374 376
 

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

@@ -237,7 +237,13 @@
237 237
 #define INVERT_E_STEP_PIN false
238 238
 
239 239
 // Default stepper release if idle. Set to 0 to deactivate.
240
+// Steppers will shut down DEFAULT_STEPPER_DEACTIVE_TIME seconds after the last move when DISABLE_INACTIVE_? is true.
241
+// Time can be set by M18 and M84.
240 242
 #define DEFAULT_STEPPER_DEACTIVE_TIME 60
243
+#define DISABLE_INACTIVE_X true
244
+#define DISABLE_INACTIVE_Y true
245
+#define DISABLE_INACTIVE_Z true  // set to false if the nozzle will fall down on your printed part when print has finished.
246
+#define DISABLE_INACTIVE_E true
241 247
 
242 248
 #define DEFAULT_MINIMUMFEEDRATE       0.0     // minimum feedrate
243 249
 #define DEFAULT_MINTRAVELFEEDRATE     0.0

+ 3
- 1
Marlin/example_configurations/RepRapWorld/Megatronics/Configuration.h View File

@@ -349,11 +349,13 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
349 349
 #define Z_ENABLE_ON 0
350 350
 #define E_ENABLE_ON 0 // For all extruders
351 351
 
352
-// Disables axis when it's not being used.
352
+// Disables axis stepper immediately when it's not being used.
353 353
 // WARNING: When motors turn off there is a chance of losing position accuracy!
354 354
 #define DISABLE_X false
355 355
 #define DISABLE_Y false
356 356
 #define DISABLE_Z false
357
+// Warn on display about possibly reduced accuracy
358
+//#define DISABLE_REDUCED_ACCURACY_WARNING
357 359
 
358 360
 // @section extruder
359 361
 

+ 3
- 1
Marlin/example_configurations/RigidBot/Configuration.h View File

@@ -340,11 +340,13 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
340 340
 #define Z_ENABLE_ON 0
341 341
 #define E_ENABLE_ON 0 // For all extruders
342 342
 
343
-// Disables axis when it's not being used.
343
+// Disables axis stepper immediately when it's not being used.
344 344
 // WARNING: When motors turn off there is a chance of losing position accuracy!
345 345
 #define DISABLE_X false
346 346
 #define DISABLE_Y false
347 347
 #define DISABLE_Z false
348
+// Warn on display about possibly reduced accuracy
349
+//#define DISABLE_REDUCED_ACCURACY_WARNING
348 350
 
349 351
 // @section extruder
350 352
 

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

@@ -232,7 +232,13 @@
232 232
 #define INVERT_E_STEP_PIN false
233 233
 
234 234
 // Default stepper release if idle. Set to 0 to deactivate.
235
+// Steppers will shut down DEFAULT_STEPPER_DEACTIVE_TIME seconds after the last move when DISABLE_INACTIVE_? is true.
236
+// Time can be set by M18 and M84.
235 237
 #define DEFAULT_STEPPER_DEACTIVE_TIME 60
238
+#define DISABLE_INACTIVE_X true
239
+#define DISABLE_INACTIVE_Y true
240
+#define DISABLE_INACTIVE_Z true  // set to false if the nozzle will fall down on your printed part when print has finished.
241
+#define DISABLE_INACTIVE_E true
236 242
 
237 243
 #define DEFAULT_MINIMUMFEEDRATE       0.0     // minimum feedrate
238 244
 #define DEFAULT_MINTRAVELFEEDRATE     0.0

+ 3
- 1
Marlin/example_configurations/SCARA/Configuration.h View File

@@ -357,11 +357,13 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
357 357
 #define Z_ENABLE_ON 0
358 358
 #define E_ENABLE_ON 0 // For all extruders
359 359
 
360
-// Disables axis when it's not being used.
360
+// Disables axis stepper immediately when it's not being used.
361 361
 // WARNING: When motors turn off there is a chance of losing position accuracy!
362 362
 #define DISABLE_X false
363 363
 #define DISABLE_Y false
364 364
 #define DISABLE_Z false
365
+// Warn on display about possibly reduced accuracy
366
+//#define DISABLE_REDUCED_ACCURACY_WARNING
365 367
 
366 368
 // @section extruder
367 369
 

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

@@ -232,7 +232,13 @@
232 232
 #define INVERT_E_STEP_PIN false
233 233
 
234 234
 // Default stepper release if idle. Set to 0 to deactivate.
235
+// Steppers will shut down DEFAULT_STEPPER_DEACTIVE_TIME seconds after the last move when DISABLE_INACTIVE_? is true.
236
+// Time can be set by M18 and M84.
235 237
 #define DEFAULT_STEPPER_DEACTIVE_TIME 240
238
+#define DISABLE_INACTIVE_X true
239
+#define DISABLE_INACTIVE_Y true
240
+#define DISABLE_INACTIVE_Z true  // set to false if the nozzle will fall down on your printed part when print has finished.
241
+#define DISABLE_INACTIVE_E true
236 242
 
237 243
 #define DEFAULT_MINIMUMFEEDRATE       0.0     // minimum feedrate
238 244
 #define DEFAULT_MINTRAVELFEEDRATE     0.0

+ 3
- 1
Marlin/example_configurations/TAZ4/Configuration.h View File

@@ -369,11 +369,13 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
369 369
 #define Z_ENABLE_ON 0
370 370
 #define E_ENABLE_ON 0 // For all extruders
371 371
 
372
-// Disables axis when it's not being used.
372
+// Disables axis stepper immediately when it's not being used.
373 373
 // WARNING: When motors turn off there is a chance of losing position accuracy!
374 374
 #define DISABLE_X false
375 375
 #define DISABLE_Y false
376 376
 #define DISABLE_Z false
377
+// Warn on display about possibly reduced accuracy
378
+//#define DISABLE_REDUCED_ACCURACY_WARNING
377 379
 
378 380
 // @section extruder
379 381
 

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

@@ -240,7 +240,13 @@
240 240
 #define INVERT_E_STEP_PIN false
241 241
 
242 242
 // Default stepper release if idle. Set to 0 to deactivate.
243
+// Steppers will shut down DEFAULT_STEPPER_DEACTIVE_TIME seconds after the last move when DISABLE_INACTIVE_? is true.
244
+// Time can be set by M18 and M84.
243 245
 #define DEFAULT_STEPPER_DEACTIVE_TIME 60
246
+#define DISABLE_INACTIVE_X true
247
+#define DISABLE_INACTIVE_Y true
248
+#define DISABLE_INACTIVE_Z true  // set to false if the nozzle will fall down on your printed part when print has finished.
249
+#define DISABLE_INACTIVE_E true
244 250
 
245 251
 #define DEFAULT_MINIMUMFEEDRATE       0.0     // minimum feedrate
246 252
 #define DEFAULT_MINTRAVELFEEDRATE     0.0

+ 3
- 1
Marlin/example_configurations/WITBOX/Configuration.h View File

@@ -341,11 +341,13 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
341 341
 #define Z_ENABLE_ON 0
342 342
 #define E_ENABLE_ON 0 // For all extruders
343 343
 
344
-// Disables axis when it's not being used.
344
+// Disables axis stepper immediately when it's not being used.
345 345
 // WARNING: When motors turn off there is a chance of losing position accuracy!
346 346
 #define DISABLE_X false
347 347
 #define DISABLE_Y false
348 348
 #define DISABLE_Z true
349
+// Warn on display about possibly reduced accuracy
350
+//#define DISABLE_REDUCED_ACCURACY_WARNING
349 351
 
350 352
 // @section extruder
351 353
 

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

@@ -232,7 +232,13 @@
232 232
 #define INVERT_E_STEP_PIN false
233 233
 
234 234
 // Default stepper release if idle. Set to 0 to deactivate.
235
+// Steppers will shut down DEFAULT_STEPPER_DEACTIVE_TIME seconds after the last move when DISABLE_INACTIVE_? is true.
236
+// Time can be set by M18 and M84.
235 237
 #define DEFAULT_STEPPER_DEACTIVE_TIME 60
238
+#define DISABLE_INACTIVE_X true
239
+#define DISABLE_INACTIVE_Y true
240
+#define DISABLE_INACTIVE_Z true  // set to false if the nozzle will fall down on your printed part when print has finished.
241
+#define DISABLE_INACTIVE_E true
236 242
 
237 243
 #define DEFAULT_MINIMUMFEEDRATE       0.0     // minimum feedrate
238 244
 #define DEFAULT_MINTRAVELFEEDRATE     0.0

+ 3
- 1
Marlin/example_configurations/adafruit/ST7565/Configuration.h View File

@@ -349,11 +349,13 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
349 349
 #define Z_ENABLE_ON 0
350 350
 #define E_ENABLE_ON 0 // For all extruders
351 351
 
352
-// Disables axis when it's not being used.
352
+// Disables axis stepper immediately when it's not being used.
353 353
 // WARNING: When motors turn off there is a chance of losing position accuracy!
354 354
 #define DISABLE_X false
355 355
 #define DISABLE_Y false
356 356
 #define DISABLE_Z false
357
+// Warn on display about possibly reduced accuracy
358
+//#define DISABLE_REDUCED_ACCURACY_WARNING
357 359
 
358 360
 // @section extruder
359 361
 

+ 3
- 1
Marlin/example_configurations/delta/biv2.5/Configuration.h View File

@@ -384,11 +384,13 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
384 384
 #define Z_ENABLE_ON 0
385 385
 #define E_ENABLE_ON 0 // For all extruders
386 386
 
387
-// Disables axis when it's not being used.
387
+// Disables axis stepper immediately when it's not being used.
388 388
 // WARNING: When motors turn off there is a chance of losing position accuracy!
389 389
 #define DISABLE_X false
390 390
 #define DISABLE_Y false
391 391
 #define DISABLE_Z false
392
+// Warn on display about possibly reduced accuracy
393
+//#define DISABLE_REDUCED_ACCURACY_WARNING
392 394
 
393 395
 // @section extruder
394 396
 

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

@@ -232,7 +232,13 @@
232 232
 #define INVERT_E_STEP_PIN false
233 233
 
234 234
 // Default stepper release if idle. Set to 0 to deactivate.
235
+// Steppers will shut down DEFAULT_STEPPER_DEACTIVE_TIME seconds after the last move when DISABLE_INACTIVE_? is true.
236
+// Time can be set by M18 and M84.
235 237
 #define DEFAULT_STEPPER_DEACTIVE_TIME 0
238
+#define DISABLE_INACTIVE_X true
239
+#define DISABLE_INACTIVE_Y true
240
+#define DISABLE_INACTIVE_Z true  // set to false if the nozzle will fall down on your printed part when print has finished.
241
+#define DISABLE_INACTIVE_E true
236 242
 
237 243
 #define DEFAULT_MINIMUMFEEDRATE       0.0     // minimum feedrate
238 244
 #define DEFAULT_MINTRAVELFEEDRATE     0.0

+ 3
- 1
Marlin/example_configurations/delta/generic/Configuration.h View File

@@ -384,11 +384,13 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
384 384
 #define Z_ENABLE_ON 0
385 385
 #define E_ENABLE_ON 0 // For all extruders
386 386
 
387
-// Disables axis when it's not being used.
387
+// Disables axis stepper immediately when it's not being used.
388 388
 // WARNING: When motors turn off there is a chance of losing position accuracy!
389 389
 #define DISABLE_X false
390 390
 #define DISABLE_Y false
391 391
 #define DISABLE_Z false
392
+// Warn on display about possibly reduced accuracy
393
+//#define DISABLE_REDUCED_ACCURACY_WARNING
392 394
 
393 395
 // @section extruder
394 396
 

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

@@ -232,7 +232,13 @@
232 232
 #define INVERT_E_STEP_PIN false
233 233
 
234 234
 // Default stepper release if idle. Set to 0 to deactivate.
235
+// Steppers will shut down DEFAULT_STEPPER_DEACTIVE_TIME seconds after the last move when DISABLE_INACTIVE_? is true.
236
+// Time can be set by M18 and M84.
235 237
 #define DEFAULT_STEPPER_DEACTIVE_TIME 60
238
+#define DISABLE_INACTIVE_X true
239
+#define DISABLE_INACTIVE_Y true
240
+#define DISABLE_INACTIVE_Z true  // set to false if the nozzle will fall down on your printed part when print has finished.
241
+#define DISABLE_INACTIVE_E true
236 242
 
237 243
 #define DEFAULT_MINIMUMFEEDRATE       0.0     // minimum feedrate
238 244
 #define DEFAULT_MINTRAVELFEEDRATE     0.0

+ 3
- 1
Marlin/example_configurations/delta/kossel_mini/Configuration.h View File

@@ -384,11 +384,13 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
384 384
 #define Z_ENABLE_ON 0
385 385
 #define E_ENABLE_ON 0 // For all extruders
386 386
 
387
-// Disables axis when it's not being used.
387
+// Disables axis stepper immediately when it's not being used.
388 388
 // WARNING: When motors turn off there is a chance of losing position accuracy!
389 389
 #define DISABLE_X false
390 390
 #define DISABLE_Y false
391 391
 #define DISABLE_Z false
392
+// Warn on display about possibly reduced accuracy
393
+//#define DISABLE_REDUCED_ACCURACY_WARNING
392 394
 
393 395
 // @section extruder
394 396
 

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

@@ -232,7 +232,13 @@
232 232
 #define INVERT_E_STEP_PIN false
233 233
 
234 234
 // Default stepper release if idle. Set to 0 to deactivate.
235
+// Steppers will shut down DEFAULT_STEPPER_DEACTIVE_TIME seconds after the last move when DISABLE_INACTIVE_? is true.
236
+// Time can be set by M18 and M84.
235 237
 #define DEFAULT_STEPPER_DEACTIVE_TIME 60
238
+#define DISABLE_INACTIVE_X true
239
+#define DISABLE_INACTIVE_Y true
240
+#define DISABLE_INACTIVE_Z true  // set to false if the nozzle will fall down on your printed part when print has finished.
241
+#define DISABLE_INACTIVE_E true
236 242
 
237 243
 #define DEFAULT_MINIMUMFEEDRATE       0.0     // minimum feedrate
238 244
 #define DEFAULT_MINTRAVELFEEDRATE     0.0

+ 3
- 1
Marlin/example_configurations/delta/kossel_pro/Configuration.h View File

@@ -371,11 +371,13 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
371 371
 #define Z_ENABLE_ON 0
372 372
 #define E_ENABLE_ON 0 // For all extruders
373 373
 
374
-// Disables axis when it's not being used.
374
+// Disables axis stepper immediately when it's not being used.
375 375
 // WARNING: When motors turn off there is a chance of losing position accuracy!
376 376
 #define DISABLE_X false
377 377
 #define DISABLE_Y false
378 378
 #define DISABLE_Z false
379
+// Warn on display about possibly reduced accuracy
380
+//#define DISABLE_REDUCED_ACCURACY_WARNING
379 381
 
380 382
 // @section extruder
381 383
 

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

@@ -236,7 +236,13 @@
236 236
 #define INVERT_E_STEP_PIN false
237 237
 
238 238
 // Default stepper release if idle. Set to 0 to deactivate.
239
+// Steppers will shut down DEFAULT_STEPPER_DEACTIVE_TIME seconds after the last move when DISABLE_INACTIVE_? is true.
240
+// Time can be set by M18 and M84.
239 241
 #define DEFAULT_STEPPER_DEACTIVE_TIME 60
242
+#define DISABLE_INACTIVE_X true
243
+#define DISABLE_INACTIVE_Y true
244
+#define DISABLE_INACTIVE_Z true  // set to false if the nozzle will fall down on your printed part when print has finished.
245
+#define DISABLE_INACTIVE_E true
240 246
 
241 247
 #define DEFAULT_MINIMUMFEEDRATE       0.0     // minimum feedrate
242 248
 #define DEFAULT_MINTRAVELFEEDRATE     0.0

+ 3
- 1
Marlin/example_configurations/makibox/Configuration.h View File

@@ -352,11 +352,13 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
352 352
 #define Z_ENABLE_ON 0
353 353
 #define E_ENABLE_ON 0 // For all extruders
354 354
 
355
-// Disables axis when it's not being used.
355
+// Disables axis stepper immediately when it's not being used.
356 356
 // WARNING: When motors turn off there is a chance of losing position accuracy!
357 357
 #define DISABLE_X false
358 358
 #define DISABLE_Y false
359 359
 #define DISABLE_Z false
360
+// Warn on display about possibly reduced accuracy
361
+//#define DISABLE_REDUCED_ACCURACY_WARNING
360 362
 
361 363
 // @section extruder
362 364
 

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

@@ -232,7 +232,13 @@
232 232
 #define INVERT_E_STEP_PIN false
233 233
 
234 234
 // Default stepper release if idle. Set to 0 to deactivate.
235
+// Steppers will shut down DEFAULT_STEPPER_DEACTIVE_TIME seconds after the last move when DISABLE_INACTIVE_? is true.
236
+// Time can be set by M18 and M84.
235 237
 #define DEFAULT_STEPPER_DEACTIVE_TIME 60
238
+#define DISABLE_INACTIVE_X true
239
+#define DISABLE_INACTIVE_Y true
240
+#define DISABLE_INACTIVE_Z true  // set to false if the nozzle will fall down on your printed part when print has finished.
241
+#define DISABLE_INACTIVE_E true
236 242
 
237 243
 #define DEFAULT_MINIMUMFEEDRATE       0.0     // minimum feedrate
238 244
 #define DEFAULT_MINTRAVELFEEDRATE     0.0

+ 3
- 1
Marlin/example_configurations/tvrrug/Round2/Configuration.h View File

@@ -339,11 +339,13 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
339 339
 #define Z_ENABLE_ON 1
340 340
 #define E_ENABLE_ON 1 // For all extruders
341 341
 
342
-// Disables axis when it's not being used.
342
+// Disables axis stepper immediately when it's not being used.
343 343
 // WARNING: When motors turn off there is a chance of losing position accuracy!
344 344
 #define DISABLE_X false
345 345
 #define DISABLE_Y false
346 346
 #define DISABLE_Z false
347
+// Warn on display about possibly reduced accuracy
348
+//#define DISABLE_REDUCED_ACCURACY_WARNING
347 349
 
348 350
 // @section extruder
349 351
 

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

@@ -232,7 +232,13 @@
232 232
 #define INVERT_E_STEP_PIN false
233 233
 
234 234
 // Default stepper release if idle. Set to 0 to deactivate.
235
+// Steppers will shut down DEFAULT_STEPPER_DEACTIVE_TIME seconds after the last move when DISABLE_INACTIVE_? is true.
236
+// Time can be set by M18 and M84.
235 237
 #define DEFAULT_STEPPER_DEACTIVE_TIME 60
238
+#define DISABLE_INACTIVE_X true
239
+#define DISABLE_INACTIVE_Y true
240
+#define DISABLE_INACTIVE_Z true  // set to false if the nozzle will fall down on your printed part when print has finished.
241
+#define DISABLE_INACTIVE_E true
236 242
 
237 243
 #define DEFAULT_MINIMUMFEEDRATE       0.0     // minimum feedrate
238 244
 #define DEFAULT_MINTRAVELFEEDRATE     0.0

+ 6
- 4
Marlin/ultralcd.cpp View File

@@ -1736,21 +1736,23 @@ void lcd_update() {
1736 1736
     }
1737 1737
     #if ENABLED(DOGLCD)  // Changes due to different driver architecture of the DOGM display
1738 1738
         if (lcdDrawUpdate) {
1739
-          blink++;     // Variable for fan animation and alive dot
1739
+          blink++;     // Variable for animation and alive dot
1740 1740
           u8g.firstPage();
1741 1741
           do {
1742 1742
             lcd_setFont(FONT_MENU);
1743 1743
             u8g.setPrintPos(125, 0);
1744
-            if (blink % 2) u8g.setColorIndex(1); else u8g.setColorIndex(0); // Set color for the alive dot
1744
+            if (blink & 1) u8g.setColorIndex(1); else u8g.setColorIndex(0); // Set color for the alive dot
1745 1745
             u8g.drawPixel(127, 63); // draw alive dot
1746 1746
             u8g.setColorIndex(1); // black on white
1747 1747
             (*currentMenu)();
1748 1748
           } while (u8g.nextPage());
1749 1749
         }
1750 1750
     #else
1751
-      if (lcdDrawUpdate)
1751
+      if (lcdDrawUpdate) {
1752
+        blink++;     // Variable for animation
1752 1753
         (*currentMenu)();
1753
-    #endif
1754
+      }
1755
+      #endif
1754 1756
 
1755 1757
     #if ENABLED(LCD_HAS_STATUS_INDICATORS)
1756 1758
       lcd_implementation_update_indicators();

+ 50
- 22
Marlin/ultralcd_implementation_hitachi_HD44780.h View File

@@ -3,14 +3,10 @@
3 3
 
4 4
 /**
5 5
 * Implementation of the LCD display routines for a Hitachi HD44780 display. These are common LCD character displays.
6
-* When selecting the Russian language, a slightly different LCD implementation is used to handle UTF8 characters.
7 6
 **/
8 7
 
9
-//#if DISABLED(REPRAPWORLD_KEYPAD)
10
-//  extern volatile uint8_t buttons;  //the last checked buttons in a bit array.
11
-//#else
12
-  extern volatile uint8_t buttons;  //an extended version of the last checked buttons in a bit array.
13
-//#endif
8
+static unsigned char blink = 0; // Variable for animation
9
+extern volatile uint8_t buttons;  //an extended version of the last checked buttons in a bit array.
14 10
 
15 11
 ////////////////////////////////////
16 12
 // Setup button and encode mappings for each panel (into 'buttons' variable
@@ -627,29 +623,61 @@ static void lcd_implementation_status_screen() {
627 623
         LCD_TEMP(degBed(), degTargetBed(), LCD_STR_BEDTEMP[0]);
628 624
 
629 625
       #else
626
+        // Before homing the axis letters are blinking 'X' <-> '?'.
627
+        // When axis is homed but axis_known_position is false the axis letters are blinking 'X' <-> ' '.
628
+        // When everything is ok you see a constant 'X'.
629
+
630
+        if (blink & 1)
631
+          lcd_printPGM(PSTR("X"));
632
+        else {
633
+          if (!axis_homed[X_AXIS])
634
+            lcd_printPGM(PSTR("?"));
635
+          else 
636
+            #if DISABLED(DISABLE_REDUCED_ACCURACY_WARNING)
637
+              if (!axis_known_position[X_AXIS])
638
+                lcd_printPGM(PSTR(" "));
639
+              else
640
+            #endif
641
+            lcd_printPGM(PSTR("X"));
642
+        }
630 643
 
631
-        lcd.print('X');
632
-        if (axis_known_position[X_AXIS])
633
-          lcd.print(ftostr4sign(current_position[X_AXIS]));
634
-        else
635
-          lcd_printPGM(PSTR(" ---"));
636
-
637
-        lcd_printPGM(PSTR(" Y"));
638
-        if (axis_known_position[Y_AXIS])
639
-          lcd.print(ftostr4sign(current_position[Y_AXIS]));
640
-        else
641
-          lcd_printPGM(PSTR(" ---"));
644
+        lcd.print(ftostr4sign(current_position[X_AXIS]));
645
+
646
+        lcd_printPGM(PSTR(" "));
647
+        if (blink & 1)
648
+          lcd_printPGM(PSTR("Y"));
649
+        else {
650
+          if (!axis_homed[Y_AXIS])
651
+            lcd_printPGM(PSTR("?"));
652
+          else 
653
+            #if DISABLED(DISABLE_REDUCED_ACCURACY_WARNING)
654
+              if (!axis_known_position[Y_AXIS])
655
+                lcd_printPGM(PSTR(" "));
656
+              else
657
+            #endif
658
+            lcd_printPGM(PSTR("Y"));
659
+        }
660
+        lcd.print(ftostr4sign(current_position[Y_AXIS]));
642 661
 
643 662
       #endif // EXTRUDERS > 1 || TEMP_SENSOR_BED != 0
644 663
 
645 664
     #endif // LCD_WIDTH >= 20
646 665
 
647 666
     lcd.setCursor(LCD_WIDTH - 8, 1);
648
-    lcd_printPGM(PSTR("Z "));
649
-    if (axis_known_position[Z_AXIS])
650
-      lcd.print(ftostr32sp(current_position[Z_AXIS] + 0.00001));
651
-    else
652
-      lcd_printPGM(PSTR("---.--"));
667
+    if (blink & 1)
668
+      lcd_printPGM(PSTR("Z"));
669
+    else {
670
+      if (!axis_homed[Z_AXIS])
671
+        lcd_printPGM(PSTR("?"));
672
+      else 
673
+        #if DISABLED(DISABLE_REDUCED_ACCURACY_WARNING)
674
+          if (!axis_known_position[Z_AXIS])
675
+            lcd_printPGM(PSTR(" "));
676
+          else
677
+        #endif
678
+        lcd_printPGM(PSTR("Z"));
679
+    }
680
+    lcd.print(ftostr32sp(current_position[Z_AXIS] + 0.00001));
653 681
 
654 682
   #endif // LCD_HEIGHT > 2
655 683
 

Loading…
Cancel
Save