| 
						
						
							
								
							
						
						
					 | 
					 | 
					@ -14,7 +14,7 @@
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 *
 | 
					 | 
					 | 
					 | 
					 *
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 */
 | 
					 | 
					 | 
					 | 
					 */
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#define EEPROM_VERSION "V20"
 | 
					 | 
					 | 
					 | 
					#define EEPROM_VERSION "V21"
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					/**
 | 
					 | 
					 | 
					 | 
					/**
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 * V19 EEPROM Layout:
 | 
					 | 
					 | 
					 | 
					 * V19 EEPROM Layout:
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -60,6 +60,7 @@
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 *  M301 E1 PIDC  Kp[1], Ki[1], Kd[1], Kc[1]
 | 
					 | 
					 | 
					 | 
					 *  M301 E1 PIDC  Kp[1], Ki[1], Kd[1], Kc[1]
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 *  M301 E2 PIDC  Kp[2], Ki[2], Kd[2], Kc[2]
 | 
					 | 
					 | 
					 | 
					 *  M301 E2 PIDC  Kp[2], Ki[2], Kd[2], Kc[2]
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 *  M301 E3 PIDC  Kp[3], Ki[3], Kd[3], Kc[3]
 | 
					 | 
					 | 
					 | 
					 *  M301 E3 PIDC  Kp[3], Ki[3], Kd[3], Kc[3]
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 *  M301 L        lpq_len
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 *
 | 
					 | 
					 | 
					 | 
					 *
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 * PIDTEMPBED:
 | 
					 | 
					 | 
					 | 
					 * PIDTEMPBED:
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 *  M304 PID  bedKp, bedKi, bedKd
 | 
					 | 
					 | 
					 | 
					 *  M304 PID  bedKp, bedKi, bedKd
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -227,6 +228,11 @@ void Config_StoreSettings()  {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  } // Extruders Loop
 | 
					 | 
					 | 
					 | 
					  } // Extruders Loop
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					  #if DISABLED(PID_ADD_EXTRUSION_RATE)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    int lpq_len = 20;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					  #endif
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					  EEPROM_WRITE_VAR(i, lpq_len);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  #if DISABLED(PIDTEMPBED)
 | 
					 | 
					 | 
					 | 
					  #if DISABLED(PIDTEMPBED)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    float bedKp = DUMMY_PID_VALUE, bedKi = DUMMY_PID_VALUE, bedKd = DUMMY_PID_VALUE;
 | 
					 | 
					 | 
					 | 
					    float bedKp = DUMMY_PID_VALUE, bedKi = DUMMY_PID_VALUE, bedKd = DUMMY_PID_VALUE;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  #endif
 | 
					 | 
					 | 
					 | 
					  #endif
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -393,6 +399,11 @@ void Config_RetrieveSettings() {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      for (int q=16; q--;) EEPROM_READ_VAR(i, dummy);  // 4x Kp, Ki, Kd, Kc
 | 
					 | 
					 | 
					 | 
					      for (int q=16; q--;) EEPROM_READ_VAR(i, dummy);  // 4x Kp, Ki, Kd, Kc
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    #endif // !PIDTEMP
 | 
					 | 
					 | 
					 | 
					    #endif // !PIDTEMP
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    #if DISABLED(PID_ADD_EXTRUSION_RATE)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					      int lpq_len;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    #endif
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    EEPROM_READ_VAR(i, lpq_len);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    #if DISABLED(PIDTEMPBED)
 | 
					 | 
					 | 
					 | 
					    #if DISABLED(PIDTEMPBED)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      float bedKp, bedKi, bedKd;
 | 
					 | 
					 | 
					 | 
					      float bedKp, bedKi, bedKd;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    #endif
 | 
					 | 
					 | 
					 | 
					    #endif
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -539,6 +550,9 @@ void Config_ResetDefault() {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        PID_PARAM(Kc, e) = DEFAULT_Kc;
 | 
					 | 
					 | 
					 | 
					        PID_PARAM(Kc, e) = DEFAULT_Kc;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      #endif
 | 
					 | 
					 | 
					 | 
					      #endif
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    }
 | 
					 | 
					 | 
					 | 
					    }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    #if ENABLED(PID_ADD_EXTRUSION_RATE)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					      lpq_len = 20; // default last-position-queue size
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    #endif
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    // call updatePID (similar to when we have processed M301)
 | 
					 | 
					 | 
					 | 
					    // call updatePID (similar to when we have processed M301)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    updatePID();
 | 
					 | 
					 | 
					 | 
					    updatePID();
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  #endif // PIDTEMP
 | 
					 | 
					 | 
					 | 
					  #endif // PIDTEMP
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -744,7 +758,8 @@ void Config_PrintSettings(bool forReplay) {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            SERIAL_ECHOPAIR(" D", unscalePID_d(PID_PARAM(Kd, i)));
 | 
					 | 
					 | 
					 | 
					            SERIAL_ECHOPAIR(" D", unscalePID_d(PID_PARAM(Kd, i)));
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            #if ENABLED(PID_ADD_EXTRUSION_RATE)
 | 
					 | 
					 | 
					 | 
					            #if ENABLED(PID_ADD_EXTRUSION_RATE)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					              SERIAL_ECHOPAIR(" C", PID_PARAM(Kc, i));
 | 
					 | 
					 | 
					 | 
					              SERIAL_ECHOPAIR(" C", PID_PARAM(Kc, i));
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            #endif      
 | 
					 | 
					 | 
					 | 
					              if (i == 0) SERIAL_ECHOPAIR(" L", lpq_len);
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            #endif
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            SERIAL_EOL;
 | 
					 | 
					 | 
					 | 
					            SERIAL_EOL;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					          }
 | 
					 | 
					 | 
					 | 
					          }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        }
 | 
					 | 
					 | 
					 | 
					        }
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -758,7 +773,8 @@ void Config_PrintSettings(bool forReplay) {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        SERIAL_ECHOPAIR(" D", unscalePID_d(PID_PARAM(Kd, 0)));
 | 
					 | 
					 | 
					 | 
					        SERIAL_ECHOPAIR(" D", unscalePID_d(PID_PARAM(Kd, 0)));
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        #if ENABLED(PID_ADD_EXTRUSION_RATE)
 | 
					 | 
					 | 
					 | 
					        #if ENABLED(PID_ADD_EXTRUSION_RATE)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					          SERIAL_ECHOPAIR(" C", PID_PARAM(Kc, 0));
 | 
					 | 
					 | 
					 | 
					          SERIAL_ECHOPAIR(" C", PID_PARAM(Kc, 0));
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        #endif      
 | 
					 | 
					 | 
					 | 
					          SERIAL_ECHOPAIR(" L", lpq_len);
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        #endif
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        SERIAL_EOL;
 | 
					 | 
					 | 
					 | 
					        SERIAL_EOL;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      }
 | 
					 | 
					 | 
					 | 
					      }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    #endif // PIDTEMP
 | 
					 | 
					 | 
					 | 
					    #endif // PIDTEMP
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
					 | 
					
 
 |