|
@@ -3,26 +3,26 @@
|
3
|
3
|
#include "temperature.h"
|
4
|
4
|
#include "ultralcd.h"
|
5
|
5
|
#include "ConfigurationStore.h"
|
6
|
|
-
|
7
|
|
-void _EEPROM_writeData(int &pos, uint8_t* value, uint8_t size)
|
8
|
|
-{
|
9
|
|
- do
|
10
|
|
- {
|
11
|
|
- eeprom_write_byte((unsigned char*)pos, *value);
|
12
|
|
- pos++;
|
13
|
|
- value++;
|
|
6
|
+
|
|
7
|
+void _EEPROM_writeData(int &pos, uint8_t* value, uint8_t size)
|
|
8
|
+{
|
|
9
|
+ do
|
|
10
|
+ {
|
|
11
|
+ eeprom_write_byte((unsigned char*)pos, *value);
|
|
12
|
+ pos++;
|
|
13
|
+ value++;
|
14
|
14
|
}while(--size);
|
15
|
|
-}
|
|
15
|
+}
|
16
|
16
|
#define EEPROM_WRITE_VAR(pos, value) _EEPROM_writeData(pos, (uint8_t*)&value, sizeof(value))
|
17
|
|
-void _EEPROM_readData(int &pos, uint8_t* value, uint8_t size)
|
18
|
|
-{
|
19
|
|
- do
|
20
|
|
- {
|
21
|
|
- *value = eeprom_read_byte((unsigned char*)pos);
|
22
|
|
- pos++;
|
23
|
|
- value++;
|
|
17
|
+void _EEPROM_readData(int &pos, uint8_t* value, uint8_t size)
|
|
18
|
+{
|
|
19
|
+ do
|
|
20
|
+ {
|
|
21
|
+ *value = eeprom_read_byte((unsigned char*)pos);
|
|
22
|
+ pos++;
|
|
23
|
+ value++;
|
24
|
24
|
}while(--size);
|
25
|
|
-}
|
|
25
|
+}
|
26
|
26
|
#define EEPROM_READ_VAR(pos, value) _EEPROM_readData(pos, (uint8_t*)&value, sizeof(value))
|
27
|
27
|
//======================================================================================
|
28
|
28
|
|
|
@@ -43,7 +43,7 @@ void _EEPROM_readData(int &pos, uint8_t* value, uint8_t size)
|
43
|
43
|
void Config_StoreSettings()
|
44
|
44
|
{
|
45
|
45
|
char ver[4]= "000";
|
46
|
|
- int i=EEPROM_OFFSET;
|
|
46
|
+ int i=EEPROM_OFFSET;
|
47
|
47
|
EEPROM_WRITE_VAR(i,ver); // invalidate data first
|
48
|
48
|
EEPROM_WRITE_VAR(i,axis_steps_per_unit);
|
49
|
49
|
EEPROM_WRITE_VAR(i,max_feedrate);
|
|
@@ -58,8 +58,8 @@ void Config_StoreSettings()
|
58
|
58
|
EEPROM_WRITE_VAR(i,max_e_jerk);
|
59
|
59
|
EEPROM_WRITE_VAR(i,add_homeing);
|
60
|
60
|
#ifndef ULTIPANEL
|
61
|
|
- int plaPreheatHotendTemp = PLA_PREHEAT_HOTEND_TEMP, plaPreheatHPBTemp = PLA_PREHEAT_HPB_TEMP, plaPreheatFanSpeed = PLA_PREHEAT_FAN_SPEED;
|
62
|
|
- int absPreheatHotendTemp = ABS_PREHEAT_HOTEND_TEMP, absPreheatHPBTemp = ABS_PREHEAT_HPB_TEMP, absPreheatFanSpeed = ABS_PREHEAT_FAN_SPEED;
|
|
61
|
+ int plaPreheatHotendTemp = PLA_PREHEAT_HOTEND_TEMP, plaPreheatHPBTemp = PLA_PREHEAT_HPB_TEMP, plaPreheatFanSpeed = PLA_PREHEAT_FAN_SPEED;
|
|
62
|
+ int absPreheatHotendTemp = ABS_PREHEAT_HOTEND_TEMP, absPreheatHPBTemp = ABS_PREHEAT_HPB_TEMP, absPreheatFanSpeed = ABS_PREHEAT_FAN_SPEED;
|
63
|
63
|
#endif
|
64
|
64
|
EEPROM_WRITE_VAR(i,plaPreheatHotendTemp);
|
65
|
65
|
EEPROM_WRITE_VAR(i,plaPreheatHPBTemp);
|
|
@@ -75,7 +75,7 @@ void Config_StoreSettings()
|
75
|
75
|
EEPROM_WRITE_VAR(i,3000);
|
76
|
76
|
EEPROM_WRITE_VAR(i,0);
|
77
|
77
|
EEPROM_WRITE_VAR(i,0);
|
78
|
|
- #endif
|
|
78
|
+ #endif
|
79
|
79
|
char ver2[4]=EEPROM_VERSION;
|
80
|
80
|
i=EEPROM_OFFSET;
|
81
|
81
|
EEPROM_WRITE_VAR(i,ver2); // validate data
|
|
@@ -105,7 +105,7 @@ void Config_PrintSettings()
|
105
|
105
|
SERIAL_ECHOPAIR(" Z", max_feedrate[2] );
|
106
|
106
|
SERIAL_ECHOPAIR(" E", max_feedrate[3]);
|
107
|
107
|
SERIAL_ECHOLN("");
|
108
|
|
-
|
|
108
|
+
|
109
|
109
|
SERIAL_ECHO_START;
|
110
|
110
|
SERIAL_ECHOLNPGM("Maximum Acceleration (mm/s2):");
|
111
|
111
|
SERIAL_ECHO_START;
|
|
@@ -120,7 +120,7 @@ void Config_PrintSettings()
|
120
|
120
|
SERIAL_ECHOPAIR(" M204 S",acceleration );
|
121
|
121
|
SERIAL_ECHOPAIR(" T" ,retract_acceleration);
|
122
|
122
|
SERIAL_ECHOLN("");
|
123
|
|
-
|
|
123
|
+
|
124
|
124
|
SERIAL_ECHO_START;
|
125
|
125
|
SERIAL_ECHOLNPGM("Advanced variables: S=Min feedrate (mm/s), T=Min travel feedrate (mm/s), B=minimum segment time (ms), X=maximum xY jerk (mm/s), Z=maximum Z jerk (mm/s)");
|
126
|
126
|
SERIAL_ECHO_START;
|
|
@@ -131,7 +131,7 @@ void Config_PrintSettings()
|
131
|
131
|
SERIAL_ECHOPAIR(" Z" ,max_z_jerk);
|
132
|
132
|
SERIAL_ECHOPAIR(" E" ,max_e_jerk);
|
133
|
133
|
SERIAL_ECHOLN("");
|
134
|
|
-
|
|
134
|
+
|
135
|
135
|
SERIAL_ECHO_START;
|
136
|
136
|
SERIAL_ECHOLNPGM("Home offset (mm):");
|
137
|
137
|
SERIAL_ECHO_START;
|
|
@@ -143,11 +143,25 @@ void Config_PrintSettings()
|
143
|
143
|
SERIAL_ECHO_START;
|
144
|
144
|
SERIAL_ECHOLNPGM("PID settings:");
|
145
|
145
|
SERIAL_ECHO_START;
|
146
|
|
- SERIAL_ECHOPAIR(" M301 P",Kp);
|
147
|
|
- SERIAL_ECHOPAIR(" I" ,Ki/PID_dT);
|
148
|
|
- SERIAL_ECHOPAIR(" D" ,Kd*PID_dT);
|
|
146
|
+ SERIAL_ECHOPAIR(" M301 P",Kp[0]);
|
|
147
|
+ SERIAL_ECHOPAIR(" I" ,Ki[0]/PID_dT);
|
|
148
|
+ SERIAL_ECHOPAIR(" D" ,Kd[0]*PID_dT);
|
|
149
|
+ SERIAL_ECHOLN("");
|
|
150
|
+#if EXTRUDERS > 1
|
|
151
|
+ SERIAL_ECHOPAIR(" M301 P",Kp[1]);
|
|
152
|
+ SERIAL_ECHOPAIR(" I" ,Ki[1]/PID_dT);
|
|
153
|
+ SERIAL_ECHOPAIR(" D" ,Kd[1]*PID_dT);
|
|
154
|
+ SERIAL_ECHOPGM(" T1");
|
|
155
|
+ SERIAL_ECHOLN("");
|
|
156
|
+#endif
|
|
157
|
+#if EXTRUDERS > 2
|
|
158
|
+ SERIAL_ECHOPAIR(" M301 P",Kp[2]);
|
|
159
|
+ SERIAL_ECHOPAIR(" I" ,Ki[2]/PID_dT);
|
|
160
|
+ SERIAL_ECHOPAIR(" D" ,Kd[2]*PID_dT);
|
|
161
|
+ SERIAL_ECHOPGM(" T2");
|
149
|
162
|
SERIAL_ECHOLN("");
|
150
|
163
|
#endif
|
|
164
|
+#endif
|
151
|
165
|
}
|
152
|
166
|
#endif
|
153
|
167
|
|
|
@@ -161,7 +175,7 @@ void Config_RetrieveSettings()
|
161
|
175
|
EEPROM_READ_VAR(i,stored_ver); //read stored version
|
162
|
176
|
// SERIAL_ECHOLN("Version: [" << ver << "] Stored version: [" << stored_ver << "]");
|
163
|
177
|
if (strncmp(ver,stored_ver,3) == 0)
|
164
|
|
- {
|
|
178
|
+ {
|
165
|
179
|
// version number match
|
166
|
180
|
EEPROM_READ_VAR(i,axis_steps_per_unit);
|
167
|
181
|
EEPROM_READ_VAR(i,max_feedrate);
|
|
@@ -176,15 +190,15 @@ void Config_RetrieveSettings()
|
176
|
190
|
EEPROM_READ_VAR(i,max_e_jerk);
|
177
|
191
|
EEPROM_READ_VAR(i,add_homeing);
|
178
|
192
|
#ifndef ULTIPANEL
|
179
|
|
- int plaPreheatHotendTemp, plaPreheatHPBTemp, plaPreheatFanSpeed;
|
180
|
|
- int absPreheatHotendTemp, absPreheatHPBTemp, absPreheatFanSpeed;
|
|
193
|
+ int plaPreheatHotendTemp, plaPreheatHPBTemp, plaPreheatFanSpeed;
|
|
194
|
+ int absPreheatHotendTemp, absPreheatHPBTemp, absPreheatFanSpeed;
|
181
|
195
|
#endif
|
182
|
196
|
EEPROM_READ_VAR(i,plaPreheatHotendTemp);
|
183
|
197
|
EEPROM_READ_VAR(i,plaPreheatHPBTemp);
|
184
|
198
|
EEPROM_READ_VAR(i,plaPreheatFanSpeed);
|
185
|
199
|
EEPROM_READ_VAR(i,absPreheatHotendTemp);
|
186
|
200
|
EEPROM_READ_VAR(i,absPreheatHPBTemp);
|
187
|
|
- EEPROM_READ_VAR(i,absPreheatFanSpeed);
|
|
201
|
+ EEPROM_READ_VAR(i,absPreheatFanSpeed);
|
188
|
202
|
#ifndef PIDTEMP
|
189
|
203
|
float Kp,Ki,Kd;
|
190
|
204
|
#endif
|
|
@@ -195,17 +209,17 @@ void Config_RetrieveSettings()
|
195
|
209
|
SERIAL_ECHO_START;
|
196
|
210
|
SERIAL_ECHOLNPGM("Stored settings retreived:");
|
197
|
211
|
}
|
198
|
|
- else
|
199
|
|
- {
|
200
|
|
- Config_ResetDefault();
|
201
|
|
- SERIAL_ECHO_START;
|
202
|
|
- SERIAL_ECHOLN("Using Default settings:");
|
203
|
|
- }
|
|
212
|
+ else
|
|
213
|
+ {
|
|
214
|
+ Config_ResetDefault();
|
|
215
|
+ SERIAL_ECHO_START;
|
|
216
|
+ SERIAL_ECHOLN("Using Default settings:");
|
|
217
|
+ }
|
204
|
218
|
Config_PrintSettings();
|
205
|
219
|
}
|
206
|
|
-#endif
|
207
|
|
-
|
208
|
|
-void Config_ResetDefault()
|
|
220
|
+#endif
|
|
221
|
+
|
|
222
|
+void Config_ResetDefault()
|
209
|
223
|
{
|
210
|
224
|
float tmp1[]=DEFAULT_AXIS_STEPS_PER_UNIT;
|
211
|
225
|
float tmp2[]=DEFAULT_MAX_FEEDRATE;
|
|
@@ -234,9 +248,19 @@ void Config_ResetDefault()
|
234
|
248
|
absPreheatFanSpeed = ABS_PREHEAT_FAN_SPEED;
|
235
|
249
|
#endif
|
236
|
250
|
#ifdef PIDTEMP
|
237
|
|
- Kp = DEFAULT_Kp;
|
238
|
|
- Ki = (DEFAULT_Ki*PID_dT);
|
239
|
|
- Kd = (DEFAULT_Kd/PID_dT);
|
|
251
|
+ Kp[0] = DEFAULT_Kp;
|
|
252
|
+ Ki[0] = (DEFAULT_Ki*PID_dT);
|
|
253
|
+ Kd[0] = (DEFAULT_Kd/PID_dT);
|
|
254
|
+ #if EXTRUDERS > 1
|
|
255
|
+ Kp[1] = DEFAULT_Kp_E1;
|
|
256
|
+ Ki[1] = (DEFAULT_Ki_E1*PID_dT);
|
|
257
|
+ Kd[1] = (DEFAULT_Kd_E1/PID_dT);
|
|
258
|
+ #endif
|
|
259
|
+ #if EXTRUDERS > 2
|
|
260
|
+ Kp[2] = DEFAULT_Kp_E2;
|
|
261
|
+ Ki[2] = (DEFAULT_Ki_E2*PID_dT);
|
|
262
|
+ Kd[2] = (DEFAULT_Kd_E2/PID_dT);
|
|
263
|
+ #endif
|
240
|
264
|
#ifdef PID_ADD_EXTRUSION_RATE
|
241
|
265
|
Kc = DEFAULT_Kc;
|
242
|
266
|
#endif//PID_ADD_EXTRUSION_RATE
|