Improve K error checking, allow to manually reset the version
Properly check K independently for each version by delegating it to la10c_value() Handle -1 as a special case to allow manual reset.
This commit is contained in:
parent
fd0ed1f0ea
commit
86696156af
|
|
@ -2070,20 +2070,25 @@ static float probe_pt(float x, float y, float z_before) {
|
||||||
* K<factor> Set advance K factor
|
* K<factor> Set advance K factor
|
||||||
*/
|
*/
|
||||||
inline void gcode_M900() {
|
inline void gcode_M900() {
|
||||||
const float newK = code_seen('K') ? code_value_float() : -1;
|
float newK = code_seen('K') ? code_value_float() : -2;
|
||||||
#ifdef LA_NOCOMPAT
|
#ifdef LA_NOCOMPAT
|
||||||
if (newK >= 0 && newK < 10)
|
if (newK >= 0 && newK < 10)
|
||||||
extruder_advance_K = newK;
|
extruder_advance_K = newK;
|
||||||
else
|
else
|
||||||
SERIAL_ECHOLNPGM("K out of allowed range!");
|
SERIAL_ECHOLNPGM("K out of allowed range!");
|
||||||
#else
|
#else
|
||||||
if (newK == 0) {
|
if (newK == 0)
|
||||||
extruder_advance_K = 0;
|
extruder_advance_K = 0;
|
||||||
}
|
else if (newK == -1)
|
||||||
else if(newK > 0)
|
la10c_reset();
|
||||||
extruder_advance_K = la10c_value(newK);
|
|
||||||
else
|
else
|
||||||
SERIAL_ECHOLNPGM("K out of allowed range!");
|
{
|
||||||
|
newK = la10c_value(newK);
|
||||||
|
if (newK < 0)
|
||||||
|
SERIAL_ECHOLNPGM("K out of allowed range!");
|
||||||
|
else
|
||||||
|
extruder_advance_K = newK;
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
SERIAL_ECHO_START;
|
SERIAL_ECHO_START;
|
||||||
|
|
|
||||||
|
|
@ -31,10 +31,18 @@ static float la10c_convert(float k)
|
||||||
float la10c_value(float k)
|
float la10c_value(float k)
|
||||||
{
|
{
|
||||||
if(la10c_mode == LA10C_UNKNOWN)
|
if(la10c_mode == LA10C_UNKNOWN)
|
||||||
|
{
|
||||||
|
// do not autodetect until a valid value is seen
|
||||||
|
if(k == 0)
|
||||||
|
return 0;
|
||||||
|
else if(k < 0)
|
||||||
|
return -1;
|
||||||
|
|
||||||
la10c_mode_change(k < 10? LA10C_LA15: LA10C_LA10);
|
la10c_mode_change(k < 10? LA10C_LA15: LA10C_LA10);
|
||||||
|
}
|
||||||
|
|
||||||
if(la10c_mode == LA10C_LA15)
|
if(la10c_mode == LA10C_LA15)
|
||||||
return k;
|
return (k >= 0 && k < 10? k: -1);
|
||||||
else
|
else
|
||||||
return la10c_convert(k);
|
return (k >= 0? la10c_convert(k): -1);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue