1
0
mirror of https://github.com/MarlinFirmware/Marlin.git synced 2024-12-02 08:09:36 +00:00

🐛 Move LASER_POWER_TRAP cruise to cruise block (#27031)

This commit is contained in:
Mihai 2024-05-17 04:05:27 +03:00 committed by GitHub
parent e37415c95b
commit 383e6f4646
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -2441,16 +2441,13 @@ hal_timer_t Stepper::block_phase_isr() {
* Laser power variables are calulated and stored in this block by the planner code. * Laser power variables are calulated and stored in this block by the planner code.
* trap_ramp_active_pwr - the active power in this block across accel or decel trap steps. * trap_ramp_active_pwr - the active power in this block across accel or decel trap steps.
* trap_ramp_entry_incr - holds the precalculated value to increase the current power per accel step. * trap_ramp_entry_incr - holds the precalculated value to increase the current power per accel step.
*
* Apply the starting active power and then increase power per step by the trap_ramp_entry_incr value if positive.
*/ */
#if ENABLED(LASER_POWER_TRAP) #if ENABLED(LASER_POWER_TRAP)
if (cutter.cutter_mode == CUTTER_MODE_CONTINUOUS) { if (cutter.cutter_mode == CUTTER_MODE_CONTINUOUS) {
if (planner.laser_inline.status.isPowered && planner.laser_inline.status.isEnabled) { if (planner.laser_inline.status.isPowered && planner.laser_inline.status.isEnabled) {
if (current_block->laser.trap_ramp_entry_incr > 0) { if (current_block->laser.trap_ramp_entry_incr > 0) {
cutter.apply_power(current_block->laser.trap_ramp_active_pwr); cutter.apply_power(current_block->laser.trap_ramp_active_pwr);
current_block->laser.trap_ramp_active_pwr += current_block->laser.trap_ramp_entry_incr; current_block->laser.trap_ramp_active_pwr += current_block->laser.trap_ramp_entry_incr * steps_per_isr;
} }
} }
// Not a powered move. // Not a powered move.
@ -2524,15 +2521,12 @@ hal_timer_t Stepper::block_phase_isr() {
} }
#endif // LIN_ADVANCE #endif // LIN_ADVANCE
/** // Adjust Laser Power - Decelerating
* Adjust Laser Power - Decelerating
* trap_ramp_entry_decr - holds the precalculated value to decrease the current power per decel step.
*/
#if ENABLED(LASER_POWER_TRAP) #if ENABLED(LASER_POWER_TRAP)
if (cutter.cutter_mode == CUTTER_MODE_CONTINUOUS) { if (cutter.cutter_mode == CUTTER_MODE_CONTINUOUS) {
if (planner.laser_inline.status.isPowered && planner.laser_inline.status.isEnabled) { if (planner.laser_inline.status.isPowered && planner.laser_inline.status.isEnabled) {
if (current_block->laser.trap_ramp_exit_decr > 0) { if (current_block->laser.trap_ramp_exit_decr > 0) {
current_block->laser.trap_ramp_active_pwr -= current_block->laser.trap_ramp_exit_decr; current_block->laser.trap_ramp_active_pwr -= current_block->laser.trap_ramp_exit_decr * steps_per_isr;
cutter.apply_power(current_block->laser.trap_ramp_active_pwr); cutter.apply_power(current_block->laser.trap_ramp_active_pwr);
} }
// Not a powered move. // Not a powered move.
@ -2557,30 +2551,25 @@ hal_timer_t Stepper::block_phase_isr() {
if (la_active) if (la_active)
la_interval = calc_timer_interval(current_block->nominal_rate >> current_block->la_scaling); la_interval = calc_timer_interval(current_block->nominal_rate >> current_block->la_scaling);
#endif #endif
// Adjust Laser Power - Cruise
#if ENABLED(LASER_POWER_TRAP)
if (cutter.cutter_mode == CUTTER_MODE_CONTINUOUS) {
if (planner.laser_inline.status.isPowered && planner.laser_inline.status.isEnabled) {
if (current_block->laser.trap_ramp_entry_incr > 0) {
current_block->laser.trap_ramp_active_pwr = current_block->laser.power;
cutter.apply_power(current_block->laser.power);
}
}
// Not a powered move.
else cutter.apply_power(0);
}
#endif
} }
// The timer interval is just the nominal value for the nominal speed // The timer interval is just the nominal value for the nominal speed
interval = ticks_nominal; interval = ticks_nominal;
} }
/**
* Adjust Laser Power - Cruise
* power - direct or floor adjusted active laser power.
*/
#if ENABLED(LASER_POWER_TRAP)
if (cutter.cutter_mode == CUTTER_MODE_CONTINUOUS) {
if (step_events_completed + 1 == accelerate_until) {
if (planner.laser_inline.status.isPowered && planner.laser_inline.status.isEnabled) {
if (current_block->laser.trap_ramp_entry_incr > 0) {
current_block->laser.trap_ramp_active_pwr = current_block->laser.power;
cutter.apply_power(current_block->laser.power);
}
}
// Not a powered move.
else cutter.apply_power(0);
}
}
#endif
} }
#if ENABLED(LASER_FEATURE) #if ENABLED(LASER_FEATURE)