negative temperatures is just a trick to store original temperature while extruders are off. So first part is correct. At the end unpauseExtruders in Extruder.cpp is called:
void Extruder::unpauseExtruders(bool wait) {
#if NUM_EXTRUDER > 0
// activate temperatures
for(fast8_t i = 0; i < NUM_EXTRUDER; i++) {
if(extruder[i].tempControl.targetTemperatureC < 0)
extruder[i].tempControl.targetTemperatureC = -extruder[i].tempControl.targetTemperatureC;
}
#endif
#if HAVE_HEATED_BED
bool waitBed = false;
if(heatedBedController.targetTemperatureC < 0) {
heatedBedController.targetTemperatureC = -heatedBedController.targetTemperatureC;
waitBed = true;
}
#endif
if(wait) {
#if NUM_EXTRUDER > 0
for(fast8_t i = 0; i < NUM_EXTRUDER; i++)
extruder[i].tempControl.waitForTargetTemperature();
#endif
#if HAVE_HEATED_BED
if(waitBed) {
heatedBedController.waitForTargetTemperature();
}
#endif
}
}As you see only with a negative target temperature the bed or extruder is inverted so it always becomes positive afterwards. So from this I do not see how it happens. You could write instead ofheatedBedController.targetTemperatureC = -heatedBedController.targetTemperatureC;
using fabsheatedBedController.targetTemperatureC = fabs(heatedBedController.targetTemperatureC);
Will try tomorrow if I can reproduce it or if you have some special condition causing this. Please try the fabs solution as well to see if this line is responsible for it or the problem lies somewhere else.