Explorar el Código

God damn. Sorry, my mistake, forgot to add this file.

daid303 hace 12 años
padre
commit
04be9d6001
Se han modificado 1 ficheros con 236 adiciones y 0 borrados
  1. 236
    0
      Marlin/ConfigurationStore.cpp

+ 236
- 0
Marlin/ConfigurationStore.cpp Ver fichero

@@ -0,0 +1,236 @@
1
+#include "Marlin.h"
2
+#include "planner.h"
3
+#include "temperature.h"
4
+#include "ultralcd.h"
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++;
14
+    }while(--size);
15
+}
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++;
24
+    }while(--size);
25
+}
26
+#define EEPROM_READ_VAR(pos, value) _EEPROM_readData(pos, (uint8_t*)&value, sizeof(value))
27
+//======================================================================================
28
+
29
+
30
+
31
+
32
+#define EEPROM_OFFSET 100
33
+
34
+
35
+// IMPORTANT:  Whenever there are changes made to the variables stored in EEPROM
36
+// in the functions below, also increment the version number. This makes sure that
37
+// the default values are used whenever there is a change to the data, to prevent
38
+// wrong data being written to the variables.
39
+// ALSO:  always make sure the variables in the Store and retrieve sections are in the same order.
40
+#define EEPROM_VERSION "V07"
41
+
42
+#ifdef EEPROM_SETTINGS
43
+void Config_StoreSettings() 
44
+{
45
+  char ver[4]= "000";
46
+  int i=EEPROM_OFFSET;
47
+  EEPROM_WRITE_VAR(i,ver); // invalidate data first 
48
+  EEPROM_WRITE_VAR(i,axis_steps_per_unit);  
49
+  EEPROM_WRITE_VAR(i,max_feedrate);  
50
+  EEPROM_WRITE_VAR(i,max_acceleration_units_per_sq_second);
51
+  EEPROM_WRITE_VAR(i,acceleration);
52
+  EEPROM_WRITE_VAR(i,retract_acceleration);
53
+  EEPROM_WRITE_VAR(i,minimumfeedrate);
54
+  EEPROM_WRITE_VAR(i,mintravelfeedrate);
55
+  EEPROM_WRITE_VAR(i,minsegmenttime);
56
+  EEPROM_WRITE_VAR(i,max_xy_jerk);
57
+  EEPROM_WRITE_VAR(i,max_z_jerk);
58
+  EEPROM_WRITE_VAR(i,max_e_jerk);
59
+  EEPROM_WRITE_VAR(i,add_homeing);
60
+  EEPROM_WRITE_VAR(i,plaPreheatHotendTemp);
61
+  EEPROM_WRITE_VAR(i,plaPreheatHPBTemp);
62
+  EEPROM_WRITE_VAR(i,plaPreheatFanSpeed);
63
+  EEPROM_WRITE_VAR(i,absPreheatHotendTemp);
64
+  EEPROM_WRITE_VAR(i,absPreheatHPBTemp);
65
+  EEPROM_WRITE_VAR(i,absPreheatFanSpeed);
66
+  #ifdef PIDTEMP
67
+    EEPROM_WRITE_VAR(i,Kp);
68
+    EEPROM_WRITE_VAR(i,Ki);
69
+    EEPROM_WRITE_VAR(i,Kd);
70
+  #else
71
+    EEPROM_WRITE_VAR(i,3000);
72
+    EEPROM_WRITE_VAR(i,0);
73
+    EEPROM_WRITE_VAR(i,0);
74
+  #endif
75
+  char ver2[4]=EEPROM_VERSION;
76
+  i=EEPROM_OFFSET;
77
+  EEPROM_WRITE_VAR(i,ver2); // validate data
78
+  SERIAL_ECHO_START;
79
+  SERIAL_ECHOLNPGM("Settings Stored");
80
+}
81
+#endif //EEPROM_SETTINGS
82
+
83
+
84
+#ifdef EEPROM_CHITCHAT
85
+void Config_PrintSettings()
86
+{  // Always have this function, even with EEPROM_SETTINGS disabled, the current values will be shown
87
+    SERIAL_ECHO_START;
88
+    SERIAL_ECHOLNPGM("Steps per unit:");
89
+    SERIAL_ECHO_START;
90
+    SERIAL_ECHOPAIR("  M92 X",axis_steps_per_unit[0]);
91
+    SERIAL_ECHOPAIR(" Y",axis_steps_per_unit[1]);
92
+    SERIAL_ECHOPAIR(" Z",axis_steps_per_unit[2]);
93
+    SERIAL_ECHOPAIR(" E",axis_steps_per_unit[3]);
94
+    SERIAL_ECHOLN("");
95
+      
96
+    SERIAL_ECHO_START;
97
+    SERIAL_ECHOLNPGM("Maximum feedrates (mm/s):");
98
+    SERIAL_ECHO_START;
99
+    SERIAL_ECHOPAIR("  M203 X",max_feedrate[0]);
100
+    SERIAL_ECHOPAIR(" Y",max_feedrate[1] ); 
101
+    SERIAL_ECHOPAIR(" Z", max_feedrate[2] ); 
102
+    SERIAL_ECHOPAIR(" E", max_feedrate[3]);
103
+    SERIAL_ECHOLN("");
104
+
105
+    SERIAL_ECHO_START;
106
+    SERIAL_ECHOLNPGM("Maximum Acceleration (mm/s2):");
107
+    SERIAL_ECHO_START;
108
+    SERIAL_ECHOPAIR("  M201 X" ,max_acceleration_units_per_sq_second[0] ); 
109
+    SERIAL_ECHOPAIR(" Y" , max_acceleration_units_per_sq_second[1] ); 
110
+    SERIAL_ECHOPAIR(" Z" ,max_acceleration_units_per_sq_second[2] );
111
+    SERIAL_ECHOPAIR(" E" ,max_acceleration_units_per_sq_second[3]);
112
+    SERIAL_ECHOLN("");
113
+    SERIAL_ECHO_START;
114
+    SERIAL_ECHOLNPGM("Acceleration: S=acceleration, T=retract acceleration");
115
+    SERIAL_ECHO_START;
116
+    SERIAL_ECHOPAIR("  M204 S",acceleration ); 
117
+    SERIAL_ECHOPAIR(" T" ,retract_acceleration);
118
+    SERIAL_ECHOLN("");
119
+
120
+    SERIAL_ECHO_START;
121
+    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)");
122
+    SERIAL_ECHO_START;
123
+    SERIAL_ECHOPAIR("  M205 S",minimumfeedrate ); 
124
+    SERIAL_ECHOPAIR(" T" ,mintravelfeedrate ); 
125
+    SERIAL_ECHOPAIR(" B" ,minsegmenttime ); 
126
+    SERIAL_ECHOPAIR(" X" ,max_xy_jerk ); 
127
+    SERIAL_ECHOPAIR(" Z" ,max_z_jerk);
128
+    SERIAL_ECHOPAIR(" E" ,max_e_jerk);
129
+    SERIAL_ECHOLN(""); 
130
+
131
+    SERIAL_ECHO_START;
132
+    SERIAL_ECHOLNPGM("Home offset (mm):");
133
+    SERIAL_ECHO_START;
134
+    SERIAL_ECHOPAIR("  M206 X",add_homeing[0] );
135
+    SERIAL_ECHOPAIR(" Y" ,add_homeing[1] );
136
+    SERIAL_ECHOPAIR(" Z" ,add_homeing[2] );
137
+    SERIAL_ECHOLN("");
138
+#ifdef PIDTEMP
139
+    SERIAL_ECHO_START;
140
+    SERIAL_ECHOLNPGM("PID settings:");
141
+    SERIAL_ECHO_START;
142
+    SERIAL_ECHOPAIR("   M301 P",Kp); 
143
+    SERIAL_ECHOPAIR(" I" ,Ki/PID_dT); 
144
+    SERIAL_ECHOPAIR(" D" ,Kd*PID_dT);
145
+    SERIAL_ECHOLN(""); 
146
+#endif
147
+} 
148
+#endif
149
+
150
+
151
+#ifdef EEPROM_SETTINGS
152
+void Config_RetrieveSettings()
153
+{
154
+    int i=EEPROM_OFFSET;
155
+    char stored_ver[4];
156
+    char ver[4]=EEPROM_VERSION;
157
+    EEPROM_READ_VAR(i,stored_ver); //read stored version
158
+    //  SERIAL_ECHOLN("Version: [" << ver << "] Stored version: [" << stored_ver << "]");
159
+    if (strncmp(ver,stored_ver,3) == 0)
160
+    {
161
+        // version number match
162
+        EEPROM_READ_VAR(i,axis_steps_per_unit);  
163
+        EEPROM_READ_VAR(i,max_feedrate);  
164
+        EEPROM_READ_VAR(i,max_acceleration_units_per_sq_second);
165
+        EEPROM_READ_VAR(i,acceleration);
166
+        EEPROM_READ_VAR(i,retract_acceleration);
167
+        EEPROM_READ_VAR(i,minimumfeedrate);
168
+        EEPROM_READ_VAR(i,mintravelfeedrate);
169
+        EEPROM_READ_VAR(i,minsegmenttime);
170
+        EEPROM_READ_VAR(i,max_xy_jerk);
171
+        EEPROM_READ_VAR(i,max_z_jerk);
172
+        EEPROM_READ_VAR(i,max_e_jerk);
173
+        EEPROM_READ_VAR(i,add_homeing);
174
+        EEPROM_READ_VAR(i,plaPreheatHotendTemp);
175
+        EEPROM_READ_VAR(i,plaPreheatHPBTemp);
176
+        EEPROM_READ_VAR(i,plaPreheatFanSpeed);
177
+        EEPROM_READ_VAR(i,absPreheatHotendTemp);
178
+        EEPROM_READ_VAR(i,absPreheatHPBTemp);
179
+        EEPROM_READ_VAR(i,absPreheatFanSpeed);
180
+        #ifndef PIDTEMP
181
+        float Kp,Ki,Kd;
182
+        #endif
183
+        EEPROM_READ_VAR(i,Kp);
184
+        EEPROM_READ_VAR(i,Ki);
185
+        EEPROM_READ_VAR(i,Kd);
186
+
187
+        SERIAL_ECHO_START;
188
+        SERIAL_ECHOLNPGM("Stored settings retreived:");
189
+    }
190
+    else
191
+    {
192
+        Config_ResetDefault();
193
+        SERIAL_ECHO_START;
194
+        SERIAL_ECHOLN("Using Default settings:");
195
+    }
196
+    Config_PrintSettings();
197
+}
198
+#endif
199
+
200
+void Config_ResetDefault()
201
+{
202
+    float tmp1[]=DEFAULT_AXIS_STEPS_PER_UNIT;
203
+    float tmp2[]=DEFAULT_MAX_FEEDRATE;
204
+    long tmp3[]=DEFAULT_MAX_ACCELERATION;
205
+    for (short i=0;i<4;i++) 
206
+    {
207
+        axis_steps_per_unit[i]=tmp1[i];  
208
+        max_feedrate[i]=tmp2[i];  
209
+        max_acceleration_units_per_sq_second[i]=tmp3[i];
210
+    }
211
+    acceleration=DEFAULT_ACCELERATION;
212
+    retract_acceleration=DEFAULT_RETRACT_ACCELERATION;
213
+    minimumfeedrate=DEFAULT_MINIMUMFEEDRATE;
214
+    minsegmenttime=DEFAULT_MINSEGMENTTIME;       
215
+    mintravelfeedrate=DEFAULT_MINTRAVELFEEDRATE;
216
+    max_xy_jerk=DEFAULT_XYJERK;
217
+    max_z_jerk=DEFAULT_ZJERK;
218
+    max_e_jerk=DEFAULT_EJERK;
219
+    add_homeing[0] = add_homeing[1] = add_homeing[2] = 0;
220
+#ifdef ULTIPANEL
221
+    plaPreheatHotendTemp = PLA_PREHEAT_HOTEND_TEMP;
222
+    plaPreheatHPBTemp = PLA_PREHEAT_HPB_TEMP;
223
+    plaPreheatFanSpeed = PLA_PREHEAT_FAN_SPEED;
224
+    absPreheatHotendTemp = ABS_PREHEAT_HOTEND_TEMP;
225
+    absPreheatHPBTemp = ABS_PREHEAT_HPB_TEMP;
226
+    absPreheatFanSpeed = ABS_PREHEAT_FAN_SPEED;
227
+#endif
228
+#ifdef PIDTEMP
229
+    Kp = DEFAULT_Kp;
230
+    Ki = DEFAULT_Ki;
231
+    Kd = DEFAULT_Kp;
232
+#ifdef PID_ADD_EXTRUSION_RATE
233
+    Kc = DEFAULT_Kc;
234
+#endif//PID_ADD_EXTRUSION_RATE
235
+#endif//PIDTEMP
236
+}

Loading…
Cancelar
Guardar