Просмотр исходного кода

Slight size reduction by adding idle()

Scott Lahteine 10 лет назад
Родитель
Сommit
d76a01194d
4 измененных файлов: 27 добавлений и 47 удалений
  1. 2
    0
      Marlin/Marlin.h
  2. 20
    34
      Marlin/Marlin_main.cpp
  3. 1
    5
      Marlin/planner.cpp
  4. 4
    8
      Marlin/stepper.cpp

+ 2
- 0
Marlin/Marlin.h Просмотреть файл

116
 
116
 
117
 void get_command();
117
 void get_command();
118
 
118
 
119
+void idle(); // the standard idle routine calls manage_inactivity(false)
120
+
119
 void manage_inactivity(bool ignore_stepper_queue=false);
121
 void manage_inactivity(bool ignore_stepper_queue=false);
120
 
122
 
121
 #if defined(DUAL_X_CARRIAGE) && HAS_X_ENABLE && HAS_X2_ENABLE
123
 #if defined(DUAL_X_CARRIAGE) && HAS_X_ENABLE && HAS_X2_ENABLE

+ 20
- 34
Marlin/Marlin_main.cpp Просмотреть файл

726
     commands_in_queue--;
726
     commands_in_queue--;
727
     cmd_queue_index_r = (cmd_queue_index_r + 1) % BUFSIZE;
727
     cmd_queue_index_r = (cmd_queue_index_r + 1) % BUFSIZE;
728
   }
728
   }
729
-  // Check heater every n milliseconds
730
-  manage_heater();
731
-  manage_inactivity();
732
   checkHitEndstops();
729
   checkHitEndstops();
733
-  lcd_update();
730
+  idle();
734
 }
731
 }
735
 
732
 
736
 void gcode_line_error(const char *err, bool doFlush=true) {
733
 void gcode_line_error(const char *err, bool doFlush=true) {
1998
 
1995
 
1999
   if (!lcd_hasstatus()) LCD_MESSAGEPGM(MSG_DWELL);
1996
   if (!lcd_hasstatus()) LCD_MESSAGEPGM(MSG_DWELL);
2000
 
1997
 
2001
-  while (millis() < codenum) {
2002
-    manage_heater();
2003
-    manage_inactivity();
2004
-    lcd_update();
2005
-  }
1998
+  while (millis() < codenum) idle();
2006
 }
1999
 }
2007
 
2000
 
2008
 #ifdef FWRETRACT
2001
 #ifdef FWRETRACT
2682
 
2675
 
2683
           probePointCounter++;
2676
           probePointCounter++;
2684
 
2677
 
2685
-          manage_heater();
2686
-          manage_inactivity();
2687
-          lcd_update();
2678
+          idle();
2688
 
2679
 
2689
         } //xProbe
2680
         } //xProbe
2690
       } //yProbe
2681
       } //yProbe
2885
     st_synchronize();
2876
     st_synchronize();
2886
     refresh_cmd_timeout();
2877
     refresh_cmd_timeout();
2887
     if (codenum > 0) {
2878
     if (codenum > 0) {
2888
-      codenum += previous_cmd_ms;  // keep track of when we started waiting
2889
-      while(millis() < codenum && !lcd_clicked()) {
2890
-        manage_heater();
2891
-        manage_inactivity();
2892
-        lcd_update();
2893
-      }
2879
+      codenum += previous_cmd_ms;  // wait until this time for a click
2880
+      while (millis() < codenum && !lcd_clicked()) idle();
2894
       lcd_ignore_click(false);
2881
       lcd_ignore_click(false);
2895
     }
2882
     }
2896
     else {
2883
     else {
2897
       if (!lcd_detected()) return;
2884
       if (!lcd_detected()) return;
2898
-      while (!lcd_clicked()) {
2899
-        manage_heater();
2900
-        manage_inactivity();
2901
-        lcd_update();
2902
-      }
2885
+      while (!lcd_clicked()) idle();
2903
     }
2886
     }
2904
     if (IS_SD_PRINTING)
2887
     if (IS_SD_PRINTING)
2905
       LCD_MESSAGEPGM(MSG_RESUMING);
2888
       LCD_MESSAGEPGM(MSG_RESUMING);
3525
         #endif
3508
         #endif
3526
         temp_ms = millis();
3509
         temp_ms = millis();
3527
       }
3510
       }
3528
-      manage_heater();
3529
-      manage_inactivity();
3530
-      lcd_update();
3511
+
3512
+      idle();
3513
+
3531
       #ifdef TEMP_RESIDENCY_TIME
3514
       #ifdef TEMP_RESIDENCY_TIME
3532
         // start/restart the TEMP_RESIDENCY_TIME timer whenever we reach target temp for the first time
3515
         // start/restart the TEMP_RESIDENCY_TIME timer whenever we reach target temp for the first time
3533
         // or when current temp falls outside the hysteresis after target temp was reached
3516
         // or when current temp falls outside the hysteresis after target temp was reached
3575
         SERIAL_PROTOCOL_F(degBed(), 1);
3558
         SERIAL_PROTOCOL_F(degBed(), 1);
3576
         SERIAL_EOL;
3559
         SERIAL_EOL;
3577
       }
3560
       }
3578
-      manage_heater();
3579
-      manage_inactivity();
3580
-      lcd_update();
3561
+      idle();
3581
     }
3562
     }
3582
     LCD_MESSAGEPGM(MSG_BED_DONE);
3563
     LCD_MESSAGEPGM(MSG_BED_DONE);
3583
     refresh_cmd_timeout();
3564
     refresh_cmd_timeout();
4262
             break;
4243
             break;
4263
         }
4244
         }
4264
 
4245
 
4265
-        while(digitalRead(pin_number) != target) {
4266
-          manage_heater();
4267
-          manage_inactivity();
4268
-          lcd_update();
4269
-        }
4246
+        while (digitalRead(pin_number) != target) idle();
4270
 
4247
 
4271
       } // pin_number > -1
4248
       } // pin_number > -1
4272
     } // pin_state -1 0 1
4249
     } // pin_state -1 0 1
6254
 }
6231
 }
6255
 
6232
 
6256
 /**
6233
 /**
6234
+ * Standard idle routine keeps the machine alive
6235
+ */
6236
+void idle() {
6237
+  manage_heater();
6238
+  manage_inactivity();
6239
+  lcd_update();
6240
+}
6241
+
6242
+/**
6257
  * Manage several activities:
6243
  * Manage several activities:
6258
  *  - Check for Filament Runout
6244
  *  - Check for Filament Runout
6259
  *  - Keep the command buffer full
6245
  *  - Keep the command buffer full

+ 1
- 5
Marlin/planner.cpp Просмотреть файл

478
 
478
 
479
   // If the buffer is full: good! That means we are well ahead of the robot. 
479
   // If the buffer is full: good! That means we are well ahead of the robot. 
480
   // Rest here until there is room in the buffer.
480
   // Rest here until there is room in the buffer.
481
-  while(block_buffer_tail == next_buffer_head) {
482
-    manage_heater(); 
483
-    manage_inactivity(); 
484
-    lcd_update();
485
-  }
481
+  while (block_buffer_tail == next_buffer_head) idle();
486
 
482
 
487
   #ifdef MESH_BED_LEVELING
483
   #ifdef MESH_BED_LEVELING
488
     if (mbl.active) z += mbl.get_z(x, y);
484
     if (mbl.active) z += mbl.get_z(x, y);

+ 4
- 8
Marlin/stepper.cpp Просмотреть файл

1046
 }
1046
 }
1047
 
1047
 
1048
 
1048
 
1049
-// Block until all buffered steps are executed
1050
-void st_synchronize() {
1051
-  while (blocks_queued()) {
1052
-    manage_heater();
1053
-    manage_inactivity();
1054
-    lcd_update();
1055
-  }
1056
-}
1049
+/**
1050
+ * Block until all buffered steps are executed
1051
+ */
1052
+void st_synchronize() { while (blocks_queued()) idle(); }
1057
 
1053
 
1058
 void st_set_position(const long &x, const long &y, const long &z, const long &e) {
1054
 void st_set_position(const long &x, const long &y, const long &z, const long &e) {
1059
   CRITICAL_SECTION_START;
1055
   CRITICAL_SECTION_START;

Загрузка…
Отмена
Сохранить