0.92.8 Z-probe hits the bed with G32 command (Github 2 Feb 2016 dev version)
I've just tried to move from 92.6 to 92.8 and found strange G32 behavior. Previously in 92.6 G32 worked as expected, taking care about Z-probe height and z-probe bed height in Eeprom, but in 92.8 it looks like G32 command doesn't care about z-probe height and hits the bed. Any suggestions? I double checked all values in Eeprom - everything looks OK.
Comments
#if FEATURE_AUTOLEVEL
case 32: // G32 Auto-Bed leveling
{
#if defined(Z_PROBE_MIN_TEMPERATURE) && Z_PROBE_MIN_TEMPERATURE
float actTemp[NUM_EXTRUDER];
for(int i = 0; i < NUM_EXTRUDER; i++)
actTemp[i] = extruder[i].tempControl.targetTemperatureC;
Printer::moveToReal(IGNORE_COORDINATE,IGNORE_COORDINATE,ZHOME_HEAT_HEIGHT,IGNORE_COORDINATE,Printer::homingFeedrate[Z_AXIS]);
Commands::waitUntilEndOfAllMoves();
#if ZHOME_HEAT_ALL
for(int i = 0; i < NUM_EXTRUDER; i++) {
Extruder::setTemperatureForExtruder(RMath::max(actTemp[i],static_cast<float>(ZPROBE_MIN_TEMPERATURE)),i,false,false);
}
for(int i = 0; i < NUM_EXTRUDER; i++) {
if(extruder[i].tempControl.currentTemperatureC < ZPROBE_MIN_TEMPERATURE)
Extruder::setTemperatureForExtruder(RMath::max(actTemp[i],static_cast<float>(ZPROBE_MIN_TEMPERATURE)),i,false,true);
}
#else
if(extruder[Extruder::current->id].tempControl.currentTemperatureC < ZPROBE_MIN_TEMPERATURE)
Extruder::setTemperatureForExtruder(RMath::max(actTemp[Extruder::current->id],static_cast<float>(ZPROBE_MIN_TEMPERATURE)),Extruder::current->id,false,true);
#endif
#endif
runBedLeveling(com);
#if defined(Z_PROBE_MIN_TEMPERATURE) && Z_PROBE_MIN_TEMPERATURE
#if ZHOME_HEAT_ALL
for(int i = 0; i < NUM_EXTRUDER; i++) {
Extruder::setTemperatureForExtruder(RMath::max(actTemp[i],static_cast<float>(ZPROBE_MIN_TEMPERATURE)),i,false,false);
}
for(int i = 0; i < NUM_EXTRUDER; i++) {
if(extruder[i].tempControl.currentTemperatureC < ZPROBE_MIN_TEMPERATURE)
Extruder::setTemperatureForExtruder(RMath::max(actTemp[i],static_cast<float>(ZPROBE_MIN_TEMPERATURE)),i,false,true);
}
#else
if(extruder[Extruder::current->id].tempControl.currentTemperatureC < ZPROBE_MIN_TEMPERATURE)
Extruder::setTemperatureForExtruder(RMath::max(actTemp[Extruder::current->id],static_cast<float>(ZPROBE_MIN_TEMPERATURE)),Extruder::current->id,false,true);
#endif
#endif
}
break;
It's good to make a check if ZHOME_HEAT_HEIGHT is not less than z-probe height + z-probe bed height. Or just calculate it automatically.
Also we need to check for Z_PROBE_REQUIRES_HEATING at:
case 32: // G32 Auto-Bed leveling
{
#if defined(Z_PROBE_MIN_TEMPERATURE) && Z_PROBE_MIN_TEMPERATURE
because it moves to heat position even if Z_PROBE_REQUIRES_HEATING = 0 and makes it twice