<font face="Arial, Verdana">That is a hard problem. One hint may be the screw to fix the thermistor. Heater block expands differently then thermistor so if you screwed too hard you might get a thermistor defect somehow.</font>
There is also a difference between decoupled and defect. Defect is this test:
<font face="Arial, Verdana"> if(act->currentTemperatureC < MIN_DEFECT_TEMPERATURE || act->currentTemperatureC > MAX_DEFECT_TEMPERATURE) // no temp sensor or short in sensor, disable heater</font>
<font face="Arial, Verdana"> {</font>
<font face="Arial, Verdana"> errorDetected = 1;</font>
<font face="Arial, Verdana"> if(extruderTempErrors < 10) // Ignore short temporary failures</font>
<font face="Arial, Verdana"> extruderTempErrors++;</font>
<font face="Arial, Verdana"> else</font>
<font face="Arial, Verdana"> {</font>
<font face="Arial, Verdana"> act->flags |= TEMPERATURE_CONTROLLER_FLAG_SENSDEFECT;</font>
<font face="Arial, Verdana"> if(!Printer::isAnyTempsensorDefect())</font>
<font face="Arial, Verdana"> {</font>
<font face="Arial, Verdana"> Printer::setAnyTempsensorDefect();</font>
<font face="Arial, Verdana"> reportTempsensorError();</font>
<font face="Arial, Verdana"> }</font>
<font face="Arial, Verdana"> EVENT_HEATER_DEFECT(controller);</font>
<font face="Arial, Verdana"> }</font>
<font face="Arial, Verdana"> }</font>
<font face="Arial, Verdana">
</font>
<font face="Arial, Verdana">reading the code I would like you to modify a few lines later</font>
<font face="Arial, Verdana">
</font>
<font face="Arial, Verdana">
bool decoupleTestRequired = !errorDetected && act->decoupleTestPeriod > 0 && (time - act->lastDecoupleTest) > act->decoupleTestPeriod; // time enough for temperature change?
I added "!errorDetected && " here to not test for decouple on defect error. A defect sensor is always out of range and could otherwise trigger decoupled instead and speeds up counter increment more then wanted.
The line if(extruderTempErrors < 10) has already a multiple test. The routine gets called 10 times per second, so you need to have the error for a full second to get it, not only for one reading.
Last thing is check your temperature graph. It should be a more or less continuous line without big jumps. Heating and cooling has a maximum speed and bigger jumps are reading errors compared to reality and do not happy with correct printers (I know you knew this already :-).
</font>