// if CooldownNoWait is defined M109 will not wait for the cooldown to finish
#define CooldownNoWait true
+// Heating is finished if a temperature close to this degree shift is reached
+#define HEATING_EARLY_FINISH_DEG_OFFSET 1 //Degree
// PID settings:
// Uncomment the following line to enable PID support.
//===========================================================================
int target_raw[3] = {0, 0, 0};
int current_raw[3] = {0, 0, 0};
+int heatingtarget_raw[3]= {0, 0, 0};
+
#ifdef PIDTEMP
float analog2temp(int raw);\r
float analog2tempBed(int raw);\r
extern int target_raw[3]; \r
+extern int heatingtarget_raw[3];\r
extern int current_raw[3];\r
extern float Kp,Ki,Kd,Kc;\r
\r
FORCE_INLINE void setTargetHotend0(const float &celsius) \r
{ \r
target_raw[TEMPSENSOR_HOTEND_0]=temp2analog(celsius);\r
+ heatingtarget_raw[TEMPSENSOR_HOTEND_0]=temp2analog(celsius-HEATING_EARLY_FINISH_DEG_OFFSET);\r
#ifdef PIDTEMP\r
pid_setpoint = celsius;\r
#endif //PIDTEMP\r
};\r
FORCE_INLINE void setTargetBed(const float &celsius) { target_raw[TEMPSENSOR_BED ]=temp2analogBed(celsius);};\r
\r
-FORCE_INLINE bool isHeatingHotend0() {return target_raw[TEMPSENSOR_HOTEND_0] > current_raw[TEMPSENSOR_HOTEND_0];};\r
+FORCE_INLINE bool isHeatingHotend0() {return heatingtarget_raw[TEMPSENSOR_HOTEND_0] > current_raw[TEMPSENSOR_HOTEND_0];};\r
FORCE_INLINE bool isHeatingHotend1() {return target_raw[TEMPSENSOR_HOTEND_1] > current_raw[TEMPSENSOR_HOTEND_1];};\r
FORCE_INLINE float isHeatingHotend(uint8_t extruder){ \r
- if(extruder == 0) return target_raw[TEMPSENSOR_HOTEND_0] > current_raw[TEMPSENSOR_HOTEND_0];\r
+ if(extruder == 0) return heatingtarget_raw[TEMPSENSOR_HOTEND_0] > current_raw[TEMPSENSOR_HOTEND_0];\r
if(extruder == 1) return target_raw[TEMPSENSOR_HOTEND_1] > current_raw[TEMPSENSOR_HOTEND_1];\r
};\r
FORCE_INLINE bool isHeatingBed() {return target_raw[TEMPSENSOR_BED] > current_raw[TEMPSENSOR_BED];};\r