소스 검색

Add POWER_LOSS_PIN support

Scott Lahteine 7 년 전
부모
커밋
665ac1e4d0

+ 4
- 0
Marlin/Configuration_adv.h 파일 보기

@@ -589,6 +589,10 @@
589 589
    * point in the file.
590 590
    */
591 591
   //#define POWER_LOSS_RECOVERY
592
+  #if ENABLED(POWER_LOSS_RECOVERY)
593
+    //#define POWER_LOSS_PIN   44     // Pin to detect power loss
594
+    //#define POWER_LOSS_STATE HIGH   // State of pin indicating power loss
595
+  #endif
592 596
 
593 597
   /**
594 598
    * Sort SD file listings in alphabetical order.

+ 4
- 0
Marlin/src/config/default/Configuration_adv.h 파일 보기

@@ -589,6 +589,10 @@
589 589
    * point in the file.
590 590
    */
591 591
   //#define POWER_LOSS_RECOVERY
592
+  #if ENABLED(POWER_LOSS_RECOVERY)
593
+    //#define POWER_LOSS_PIN   44     // Pin to detect power loss
594
+    //#define POWER_LOSS_STATE HIGH   // State of pin indicating power loss
595
+  #endif
592 596
 
593 597
   /**
594 598
    * Sort SD file listings in alphabetical order.

+ 15
- 3
Marlin/src/feature/power_loss_recovery.cpp 파일 보기

@@ -202,12 +202,19 @@ void save_job_recovery_info() {
202 202
     millis_t ms = millis();
203 203
   #endif
204 204
   if (
205
-    #if SAVE_INFO_INTERVAL_MS > 0
206
-      ELAPSED(ms, next_save_ms) ||
207
-    #endif
205
+    // Save on every command
208 206
     #if ENABLED(SAVE_EACH_CMD_MODE)
209 207
       true
210 208
     #else
209
+      // Save if power loss pin is triggered
210
+      #if PIN_EXISTS(POWER_LOSS)
211
+        READ(POWER_LOSS_PIN) == POWER_LOSS_STATE ||
212
+      #endif
213
+      // Save if interval is elapsed
214
+      #if SAVE_INFO_INTERVAL_MS > 0
215
+        ELAPSED(ms, next_save_ms) ||
216
+      #endif
217
+      // Save on every new Z height
211 218
       (current_position[Z_AXIS] > 0 && current_position[Z_AXIS] > job_recovery_info.current_position[Z_AXIS])
212 219
     #endif
213 220
   ) {
@@ -267,6 +274,11 @@ void save_job_recovery_info() {
267 274
 
268 275
     card.openJobRecoveryFile(false);
269 276
     (void)card.saveJobRecoveryInfo();
277
+
278
+    // If power-loss pin was triggered, write just once then kill
279
+    #if PIN_EXISTS(POWER_LOSS)
280
+      if (READ(POWER_LOSS_PIN) == POWER_LOSS_STATE) kill(MSG_POWER_LOSS_RECOVERY);
281
+    #endif
270 282
   }
271 283
 }
272 284
 

+ 1
- 1
buildroot/share/tests/megaatmega2560_tests 파일 보기

@@ -27,7 +27,7 @@ opt_enable PIDTEMPBED FIX_MOUNTED_PROBE Z_SAFE_HOMING
27 27
 opt_enable REPRAP_DISCOUNT_SMART_CONTROLLER SDSUPPORT EEPROM_SETTINGS PINS_DEBUGGING
28 28
 opt_enable BLINKM PCA9632 RGB_LED NEOPIXEL_LED AUTO_POWER_CONTROL NOZZLE_PARK_FEATURE FILAMENT_RUNOUT_SENSOR
29 29
 opt_enable AUTO_BED_LEVELING_LINEAR Z_MIN_PROBE_REPEATABILITY_TEST DEBUG_LEVELING_FEATURE SKEW_CORRECTION SKEW_CORRECTION_FOR_Z SKEW_CORRECTION_GCODE
30
-opt_enable_adv ARC_P_CIRCLES ADVANCED_PAUSE_FEATURE CNC_WORKSPACE_PLANES CNC_COORDINATE_SYSTEMS POWER_LOSS_RECOVERY
30
+opt_enable_adv ARC_P_CIRCLES ADVANCED_PAUSE_FEATURE CNC_WORKSPACE_PLANES CNC_COORDINATE_SYSTEMS POWER_LOSS_RECOVERY POWER_LOSS_PIN POWER_LOSS_STATE
31 31
 opt_enable_adv FWRETRACT MAX7219_DEBUG LED_CONTROL_MENU CASE_LIGHT_ENABLE CASE_LIGHT_USE_NEOPIXEL CODEPENDENT_XY_HOMING
32 32
 opt_set GRID_MAX_POINTS_X 16
33 33
 opt_set_adv FANMUX0_PIN 53

Loading…
취소
저장