added M503 to display eeprom storage, and renamed eeprom routings. This version is compatible with the qtmarlin eeprom-tab.
This commit is contained in:
		| @@ -39,7 +39,7 @@ template <class T> int EEPROM_readAnything(int &ee, T& value) | ||||
| // ALSO:  always make sure the variables in the Store and retrieve sections are in the same order. | ||||
| #define EEPROM_VERSION "V04"   | ||||
|  | ||||
| FORCE_INLINE void StoreSettings()  | ||||
| inline void EEPROM_StoreSettings()  | ||||
| { | ||||
| #ifdef EEPROM_SETTINGS | ||||
|   char ver[4]= "000"; | ||||
| @@ -72,59 +72,10 @@ FORCE_INLINE void StoreSettings() | ||||
| #endif //EEPROM_SETTINGS | ||||
| } | ||||
|  | ||||
| FORCE_INLINE void RetrieveSettings(bool def=false) | ||||
|  | ||||
| inline void EEPROM_printSettings() | ||||
| {  // if def=true, the default values will be used | ||||
|   #ifdef EEPROM_SETTINGS   | ||||
|     int i=EEPROM_OFFSET; | ||||
|     char stored_ver[4]; | ||||
|     char ver[4]=EEPROM_VERSION; | ||||
|     EEPROM_readAnything(i,stored_ver); //read stored version | ||||
|     //  SERIAL_ECHOLN("Version: [" << ver << "] Stored version: [" << stored_ver << "]"); | ||||
|     if ((!def)&&(strncmp(ver,stored_ver,3)==0))  | ||||
|     {   // version number match | ||||
|       EEPROM_readAnything(i,axis_steps_per_unit);   | ||||
|       EEPROM_readAnything(i,max_feedrate);   | ||||
|       EEPROM_readAnything(i,max_acceleration_units_per_sq_second); | ||||
|       EEPROM_readAnything(i,acceleration); | ||||
|       EEPROM_readAnything(i,retract_acceleration); | ||||
|       EEPROM_readAnything(i,minimumfeedrate); | ||||
|       EEPROM_readAnything(i,mintravelfeedrate); | ||||
|       EEPROM_readAnything(i,minsegmenttime); | ||||
|       EEPROM_readAnything(i,max_xy_jerk); | ||||
|       EEPROM_readAnything(i,max_z_jerk); | ||||
|       #ifndef PIDTEMP | ||||
|         float Kp,Ki,Kd; | ||||
|       #endif | ||||
|       EEPROM_readAnything(i,Kp); | ||||
|       EEPROM_readAnything(i,Ki); | ||||
|       EEPROM_readAnything(i,Kd); | ||||
|  | ||||
|       SERIAL_ECHO_START; | ||||
|       SERIAL_ECHOLNPGM("Stored settings retreived:"); | ||||
|     } | ||||
|     else  | ||||
|   #endif | ||||
|     { | ||||
|       float tmp1[]=DEFAULT_AXIS_STEPS_PER_UNIT; | ||||
|       float tmp2[]=DEFAULT_MAX_FEEDRATE; | ||||
|       long tmp3[]=DEFAULT_MAX_ACCELERATION; | ||||
|       for (short i=0;i<4;i++)  | ||||
|       { | ||||
|         axis_steps_per_unit[i]=tmp1[i];   | ||||
|         max_feedrate[i]=tmp2[i];   | ||||
|         max_acceleration_units_per_sq_second[i]=tmp3[i]; | ||||
|       } | ||||
|       acceleration=DEFAULT_ACCELERATION; | ||||
|       retract_acceleration=DEFAULT_RETRACT_ACCELERATION; | ||||
|       minimumfeedrate=DEFAULT_MINIMUMFEEDRATE; | ||||
|       minsegmenttime=DEFAULT_MINSEGMENTTIME;        | ||||
|       mintravelfeedrate=DEFAULT_MINTRAVELFEEDRATE; | ||||
|       max_xy_jerk=DEFAULT_XYJERK; | ||||
|       max_z_jerk=DEFAULT_ZJERK; | ||||
|       SERIAL_ECHO_START; | ||||
|       SERIAL_ECHOLN("Using Default settings:"); | ||||
|     } | ||||
|   #ifdef EEPROM_CHITCHAT | ||||
|       SERIAL_ECHO_START; | ||||
|       SERIAL_ECHOLNPGM("Steps per unit:"); | ||||
|       SERIAL_ECHO_START; | ||||
| @@ -177,6 +128,64 @@ FORCE_INLINE void RetrieveSettings(bool def=false) | ||||
|   #endif | ||||
| }  | ||||
|  | ||||
|  | ||||
| inline void EEPROM_RetrieveSettings(bool def=false) | ||||
| {  // if def=true, the default values will be used | ||||
|   #ifdef EEPROM_SETTINGS | ||||
|     int i=EEPROM_OFFSET; | ||||
|     char stored_ver[4]; | ||||
|     char ver[4]=EEPROM_VERSION; | ||||
|     EEPROM_readAnything(i,stored_ver); //read stored version | ||||
|     //  SERIAL_ECHOLN("Version: [" << ver << "] Stored version: [" << stored_ver << "]"); | ||||
|     if ((!def)&&(strncmp(ver,stored_ver,3)==0))  | ||||
|     {   // version number match | ||||
|       EEPROM_readAnything(i,axis_steps_per_unit);   | ||||
|       EEPROM_readAnything(i,max_feedrate);   | ||||
|       EEPROM_readAnything(i,max_acceleration_units_per_sq_second); | ||||
|       EEPROM_readAnything(i,acceleration); | ||||
|       EEPROM_readAnything(i,retract_acceleration); | ||||
|       EEPROM_readAnything(i,minimumfeedrate); | ||||
|       EEPROM_readAnything(i,mintravelfeedrate); | ||||
|       EEPROM_readAnything(i,minsegmenttime); | ||||
|       EEPROM_readAnything(i,max_xy_jerk); | ||||
|       EEPROM_readAnything(i,max_z_jerk); | ||||
|       #ifndef PIDTEMP | ||||
|         float Kp,Ki,Kd; | ||||
|       #endif | ||||
|       EEPROM_readAnything(i,Kp); | ||||
|       EEPROM_readAnything(i,Ki); | ||||
|       EEPROM_readAnything(i,Kd); | ||||
|  | ||||
|       SERIAL_ECHO_START; | ||||
|       SERIAL_ECHOLNPGM("Stored settings retreived:"); | ||||
|     } | ||||
|     else  | ||||
|   #endif | ||||
|     { | ||||
|       float tmp1[]=DEFAULT_AXIS_STEPS_PER_UNIT; | ||||
|       float tmp2[]=DEFAULT_MAX_FEEDRATE; | ||||
|       long tmp3[]=DEFAULT_MAX_ACCELERATION; | ||||
|       for (short i=0;i<4;i++)  | ||||
|       { | ||||
|         axis_steps_per_unit[i]=tmp1[i];   | ||||
|         max_feedrate[i]=tmp2[i];   | ||||
|         max_acceleration_units_per_sq_second[i]=tmp3[i]; | ||||
|       } | ||||
|       acceleration=DEFAULT_ACCELERATION; | ||||
|       retract_acceleration=DEFAULT_RETRACT_ACCELERATION; | ||||
|       minimumfeedrate=DEFAULT_MINIMUMFEEDRATE; | ||||
|       minsegmenttime=DEFAULT_MINSEGMENTTIME;        | ||||
|       mintravelfeedrate=DEFAULT_MINTRAVELFEEDRATE; | ||||
|       max_xy_jerk=DEFAULT_XYJERK; | ||||
|       max_z_jerk=DEFAULT_ZJERK; | ||||
|       SERIAL_ECHO_START; | ||||
|       SERIAL_ECHOLN("Using Default settings:"); | ||||
|     } | ||||
|   #ifdef EEPROM_CHITCHAT | ||||
|     EEPROM_printSettings(); | ||||
|   #endif | ||||
| }   | ||||
|  | ||||
| #endif | ||||
|  | ||||
|  | ||||
|   | ||||
| @@ -112,6 +112,7 @@ | ||||
| // M500 - stores paramters in EEPROM | ||||
| // M501 - reads parameters from EEPROM (if you need reset them after you changed them temporarily).   | ||||
| // M502 - reverts to the default "factory settings".  You still need to store them in EEPROM afterwards if you want to. | ||||
| // M503 - print the current settings (from memory not from eeprom) | ||||
|  | ||||
| //Stepper Movement Variables | ||||
|  | ||||
| @@ -236,7 +237,7 @@ void setup() | ||||
|     fromsd[i] = false; | ||||
|   } | ||||
|    | ||||
|   RetrieveSettings(); // loads data from EEPROM if available | ||||
|   EEPROM_RetrieveSettings(); // loads data from EEPROM if available | ||||
|  | ||||
|   for(int8_t i=0; i < NUM_AXIS; i++) | ||||
|   { | ||||
| @@ -1034,17 +1035,22 @@ FORCE_INLINE void process_commands() | ||||
|     break; | ||||
|     case 500: // Store settings in EEPROM | ||||
|     { | ||||
|         StoreSettings(); | ||||
|         EEPROM_StoreSettings(); | ||||
|     } | ||||
|     break; | ||||
|     case 501: // Read settings from EEPROM | ||||
|     { | ||||
|       RetrieveSettings(); | ||||
|       EEPROM_RetrieveSettings(); | ||||
|     } | ||||
|     break; | ||||
|     case 502: // Revert to default settings | ||||
|     { | ||||
|       RetrieveSettings(true); | ||||
|       EEPROM_RetrieveSettings(true); | ||||
|     } | ||||
|     break; | ||||
|     case 503: // print settings currently in memory | ||||
|     { | ||||
|       EEPROM_printSettings(); | ||||
|     } | ||||
|     break; | ||||
|  | ||||
|   | ||||
| @@ -1402,7 +1402,7 @@ void MainMenu::showControl() | ||||
|         //enquecommand("M84"); | ||||
|         beepshort(); | ||||
|         BLOCK; | ||||
|         StoreSettings(); | ||||
|         EEPROM_StoreSettings(); | ||||
|       } | ||||
|     }break; | ||||
|     case ItemC_load: | ||||
| @@ -1416,7 +1416,7 @@ void MainMenu::showControl() | ||||
|         //enquecommand("M84"); | ||||
|         beepshort(); | ||||
|         BLOCK; | ||||
|         RetrieveSettings(); | ||||
|         EEPROM_RetrieveSettings(); | ||||
|       } | ||||
|     }break; | ||||
|     case ItemC_failsafe: | ||||
| @@ -1430,7 +1430,7 @@ void MainMenu::showControl() | ||||
|         //enquecommand("M84"); | ||||
|         beepshort(); | ||||
|         BLOCK; | ||||
|         RetrieveSettings(true); | ||||
|         EEPROM_RetrieveSettings(true); | ||||
|       } | ||||
|     }break; | ||||
|     default:    | ||||
|   | ||||
		Reference in New Issue
	
	Block a user