Browse Source

Merge pull request #6133 from thinkyhead/rc_use_safe_delay

Use safe_delay to ensure watchdog reset
Scott Lahteine 8 years ago
parent
commit
8c07ac7f7c
3 changed files with 29 additions and 30 deletions
  1. 3
    3
      Marlin/Marlin_main.cpp
  2. 7
    7
      Marlin/UBL_Bed_Leveling.cpp
  3. 19
    20
      Marlin/UBL_G29.cpp

+ 3
- 3
Marlin/Marlin_main.cpp View File

6023
       fanSpeeds[0] = 0;
6023
       fanSpeeds[0] = 0;
6024
     #endif
6024
     #endif
6025
   #endif
6025
   #endif
6026
-  delay(1000); // Wait 1 second before switching off
6026
+  safe_delay(1000); // Wait 1 second before switching off
6027
   #if HAS_SUICIDE
6027
   #if HAS_SUICIDE
6028
     stepper.synchronize();
6028
     stepper.synchronize();
6029
     suicide();
6029
     suicide();
7589
     // Synchronize steppers and then disable extruders steppers for manual filament changing
7589
     // Synchronize steppers and then disable extruders steppers for manual filament changing
7590
     stepper.synchronize();
7590
     stepper.synchronize();
7591
     disable_e_steppers();
7591
     disable_e_steppers();
7592
-    delay(100);
7592
+    safe_delay(100);
7593
 
7593
 
7594
     millis_t nozzle_timeout = millis() + (millis_t)(FILAMENT_CHANGE_NOZZLE_TIMEOUT) * 1000L;
7594
     millis_t nozzle_timeout = millis() + (millis_t)(FILAMENT_CHANGE_NOZZLE_TIMEOUT) * 1000L;
7595
     bool nozzle_timed_out = false;
7595
     bool nozzle_timed_out = false;
8112
   inline void move_extruder_servo(uint8_t e) {
8112
   inline void move_extruder_servo(uint8_t e) {
8113
     const int angles[2] = SWITCHING_EXTRUDER_SERVO_ANGLES;
8113
     const int angles[2] = SWITCHING_EXTRUDER_SERVO_ANGLES;
8114
     MOVE_SERVO(SWITCHING_EXTRUDER_SERVO_NR, angles[e]);
8114
     MOVE_SERVO(SWITCHING_EXTRUDER_SERVO_NR, angles[e]);
8115
-    delay(500);
8115
+    safe_delay(500);
8116
   }
8116
   }
8117
 #endif
8117
 #endif
8118
 
8118
 

+ 7
- 7
Marlin/UBL_Bed_Leveling.cpp View File

183
         #if TX_BUFFER_SIZE>0
183
         #if TX_BUFFER_SIZE>0
184
           MYSERIAL.flushTX();
184
           MYSERIAL.flushTX();
185
         #endif
185
         #endif
186
-        delay(15);
186
+        safe_delay(15);
187
       }
187
       }
188
       
188
       
189
       SERIAL_ECHOPAIR("(", UBL_MESH_NUM_X_POINTS - 1);
189
       SERIAL_ECHOPAIR("(", UBL_MESH_NUM_X_POINTS - 1);
193
       SERIAL_ECHOPAIR("(", UBL_MESH_MIN_X);
193
       SERIAL_ECHOPAIR("(", UBL_MESH_MIN_X);
194
       SERIAL_ECHOPAIR(",", UBL_MESH_MAX_Y);
194
       SERIAL_ECHOPAIR(",", UBL_MESH_MAX_Y);
195
       SERIAL_CHAR(')');
195
       SERIAL_CHAR(')');
196
-      delay(15);
196
+      safe_delay(15);
197
 
197
 
198
       for (i = 0; i < UBL_MESH_NUM_X_POINTS - 1; i++) {
198
       for (i = 0; i < UBL_MESH_NUM_X_POINTS - 1; i++) {
199
         SERIAL_ECHOPGM("            ");
199
         SERIAL_ECHOPGM("            ");
200
         #if TX_BUFFER_SIZE>0
200
         #if TX_BUFFER_SIZE>0
201
           MYSERIAL.flushTX();
201
           MYSERIAL.flushTX();
202
         #endif
202
         #endif
203
-        delay(15);
203
+        safe_delay(15);
204
       }
204
       }
205
 
205
 
206
       SERIAL_ECHOPAIR("(", UBL_MESH_MAX_X);
206
       SERIAL_ECHOPAIR("(", UBL_MESH_MAX_X);
207
       SERIAL_ECHOPAIR(",", UBL_MESH_MAX_Y);
207
       SERIAL_ECHOPAIR(",", UBL_MESH_MAX_Y);
208
       SERIAL_ECHOLNPGM(")");
208
       SERIAL_ECHOLNPGM(")");
209
-      delay(15);
209
+      safe_delay(15);
210
     }
210
     }
211
 
211
 
212
     for (j = UBL_MESH_NUM_Y_POINTS - 1; j >= 0; j--) {
212
     for (j = UBL_MESH_NUM_Y_POINTS - 1; j >= 0; j--) {
234
         #if TX_BUFFER_SIZE>0
234
         #if TX_BUFFER_SIZE>0
235
           MYSERIAL.flushTX();
235
           MYSERIAL.flushTX();
236
         #endif
236
         #endif
237
-        delay(15);
237
+        safe_delay(15);
238
         if (map_type==0) {
238
         if (map_type==0) {
239
           if (i == current_xi && j == current_yi) // is the nozzle here? if so, finish marking the number
239
           if (i == current_xi && j == current_yi) // is the nozzle here? if so, finish marking the number
240
             SERIAL_CHAR(']');
240
             SERIAL_CHAR(']');
260
         #if TX_BUFFER_SIZE>0
260
         #if TX_BUFFER_SIZE>0
261
           MYSERIAL.flushTX();
261
           MYSERIAL.flushTX();
262
         #endif
262
         #endif
263
-        delay(15);
263
+        safe_delay(15);
264
       }
264
       }
265
       SERIAL_ECHOPAIR("(", int(UBL_MESH_MAX_X));
265
       SERIAL_ECHOPAIR("(", int(UBL_MESH_MAX_X));
266
       SERIAL_ECHOPAIR(",", int(UBL_MESH_MIN_Y));
266
       SERIAL_ECHOPAIR(",", int(UBL_MESH_MIN_Y));
276
         #if TX_BUFFER_SIZE>0
276
         #if TX_BUFFER_SIZE>0
277
           MYSERIAL.flushTX();
277
           MYSERIAL.flushTX();
278
         #endif
278
         #endif
279
-        delay(15);
279
+        safe_delay(15);
280
       }
280
       }
281
       SERIAL_ECHOPAIR("(", UBL_MESH_NUM_X_POINTS-1);
281
       SERIAL_ECHOPAIR("(", UBL_MESH_NUM_X_POINTS-1);
282
       SERIAL_ECHOPAIR(",", 0);
282
       SERIAL_ECHOPAIR(",", 0);

+ 19
- 20
Marlin/UBL_G29.cpp View File

497
           SERIAL_ECHOLNPGM("Checking G29 has control of LCD Panel:");
497
           SERIAL_ECHOLNPGM("Checking G29 has control of LCD Panel:");
498
           wait_for_user = true;
498
           wait_for_user = true;
499
           while (wait_for_user) {
499
           while (wait_for_user) {
500
-            idle();
501
-            delay(250);
500
+            safe_delay(250);
502
             SERIAL_ECHO((int)ubl_encoderDiff);
501
             SERIAL_ECHO((int)ubl_encoderDiff);
503
             ubl_encoderDiff = 0;
502
             ubl_encoderDiff = 0;
504
             SERIAL_EOL;
503
             SERIAL_EOL;
644
           }
643
           }
645
         }
644
         }
646
         ubl_has_control_of_lcd_panel = false;
645
         ubl_has_control_of_lcd_panel = false;
647
-        delay(20); // We don't want any switch noise.
646
+        safe_delay(20); // We don't want any switch noise.
648
 
647
 
649
         ubl.state.z_offset = measured_z;
648
         ubl.state.z_offset = measured_z;
650
 
649
 
734
         }
733
         }
735
         ubl_has_control_of_lcd_panel = false;
734
         ubl_has_control_of_lcd_panel = false;
736
         restore_ubl_active_state_and_leave();
735
         restore_ubl_active_state_and_leave();
737
-        delay(50);  // Debounce the Encoder wheel
736
+        safe_delay(50);  // Debounce the Encoder wheel
738
         return;
737
         return;
739
       }
738
       }
740
 
739
 
1113
     else
1112
     else
1114
       SERIAL_PROTOCOLPGM("In");
1113
       SERIAL_PROTOCOLPGM("In");
1115
     SERIAL_PROTOCOLLNPGM("ctive.\n");
1114
     SERIAL_PROTOCOLLNPGM("ctive.\n");
1116
-    delay(50);
1115
+    safe_delay(50);
1117
 
1116
 
1118
     if (ubl.state.eeprom_storage_slot == -1)
1117
     if (ubl.state.eeprom_storage_slot == -1)
1119
       SERIAL_PROTOCOLPGM("No Mesh Loaded.");
1118
       SERIAL_PROTOCOLPGM("No Mesh Loaded.");
1123
       SERIAL_PROTOCOLPGM(" Loaded.");
1122
       SERIAL_PROTOCOLPGM(" Loaded.");
1124
     }
1123
     }
1125
     SERIAL_EOL;
1124
     SERIAL_EOL;
1126
-    delay(50);
1125
+    safe_delay(50);
1127
 
1126
 
1128
     #if ENABLED(ENABLE_LEVELING_FADE_HEIGHT)
1127
     #if ENABLED(ENABLE_LEVELING_FADE_HEIGHT)
1129
       SERIAL_PROTOCOLPAIR("g29_correction_fade_height : ", ubl.state.g29_correction_fade_height);
1128
       SERIAL_PROTOCOLPAIR("g29_correction_fade_height : ", ubl.state.g29_correction_fade_height);
1133
     SERIAL_PROTOCOLPGM("z_offset: ");
1132
     SERIAL_PROTOCOLPGM("z_offset: ");
1134
     SERIAL_PROTOCOL_F(ubl.state.z_offset, 6);
1133
     SERIAL_PROTOCOL_F(ubl.state.z_offset, 6);
1135
     SERIAL_EOL;
1134
     SERIAL_EOL;
1136
-    delay(50);
1135
+    safe_delay(50);
1137
 
1136
 
1138
     SERIAL_PROTOCOLPGM("X-Axis Mesh Points at: ");
1137
     SERIAL_PROTOCOLPGM("X-Axis Mesh Points at: ");
1139
     for (uint8_t i = 0; i < UBL_MESH_NUM_X_POINTS; i++) {
1138
     for (uint8_t i = 0; i < UBL_MESH_NUM_X_POINTS; i++) {
1140
       SERIAL_PROTOCOL_F( ubl.map_x_index_to_bed_location(i), 1);
1139
       SERIAL_PROTOCOL_F( ubl.map_x_index_to_bed_location(i), 1);
1141
       SERIAL_PROTOCOLPGM("  ");
1140
       SERIAL_PROTOCOLPGM("  ");
1142
-      delay(50);
1141
+      safe_delay(50);
1143
     }
1142
     }
1144
     SERIAL_EOL;
1143
     SERIAL_EOL;
1145
 
1144
 
1147
     for (uint8_t i = 0; i < UBL_MESH_NUM_Y_POINTS; i++) {
1146
     for (uint8_t i = 0; i < UBL_MESH_NUM_Y_POINTS; i++) {
1148
       SERIAL_PROTOCOL_F( ubl.map_y_index_to_bed_location(i), 1);
1147
       SERIAL_PROTOCOL_F( ubl.map_y_index_to_bed_location(i), 1);
1149
       SERIAL_PROTOCOLPGM("  ");
1148
       SERIAL_PROTOCOLPGM("  ");
1150
-      delay(50);
1149
+      safe_delay(50);
1151
     }
1150
     }
1152
     SERIAL_EOL;
1151
     SERIAL_EOL;
1153
 
1152
 
1156
       SERIAL_PROTOCOLLNPAIR("  state:", READ(KILL_PIN));
1155
       SERIAL_PROTOCOLLNPAIR("  state:", READ(KILL_PIN));
1157
     #endif
1156
     #endif
1158
     SERIAL_EOL;
1157
     SERIAL_EOL;
1159
-    delay(50);
1158
+    safe_delay(50);
1160
 
1159
 
1161
     SERIAL_PROTOCOLLNPAIR("ubl_state_at_invocation :", ubl_state_at_invocation);
1160
     SERIAL_PROTOCOLLNPAIR("ubl_state_at_invocation :", ubl_state_at_invocation);
1162
     SERIAL_EOL;
1161
     SERIAL_EOL;
1163
     SERIAL_PROTOCOLLNPAIR("ubl_state_recursion_chk :", ubl_state_recursion_chk);
1162
     SERIAL_PROTOCOLLNPAIR("ubl_state_recursion_chk :", ubl_state_recursion_chk);
1164
     SERIAL_EOL;
1163
     SERIAL_EOL;
1165
-    delay(50);
1164
+    safe_delay(50);
1166
     SERIAL_PROTOCOLPGM("Free EEPROM space starts at: 0x");
1165
     SERIAL_PROTOCOLPGM("Free EEPROM space starts at: 0x");
1167
     prt_hex_word(ubl_eeprom_start);
1166
     prt_hex_word(ubl_eeprom_start);
1168
     SERIAL_EOL;
1167
     SERIAL_EOL;
1170
     SERIAL_PROTOCOLPGM("end of EEPROM              : ");
1169
     SERIAL_PROTOCOLPGM("end of EEPROM              : ");
1171
     prt_hex_word(E2END);
1170
     prt_hex_word(E2END);
1172
     SERIAL_EOL;
1171
     SERIAL_EOL;
1173
-    delay(50);
1172
+    safe_delay(50);
1174
 
1173
 
1175
     SERIAL_PROTOCOLLNPAIR("sizeof(ubl) :  ", (int)sizeof(ubl));
1174
     SERIAL_PROTOCOLLNPAIR("sizeof(ubl) :  ", (int)sizeof(ubl));
1176
     SERIAL_EOL;
1175
     SERIAL_EOL;
1177
     SERIAL_PROTOCOLLNPAIR("z_value[][] size: ", (int)sizeof(z_values));
1176
     SERIAL_PROTOCOLLNPAIR("z_value[][] size: ", (int)sizeof(z_values));
1178
     SERIAL_EOL;
1177
     SERIAL_EOL;
1179
-    delay(50);
1178
+    safe_delay(50);
1180
 
1179
 
1181
     SERIAL_PROTOCOLPGM("EEPROM free for UBL: 0x");
1180
     SERIAL_PROTOCOLPGM("EEPROM free for UBL: 0x");
1182
     prt_hex_word(k);
1181
     prt_hex_word(k);
1183
     SERIAL_EOL;
1182
     SERIAL_EOL;
1184
-    delay(50);
1183
+    safe_delay(50);
1185
 
1184
 
1186
     SERIAL_PROTOCOLPGM("EEPROM can hold 0x");
1185
     SERIAL_PROTOCOLPGM("EEPROM can hold 0x");
1187
     prt_hex_word(k / sizeof(z_values));
1186
     prt_hex_word(k / sizeof(z_values));
1188
     SERIAL_PROTOCOLLNPGM(" meshes.\n");
1187
     SERIAL_PROTOCOLLNPGM(" meshes.\n");
1189
-    delay(50);
1188
+    safe_delay(50);
1190
 
1189
 
1191
     SERIAL_PROTOCOLPGM("sizeof(ubl.state) :");
1190
     SERIAL_PROTOCOLPGM("sizeof(ubl.state) :");
1192
     prt_hex_word(sizeof(ubl.state));
1191
     prt_hex_word(sizeof(ubl.state));
1193
 
1192
 
1194
     SERIAL_PROTOCOLPAIR("\nUBL_MESH_NUM_X_POINTS  ", UBL_MESH_NUM_X_POINTS);
1193
     SERIAL_PROTOCOLPAIR("\nUBL_MESH_NUM_X_POINTS  ", UBL_MESH_NUM_X_POINTS);
1195
     SERIAL_PROTOCOLPAIR("\nUBL_MESH_NUM_Y_POINTS  ", UBL_MESH_NUM_Y_POINTS);
1194
     SERIAL_PROTOCOLPAIR("\nUBL_MESH_NUM_Y_POINTS  ", UBL_MESH_NUM_Y_POINTS);
1196
-    delay(50);
1195
+    safe_delay(50);
1197
     SERIAL_PROTOCOLPAIR("\nUBL_MESH_MIN_X         ", UBL_MESH_MIN_X);
1196
     SERIAL_PROTOCOLPAIR("\nUBL_MESH_MIN_X         ", UBL_MESH_MIN_X);
1198
     SERIAL_PROTOCOLPAIR("\nUBL_MESH_MIN_Y         ", UBL_MESH_MIN_Y);
1197
     SERIAL_PROTOCOLPAIR("\nUBL_MESH_MIN_Y         ", UBL_MESH_MIN_Y);
1199
-    delay(50);
1198
+    safe_delay(50);
1200
     SERIAL_PROTOCOLPAIR("\nUBL_MESH_MAX_X         ", UBL_MESH_MAX_X);
1199
     SERIAL_PROTOCOLPAIR("\nUBL_MESH_MAX_X         ", UBL_MESH_MAX_X);
1201
     SERIAL_PROTOCOLPAIR("\nUBL_MESH_MAX_Y         ", UBL_MESH_MAX_Y);
1200
     SERIAL_PROTOCOLPAIR("\nUBL_MESH_MAX_Y         ", UBL_MESH_MAX_Y);
1202
-    delay(50);
1201
+    safe_delay(50);
1203
     SERIAL_PROTOCOLPGM("\nMESH_X_DIST        ");
1202
     SERIAL_PROTOCOLPGM("\nMESH_X_DIST        ");
1204
     SERIAL_PROTOCOL_F(MESH_X_DIST, 6);
1203
     SERIAL_PROTOCOL_F(MESH_X_DIST, 6);
1205
     SERIAL_PROTOCOLPGM("\nMESH_Y_DIST        ");
1204
     SERIAL_PROTOCOLPGM("\nMESH_Y_DIST        ");
1206
     SERIAL_PROTOCOL_F(MESH_Y_DIST, 6);
1205
     SERIAL_PROTOCOL_F(MESH_Y_DIST, 6);
1207
     SERIAL_EOL;
1206
     SERIAL_EOL;
1208
-    delay(50);
1207
+    safe_delay(50);
1209
 
1208
 
1210
     if (!ubl.sanity_check())
1209
     if (!ubl.sanity_check())
1211
       SERIAL_PROTOCOLLNPGM("Unified Bed Leveling sanity checks passed.");
1210
       SERIAL_PROTOCOLLNPGM("Unified Bed Leveling sanity checks passed.");
1408
         }
1407
         }
1409
       }
1408
       }
1410
 
1409
 
1411
-      delay(20);                       // We don't want any switch noise.
1410
+      safe_delay(20);                       // We don't want any switch noise.
1412
 
1411
 
1413
       z_values[location.x_index][location.y_index] = new_z;
1412
       z_values[location.x_index][location.y_index] = new_z;
1414
 
1413
 

Loading…
Cancel
Save