Improved constant laser power per rate mode. Re-factored for flash size. Minor bug fixes.
- NOTE: This commit has largely been untested. - Constant laser power per rate mode has been improved. Altered its implementation to be more responsive and accurate. - Based on LaserWeb dev feedback, only G1, G2, and G3 moves operate with constant laser power mode. Meaning that G0, G38.x, and $J jogging motions operate without it and will keep a constant power output. This was specifically requested as a way to focus the laser by keeping the laser on when not moving. Operationally, this shouldn’t alter how the laser mode operates. - Re-factored parts of the g-code parser and g-code state reports to save a few hundred bytes of flash. What was done makes the code a bit more unreadable (bad), but the flash space was in dire need. So, I’m willing to live with it for now. - Fixed a problem with $G g-code state reports. Showed `M0` program pause during a run state. Now fixed to show nothing during a run state. Also, `M30` program end was shown as `M2`. This was also corrected. - Improved spindle stop override responsiveness by removing the enforced spindle restoring delay. It’s not needed for a feature that is user controlled. - Fixed a bug with G2/3 arcs in inverse time mode. - Updated the interface.md document to make it more clear how WPos: or MPos: can be calculated from WCO:. Some GUI devs have failed to catch this in the documentation.
This commit is contained in:
@ -106,8 +106,11 @@ void mc_arc(float *target, plan_line_data_t *pl_data, float *position, float *of
|
||||
// Multiply inverse feed_rate to compensate for the fact that this movement is approximated
|
||||
// by a number of discrete segments. The inverse feed_rate should be correct for the sum of
|
||||
// all segments.
|
||||
if (pl_data->condition & PL_COND_FLAG_INVERSE_TIME) { pl_data->feed_rate *= segments; }
|
||||
|
||||
if (pl_data->condition & PL_COND_FLAG_INVERSE_TIME) {
|
||||
pl_data->feed_rate *= segments;
|
||||
bit_false(pl_data->condition,PL_COND_FLAG_INVERSE_TIME); // Force as feed absolute mode over arc segments.
|
||||
}
|
||||
|
||||
float theta_per_segment = angular_travel/segments;
|
||||
float linear_per_segment = (target[axis_linear] - position[axis_linear])/segments;
|
||||
|
||||
|
Reference in New Issue
Block a user