Browse Source

Fix the EEPROM storage, no longer inline it at multiple locations, and remove the template.

daid303 12 years ago
parent
commit
12a4d60e18
4 changed files with 36 additions and 244 deletions
  1. 24
    0
      Marlin/ConfigurationStore.h
  2. 0
    232
      Marlin/EEPROMwrite.h
  3. 6
    6
      Marlin/Marlin_main.cpp
  4. 6
    6
      Marlin/ultralcd.cpp

+ 24
- 0
Marlin/ConfigurationStore.h View File

1
+#ifndef CONFIG_STORE_H
2
+#define CONFIG_STORE_H
3
+
4
+#include "Configuration.h"
5
+
6
+#ifdef EEPROM_SETTINGS
7
+void Config_StoreSettings();
8
+void Config_RetrieveSettings();
9
+#else
10
+FORCE_INLINE void Config_StoreSettings() {}
11
+FORCE_INLINE void Config_RetrieveSettings() {}
12
+#endif
13
+
14
+#ifdef EEPROM_CHITCHAT
15
+void Config_PrintSettings();
16
+#else
17
+FORCE_INLINE void Config_PrintSettings() {}
18
+#endif
19
+
20
+void Config_ResetDefault();
21
+
22
+#endif
23
+
24
+

+ 0
- 232
Marlin/EEPROMwrite.h View File

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

+ 6
- 6
Marlin/Marlin_main.cpp View File

36
 #include "motion_control.h"
36
 #include "motion_control.h"
37
 #include "cardreader.h"
37
 #include "cardreader.h"
38
 #include "watchdog.h"
38
 #include "watchdog.h"
39
-#include "EEPROMwrite.h"
39
+#include "ConfigurationStore.h"
40
 #include "language.h"
40
 #include "language.h"
41
 #include "pins_arduino.h"
41
 #include "pins_arduino.h"
42
 
42
 
322
     fromsd[i] = false;
322
     fromsd[i] = false;
323
   }
323
   }
324
   
324
   
325
-  EEPROM_RetrieveSettings(); // loads data from EEPROM if available
325
+  Config_RetrieveSettings(); // loads data from EEPROM if available
326
 
326
 
327
   for(int8_t i=0; i < NUM_AXIS; i++)
327
   for(int8_t i=0; i < NUM_AXIS; i++)
328
   {
328
   {
1457
     break;
1457
     break;
1458
     case 500: // Store settings in EEPROM
1458
     case 500: // Store settings in EEPROM
1459
     {
1459
     {
1460
-        EEPROM_StoreSettings();
1460
+        Config_StoreSettings();
1461
     }
1461
     }
1462
     break;
1462
     break;
1463
     case 501: // Read settings from EEPROM
1463
     case 501: // Read settings from EEPROM
1464
     {
1464
     {
1465
-      EEPROM_RetrieveSettings();
1465
+        Config_RetrieveSettings();
1466
     }
1466
     }
1467
     break;
1467
     break;
1468
     case 502: // Revert to default settings
1468
     case 502: // Revert to default settings
1469
     {
1469
     {
1470
-      EEPROM_RetrieveSettings(true);
1470
+        Config_ResetDefault();
1471
     }
1471
     }
1472
     break;
1472
     break;
1473
     case 503: // print settings currently in memory
1473
     case 503: // print settings currently in memory
1474
     {
1474
     {
1475
-      EEPROM_printSettings();
1475
+        Config_PrintSettings();
1476
     }
1476
     }
1477
     break;
1477
     break;
1478
     case 999: // Restart after being stopped
1478
     case 999: // Restart after being stopped

+ 6
- 6
Marlin/ultralcd.cpp View File

5
 #include "Marlin.h"
5
 #include "Marlin.h"
6
 #include "language.h"
6
 #include "language.h"
7
 #include "temperature.h"
7
 #include "temperature.h"
8
-#include "EEPROMwrite.h"
8
+#include "ConfigurationStore.h"
9
 
9
 
10
 //===========================================================================
10
 //===========================================================================
11
 //=============================imported variables============================
11
 //=============================imported variables============================
2220
         //enquecommand("M84");
2220
         //enquecommand("M84");
2221
         beepshort();
2221
         beepshort();
2222
         BLOCK;
2222
         BLOCK;
2223
-        EEPROM_StoreSettings();
2223
+        Config_StoreSettings();
2224
       }
2224
       }
2225
     }break;
2225
     }break;
2226
     case ItemC_load:
2226
     case ItemC_load:
2234
         //enquecommand("M84");
2234
         //enquecommand("M84");
2235
         beepshort();
2235
         beepshort();
2236
         BLOCK;
2236
         BLOCK;
2237
-        EEPROM_RetrieveSettings();
2237
+        Config_RetrieveSettings();
2238
       }
2238
       }
2239
     }break;
2239
     }break;
2240
     case ItemC_failsafe:
2240
     case ItemC_failsafe:
2248
         //enquecommand("M84");
2248
         //enquecommand("M84");
2249
         beepshort();
2249
         beepshort();
2250
         BLOCK;
2250
         BLOCK;
2251
-        EEPROM_RetrieveSettings(true);
2251
+        Config_ResetDefault();
2252
       }
2252
       }
2253
     }break;
2253
     }break;
2254
     default:   
2254
     default:   
2785
         //enquecommand("M84");
2785
         //enquecommand("M84");
2786
         beepshort();
2786
         beepshort();
2787
         BLOCK;
2787
         BLOCK;
2788
-        EEPROM_StoreSettings();
2788
+        Config_StoreSettings();
2789
       }
2789
       }
2790
     }break;
2790
     }break;
2791
       default:   
2791
       default:   
2931
         //enquecommand("M84");
2931
         //enquecommand("M84");
2932
         beepshort();
2932
         beepshort();
2933
         BLOCK;
2933
         BLOCK;
2934
-        EEPROM_StoreSettings();
2934
+        Config_StoreSettings();
2935
       }
2935
       }
2936
     }break;
2936
     }break;
2937
       default:   
2937
       default:   

Loading…
Cancel
Save