|
@@ -38,7 +38,7 @@ void _EEPROM_readData(int &pos, uint8_t* value, uint8_t size)
|
38
|
38
|
// wrong data being written to the variables.
|
39
|
39
|
// ALSO: always make sure the variables in the Store and retrieve sections are in the same order.
|
40
|
40
|
|
41
|
|
-#define EEPROM_VERSION "V13"
|
|
41
|
+#define EEPROM_VERSION "V14"
|
42
|
42
|
|
43
|
43
|
#ifdef EEPROM_SETTINGS
|
44
|
44
|
void Config_StoreSettings()
|
|
@@ -63,11 +63,11 @@ void Config_StoreSettings()
|
63
|
63
|
EEPROM_WRITE_VAR(i,delta_radius);
|
64
|
64
|
EEPROM_WRITE_VAR(i,delta_diagonal_rod);
|
65
|
65
|
EEPROM_WRITE_VAR(i,delta_segments_per_second);
|
66
|
|
- #endif
|
|
66
|
+ #endif//DELTA
|
67
|
67
|
#ifndef ULTIPANEL
|
68
|
68
|
int plaPreheatHotendTemp = PLA_PREHEAT_HOTEND_TEMP, plaPreheatHPBTemp = PLA_PREHEAT_HPB_TEMP, plaPreheatFanSpeed = PLA_PREHEAT_FAN_SPEED;
|
69
|
69
|
int absPreheatHotendTemp = ABS_PREHEAT_HOTEND_TEMP, absPreheatHPBTemp = ABS_PREHEAT_HPB_TEMP, absPreheatFanSpeed = ABS_PREHEAT_FAN_SPEED;
|
70
|
|
- #endif
|
|
70
|
+ #endif//ULTIPANEL
|
71
|
71
|
EEPROM_WRITE_VAR(i,plaPreheatHotendTemp);
|
72
|
72
|
EEPROM_WRITE_VAR(i,plaPreheatHPBTemp);
|
73
|
73
|
EEPROM_WRITE_VAR(i,plaPreheatFanSpeed);
|
|
@@ -76,37 +76,58 @@ void Config_StoreSettings()
|
76
|
76
|
EEPROM_WRITE_VAR(i,absPreheatFanSpeed);
|
77
|
77
|
EEPROM_WRITE_VAR(i,zprobe_zoffset);
|
78
|
78
|
#ifdef PIDTEMP
|
79
|
|
- EEPROM_WRITE_VAR(i,Kp);
|
80
|
|
- EEPROM_WRITE_VAR(i,Ki);
|
81
|
|
- EEPROM_WRITE_VAR(i,Kd);
|
82
|
|
- #else
|
|
79
|
+ float dummy = 0.0f;
|
|
80
|
+ for (int e = 0; e < 3; e++)
|
|
81
|
+ {
|
|
82
|
+ if (e < EXTRUDERS)
|
|
83
|
+ {
|
|
84
|
+ EEPROM_WRITE_VAR(i,Kp[e]);
|
|
85
|
+ EEPROM_WRITE_VAR(i,Ki[e]);
|
|
86
|
+ EEPROM_WRITE_VAR(i,Kd[e]);
|
|
87
|
+ #ifdef PID_ADD_EXTRUSION_RATE
|
|
88
|
+ EEPROM_WRITE_VAR(i,Kc[e]);
|
|
89
|
+ #else//PID_ADD_EXTRUSION_RATE
|
|
90
|
+ dummy = 1.0f; // 1.0 = default kc
|
|
91
|
+ EEPROM_WRITE_VAR(dummmy);
|
|
92
|
+ #endif//PID_ADD_EXTRUSION_RATE
|
|
93
|
+ }
|
|
94
|
+ else
|
|
95
|
+ {
|
|
96
|
+ dummy = 3000.0f;
|
|
97
|
+ EEPROM_WRITE_VAR(i, dummy);
|
|
98
|
+ dummy = 0.0f;
|
|
99
|
+ EEPROM_WRITE_VAR(i,dummy);
|
|
100
|
+ EEPROM_WRITE_VAR(i,dummy);
|
|
101
|
+ }
|
|
102
|
+ }
|
|
103
|
+ #else//PIDTEMP
|
83
|
104
|
float dummy = 3000.0f;
|
84
|
105
|
EEPROM_WRITE_VAR(i,dummy);
|
85
|
106
|
dummy = 0.0f;
|
86
|
107
|
EEPROM_WRITE_VAR(i,dummy);
|
87
|
108
|
EEPROM_WRITE_VAR(i,dummy);
|
88
|
|
- #endif
|
|
109
|
+ #endif//PIDTEMP
|
89
|
110
|
#ifndef DOGLCD
|
90
|
111
|
int lcd_contrast = 32;
|
91
|
|
- #endif
|
|
112
|
+ #endif//DOGLCD
|
92
|
113
|
EEPROM_WRITE_VAR(i,lcd_contrast);
|
93
|
114
|
#ifdef SCARA
|
94
|
115
|
EEPROM_WRITE_VAR(i,axis_scaling); // Add scaling for SCARA
|
95
|
|
- #endif
|
|
116
|
+ #endif//SCARA
|
96
|
117
|
#ifdef FWRETRACT
|
97
|
118
|
EEPROM_WRITE_VAR(i,autoretract_enabled);
|
98
|
119
|
EEPROM_WRITE_VAR(i,retract_length);
|
99
|
120
|
#if EXTRUDERS > 1
|
100
|
121
|
EEPROM_WRITE_VAR(i,retract_length_swap);
|
101
|
|
- #endif
|
|
122
|
+ #endif//EXTRUDERS > 1
|
102
|
123
|
EEPROM_WRITE_VAR(i,retract_feedrate);
|
103
|
124
|
EEPROM_WRITE_VAR(i,retract_zlift);
|
104
|
125
|
EEPROM_WRITE_VAR(i,retract_recover_length);
|
105
|
126
|
#if EXTRUDERS > 1
|
106
|
127
|
EEPROM_WRITE_VAR(i,retract_recover_length_swap);
|
107
|
|
- #endif
|
|
128
|
+ #endif//EXTRUDERS > 1
|
108
|
129
|
EEPROM_WRITE_VAR(i,retract_recover_feedrate);
|
109
|
|
- #endif
|
|
130
|
+ #endif//FWRETRACT
|
110
|
131
|
|
111
|
132
|
// Save filament sizes
|
112
|
133
|
EEPROM_WRITE_VAR(i, volumetric_enabled);
|
|
@@ -115,8 +136,8 @@ void Config_StoreSettings()
|
115
|
136
|
EEPROM_WRITE_VAR(i, filament_size[1]);
|
116
|
137
|
#if EXTRUDERS > 2
|
117
|
138
|
EEPROM_WRITE_VAR(i, filament_size[2]);
|
118
|
|
- #endif
|
119
|
|
- #endif
|
|
139
|
+ #endif//EXTRUDERS > 2
|
|
140
|
+ #endif//EXTRUDERS > 1
|
120
|
141
|
|
121
|
142
|
char ver2[4]=EEPROM_VERSION;
|
122
|
143
|
i=EEPROM_OFFSET;
|
|
@@ -149,7 +170,7 @@ SERIAL_ECHOLNPGM("Scaling factors:");
|
149
|
170
|
SERIAL_ECHOLN("");
|
150
|
171
|
|
151
|
172
|
SERIAL_ECHO_START;
|
152
|
|
-#endif
|
|
173
|
+#endif//SCARA
|
153
|
174
|
SERIAL_ECHOLNPGM("Maximum feedrates (mm/s):");
|
154
|
175
|
SERIAL_ECHO_START;
|
155
|
176
|
SERIAL_ECHOPAIR(" M203 X", max_feedrate[X_AXIS]);
|
|
@@ -206,16 +227,23 @@ SERIAL_ECHOLNPGM("Scaling factors:");
|
206
|
227
|
SERIAL_ECHOPAIR(" R" ,delta_radius );
|
207
|
228
|
SERIAL_ECHOPAIR(" S" ,delta_segments_per_second );
|
208
|
229
|
SERIAL_ECHOLN("");
|
209
|
|
-#endif
|
|
230
|
+#endif//DELTA
|
210
|
231
|
#ifdef PIDTEMP
|
211
|
232
|
SERIAL_ECHO_START;
|
212
|
233
|
SERIAL_ECHOLNPGM("PID settings:");
|
213
|
|
- SERIAL_ECHO_START;
|
214
|
|
- SERIAL_ECHOPAIR(" M301 P",Kp);
|
215
|
|
- SERIAL_ECHOPAIR(" I" ,unscalePID_i(Ki));
|
216
|
|
- SERIAL_ECHOPAIR(" D" ,unscalePID_d(Kd));
|
217
|
|
- SERIAL_ECHOLN("");
|
218
|
|
-#endif
|
|
234
|
+ for (int e = 0; e < EXTRUDERS; e++)
|
|
235
|
+ {
|
|
236
|
+ SERIAL_ECHO_START;
|
|
237
|
+ SERIAL_ECHOPAIR(" M301 E", (long unsigned int)e);
|
|
238
|
+ SERIAL_ECHOPAIR(" P", Kp[e]);
|
|
239
|
+ SERIAL_ECHOPAIR(" I" ,unscalePID_i(Ki[e]));
|
|
240
|
+ SERIAL_ECHOPAIR(" D" ,unscalePID_d(Kd[e]));
|
|
241
|
+#ifdef PID_ADD_EXTRUSION_RATE
|
|
242
|
+ SERIAL_ECHOPAIR(" C" ,Kc[e]);
|
|
243
|
+#endif//PID_ADD_EXTRUSION_RATE
|
|
244
|
+ SERIAL_ECHOLN("");
|
|
245
|
+ }
|
|
246
|
+#endif//PIDTEMP
|
219
|
247
|
#ifdef FWRETRACT
|
220
|
248
|
SERIAL_ECHO_START;
|
221
|
249
|
SERIAL_ECHOLNPGM("Retract: S=Length (mm) F:Speed (mm/m) Z: ZLift (mm)");
|
|
@@ -244,7 +272,7 @@ SERIAL_ECHOLNPGM("Scaling factors:");
|
244
|
272
|
SERIAL_ECHO_START;
|
245
|
273
|
SERIAL_ECHOPAIR(" Swap rec. addl. length (mm): ", retract_recover_length_swap);
|
246
|
274
|
SERIAL_ECHOLN("");
|
247
|
|
-#endif
|
|
275
|
+#endif//EXTRUDERS > 1
|
248
|
276
|
SERIAL_ECHO_START;
|
249
|
277
|
if (volumetric_enabled) {
|
250
|
278
|
SERIAL_ECHOLNPGM("Filament settings:");
|
|
@@ -259,14 +287,14 @@ SERIAL_ECHOLNPGM("Scaling factors:");
|
259
|
287
|
SERIAL_ECHO_START;
|
260
|
288
|
SERIAL_ECHOPAIR(" M200 T2 D", filament_size[2]);
|
261
|
289
|
SERIAL_ECHOLN("");
|
262
|
|
-#endif
|
263
|
|
-#endif
|
|
290
|
+#endif//EXTRUDERS > 2
|
|
291
|
+#endif//EXTRUDERS > 1
|
264
|
292
|
} else {
|
265
|
293
|
SERIAL_ECHOLNPGM("Filament settings: Disabled");
|
266
|
294
|
}
|
267
|
|
-#endif
|
|
295
|
+#endif//FWRETRACT
|
268
|
296
|
}
|
269
|
|
-#endif
|
|
297
|
+#endif//DISABLE_M503
|
270
|
298
|
|
271
|
299
|
|
272
|
300
|
#ifdef EEPROM_SETTINGS
|
|
@@ -301,11 +329,11 @@ void Config_RetrieveSettings()
|
301
|
329
|
EEPROM_READ_VAR(i,delta_radius);
|
302
|
330
|
EEPROM_READ_VAR(i,delta_diagonal_rod);
|
303
|
331
|
EEPROM_READ_VAR(i,delta_segments_per_second);
|
304
|
|
- #endif
|
|
332
|
+ #endif//DELTA
|
305
|
333
|
#ifndef ULTIPANEL
|
306
|
334
|
int plaPreheatHotendTemp, plaPreheatHPBTemp, plaPreheatFanSpeed;
|
307
|
335
|
int absPreheatHotendTemp, absPreheatHPBTemp, absPreheatFanSpeed;
|
308
|
|
- #endif
|
|
336
|
+ #endif//ULTIPANEL
|
309
|
337
|
EEPROM_READ_VAR(i,plaPreheatHotendTemp);
|
310
|
338
|
EEPROM_READ_VAR(i,plaPreheatHPBTemp);
|
311
|
339
|
EEPROM_READ_VAR(i,plaPreheatFanSpeed);
|
|
@@ -313,35 +341,68 @@ void Config_RetrieveSettings()
|
313
|
341
|
EEPROM_READ_VAR(i,absPreheatHPBTemp);
|
314
|
342
|
EEPROM_READ_VAR(i,absPreheatFanSpeed);
|
315
|
343
|
EEPROM_READ_VAR(i,zprobe_zoffset);
|
316
|
|
- #ifndef PIDTEMP
|
317
|
|
- float Kp,Ki,Kd;
|
318
|
|
- #endif
|
319
|
|
- // do not need to scale PID values as the values in EEPROM are already scaled
|
320
|
|
- EEPROM_READ_VAR(i,Kp);
|
321
|
|
- EEPROM_READ_VAR(i,Ki);
|
322
|
|
- EEPROM_READ_VAR(i,Kd);
|
|
344
|
+ #ifdef PIDTEMP
|
|
345
|
+ float dummy = 0.0f;
|
|
346
|
+ for (int e = 0; e < 3; e++) // 3 = max extruders supported by marlin
|
|
347
|
+ {
|
|
348
|
+ if (e < EXTRUDERS)
|
|
349
|
+ {
|
|
350
|
+ // do not need to scale PID values as the values in EEPROM are already scaled
|
|
351
|
+ EEPROM_READ_VAR(i,Kp[e]);
|
|
352
|
+ EEPROM_READ_VAR(i,Ki[e]);
|
|
353
|
+ EEPROM_READ_VAR(i,Kd[e]);
|
|
354
|
+#ifdef PID_ADD_EXTRUSION_RATE
|
|
355
|
+ EEPROM_READ_VAR(i,Kc[e]);
|
|
356
|
+#else//PID_ADD_EXTRUSION_RATE
|
|
357
|
+ EEPROM_READ_VAR(i,dummy);
|
|
358
|
+#endif//PID_ADD_EXTRUSION_RATE
|
|
359
|
+ }
|
|
360
|
+ else
|
|
361
|
+ {
|
|
362
|
+ EEPROM_READ_VAR(i,dummy);
|
|
363
|
+ EEPROM_READ_VAR(i,dummy);
|
|
364
|
+ EEPROM_READ_VAR(i,dummy);
|
|
365
|
+ EEPROM_READ_VAR(i,dummy);
|
|
366
|
+ }
|
|
367
|
+ }
|
|
368
|
+ #else//PIDTEMP
|
|
369
|
+ // 4 x 3 = 12 slots for PID parameters
|
|
370
|
+ float dummy = 0.0f;
|
|
371
|
+ EEPROM_READ_VAR(i,dummy);
|
|
372
|
+ EEPROM_READ_VAR(i,dummy);
|
|
373
|
+ EEPROM_READ_VAR(i,dummy);
|
|
374
|
+ EEPROM_READ_VAR(i,dummy);
|
|
375
|
+ EEPROM_READ_VAR(i,dummy);
|
|
376
|
+ EEPROM_READ_VAR(i,dummy);
|
|
377
|
+ EEPROM_READ_VAR(i,dummy);
|
|
378
|
+ EEPROM_READ_VAR(i,dummy);
|
|
379
|
+ EEPROM_READ_VAR(i,dummy);
|
|
380
|
+ EEPROM_READ_VAR(i,dummy);
|
|
381
|
+ EEPROM_READ_VAR(i,dummy);
|
|
382
|
+ EEPROM_READ_VAR(i,dummy);
|
|
383
|
+ #endif//PIDTEMP
|
323
|
384
|
#ifndef DOGLCD
|
324
|
385
|
int lcd_contrast;
|
325
|
|
- #endif
|
|
386
|
+ #endif//DOGLCD
|
326
|
387
|
EEPROM_READ_VAR(i,lcd_contrast);
|
327
|
388
|
#ifdef SCARA
|
328
|
389
|
EEPROM_READ_VAR(i,axis_scaling);
|
329
|
|
- #endif
|
|
390
|
+ #endif//SCARA
|
330
|
391
|
|
331
|
392
|
#ifdef FWRETRACT
|
332
|
393
|
EEPROM_READ_VAR(i,autoretract_enabled);
|
333
|
394
|
EEPROM_READ_VAR(i,retract_length);
|
334
|
395
|
#if EXTRUDERS > 1
|
335
|
396
|
EEPROM_READ_VAR(i,retract_length_swap);
|
336
|
|
- #endif
|
|
397
|
+ #endif//EXTRUDERS > 1
|
337
|
398
|
EEPROM_READ_VAR(i,retract_feedrate);
|
338
|
399
|
EEPROM_READ_VAR(i,retract_zlift);
|
339
|
400
|
EEPROM_READ_VAR(i,retract_recover_length);
|
340
|
401
|
#if EXTRUDERS > 1
|
341
|
402
|
EEPROM_READ_VAR(i,retract_recover_length_swap);
|
342
|
|
- #endif
|
|
403
|
+ #endif//EXTRUDERS > 1
|
343
|
404
|
EEPROM_READ_VAR(i,retract_recover_feedrate);
|
344
|
|
- #endif
|
|
405
|
+ #endif//FWRETRACT
|
345
|
406
|
|
346
|
407
|
EEPROM_READ_VAR(i, volumetric_enabled);
|
347
|
408
|
EEPROM_READ_VAR(i, filament_size[0]);
|
|
@@ -349,8 +410,8 @@ void Config_RetrieveSettings()
|
349
|
410
|
EEPROM_READ_VAR(i, filament_size[1]);
|
350
|
411
|
#if EXTRUDERS > 2
|
351
|
412
|
EEPROM_READ_VAR(i, filament_size[2]);
|
352
|
|
-#endif
|
353
|
|
-#endif
|
|
413
|
+#endif//EXTRUDERS > 2
|
|
414
|
+#endif//EXTRUDERS > 1
|
354
|
415
|
calculate_volumetric_multipliers();
|
355
|
416
|
// Call updatePID (similar to when we have processed M301)
|
356
|
417
|
updatePID();
|
|
@@ -363,9 +424,9 @@ void Config_RetrieveSettings()
|
363
|
424
|
}
|
364
|
425
|
#ifdef EEPROM_CHITCHAT
|
365
|
426
|
Config_PrintSettings();
|
366
|
|
- #endif
|
|
427
|
+ #endif//EEPROM_CHITCHAT
|
367
|
428
|
}
|
368
|
|
-#endif
|
|
429
|
+#endif//EEPROM_SETTINGS
|
369
|
430
|
|
370
|
431
|
void Config_ResetDefault()
|
371
|
432
|
{
|
|
@@ -379,7 +440,7 @@ void Config_ResetDefault()
|
379
|
440
|
max_acceleration_units_per_sq_second[i]=tmp3[i];
|
380
|
441
|
#ifdef SCARA
|
381
|
442
|
axis_scaling[i]=1;
|
382
|
|
- #endif
|
|
443
|
+ #endif//SCARA
|
383
|
444
|
}
|
384
|
445
|
|
385
|
446
|
// steps per sq second need to be updated to agree with the units per sq second
|
|
@@ -400,7 +461,7 @@ void Config_ResetDefault()
|
400
|
461
|
delta_diagonal_rod= DELTA_DIAGONAL_ROD;
|
401
|
462
|
delta_segments_per_second= DELTA_SEGMENTS_PER_SECOND;
|
402
|
463
|
recalc_delta_settings(delta_radius, delta_diagonal_rod);
|
403
|
|
-#endif
|
|
464
|
+#endif//DELTA
|
404
|
465
|
#ifdef ULTIPANEL
|
405
|
466
|
plaPreheatHotendTemp = PLA_PREHEAT_HOTEND_TEMP;
|
406
|
467
|
plaPreheatHPBTemp = PLA_PREHEAT_HPB_TEMP;
|
|
@@ -408,24 +469,25 @@ void Config_ResetDefault()
|
408
|
469
|
absPreheatHotendTemp = ABS_PREHEAT_HOTEND_TEMP;
|
409
|
470
|
absPreheatHPBTemp = ABS_PREHEAT_HPB_TEMP;
|
410
|
471
|
absPreheatFanSpeed = ABS_PREHEAT_FAN_SPEED;
|
411
|
|
-#endif
|
|
472
|
+#endif//ULTIPANEL
|
412
|
473
|
#ifdef ENABLE_AUTO_BED_LEVELING
|
413
|
474
|
zprobe_zoffset = -Z_PROBE_OFFSET_FROM_EXTRUDER;
|
414
|
|
-#endif
|
|
475
|
+#endif//ENABLE_AUTO_BED_LEVELING
|
415
|
476
|
#ifdef DOGLCD
|
416
|
477
|
lcd_contrast = DEFAULT_LCD_CONTRAST;
|
417
|
|
-#endif
|
|
478
|
+#endif//DOGLCD
|
418
|
479
|
#ifdef PIDTEMP
|
419
|
|
- Kp = DEFAULT_Kp;
|
420
|
|
- Ki = scalePID_i(DEFAULT_Ki);
|
421
|
|
- Kd = scalePID_d(DEFAULT_Kd);
|
422
|
|
-
|
423
|
|
- // call updatePID (similar to when we have processed M301)
|
424
|
|
- updatePID();
|
425
|
|
-
|
|
480
|
+ for (int e = 0; e < EXTRUDERS; e++)
|
|
481
|
+ {
|
|
482
|
+ Kp[e] = DEFAULT_Kp;
|
|
483
|
+ Ki[e] = scalePID_i(DEFAULT_Ki);
|
|
484
|
+ Kd[e] = scalePID_d(DEFAULT_Kd);
|
426
|
485
|
#ifdef PID_ADD_EXTRUSION_RATE
|
427
|
|
- Kc = DEFAULT_Kc;
|
|
486
|
+ Kc[e] = DEFAULT_Kc;
|
428
|
487
|
#endif//PID_ADD_EXTRUSION_RATE
|
|
488
|
+ }
|
|
489
|
+ // call updatePID (similar to when we have processed M301)
|
|
490
|
+ updatePID();
|
429
|
491
|
#endif//PIDTEMP
|
430
|
492
|
|
431
|
493
|
#ifdef FWRETRACT
|
|
@@ -433,15 +495,15 @@ void Config_ResetDefault()
|
433
|
495
|
retract_length = RETRACT_LENGTH;
|
434
|
496
|
#if EXTRUDERS > 1
|
435
|
497
|
retract_length_swap = RETRACT_LENGTH_SWAP;
|
436
|
|
-#endif
|
|
498
|
+#endif//EXTRUDERS > 1
|
437
|
499
|
retract_feedrate = RETRACT_FEEDRATE;
|
438
|
500
|
retract_zlift = RETRACT_ZLIFT;
|
439
|
501
|
retract_recover_length = RETRACT_RECOVER_LENGTH;
|
440
|
502
|
#if EXTRUDERS > 1
|
441
|
503
|
retract_recover_length_swap = RETRACT_RECOVER_LENGTH_SWAP;
|
442
|
|
-#endif
|
|
504
|
+#endif//EXTRUDERS > 1
|
443
|
505
|
retract_recover_feedrate = RETRACT_RECOVER_FEEDRATE;
|
444
|
|
-#endif
|
|
506
|
+#endif//FWRETRACT
|
445
|
507
|
|
446
|
508
|
volumetric_enabled = false;
|
447
|
509
|
filament_size[0] = DEFAULT_NOMINAL_FILAMENT_DIA;
|
|
@@ -449,11 +511,11 @@ void Config_ResetDefault()
|
449
|
511
|
filament_size[1] = DEFAULT_NOMINAL_FILAMENT_DIA;
|
450
|
512
|
#if EXTRUDERS > 2
|
451
|
513
|
filament_size[2] = DEFAULT_NOMINAL_FILAMENT_DIA;
|
452
|
|
-#endif
|
453
|
|
-#endif
|
|
514
|
+#endif//EXTRUDERS > 2
|
|
515
|
+#endif//EXTRUDERS > 1
|
454
|
516
|
calculate_volumetric_multipliers();
|
455
|
517
|
|
456
|
518
|
SERIAL_ECHO_START;
|
457
|
519
|
SERIAL_ECHOLNPGM("Hardcoded Default Settings Loaded");
|
458
|
520
|
|
459
|
|
-}
|
|
521
|
+}
|