|
@ -74,12 +74,6 @@ int16_t Temperature::current_temperature_raw[HOTENDS] = { 0 }, |
|
|
float Temperature::redundant_temperature = 0.0; |
|
|
float Temperature::redundant_temperature = 0.0; |
|
|
#endif |
|
|
#endif |
|
|
|
|
|
|
|
|
uint8_t Temperature::soft_pwm_bed; |
|
|
|
|
|
|
|
|
|
|
|
#if ENABLED(FAN_SOFT_PWM) |
|
|
|
|
|
uint8_t Temperature::fanSpeedSoftPwm[FAN_COUNT]; |
|
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
|
|
#if ENABLED(PIDTEMP) |
|
|
#if ENABLED(PIDTEMP) |
|
|
#if ENABLED(PID_PARAMS_PER_HOTEND) && HOTENDS > 1 |
|
|
#if ENABLED(PID_PARAMS_PER_HOTEND) && HOTENDS > 1 |
|
|
float Temperature::Kp[HOTENDS] = ARRAY_BY_HOTENDS1(DEFAULT_Kp), |
|
|
float Temperature::Kp[HOTENDS] = ARRAY_BY_HOTENDS1(DEFAULT_Kp), |
|
@ -194,10 +188,12 @@ int16_t Temperature::minttemp_raw[HOTENDS] = ARRAY_BY_HOTENDS(HEATER_0_RAW_LO_TE |
|
|
millis_t Temperature::next_auto_fan_check_ms = 0; |
|
|
millis_t Temperature::next_auto_fan_check_ms = 0; |
|
|
#endif |
|
|
#endif |
|
|
|
|
|
|
|
|
uint8_t Temperature::soft_pwm[HOTENDS]; |
|
|
uint8_t Temperature::soft_pwm_amount[HOTENDS], |
|
|
|
|
|
Temperature::soft_pwm_amount_bed; |
|
|
|
|
|
|
|
|
#if ENABLED(FAN_SOFT_PWM) |
|
|
#if ENABLED(FAN_SOFT_PWM) |
|
|
uint8_t Temperature::soft_pwm_fan[FAN_COUNT]; |
|
|
uint8_t Temperature::soft_pwm_amount_fan[FAN_COUNT], |
|
|
|
|
|
Temperature::soft_pwm_count_fan[FAN_COUNT]; |
|
|
#endif |
|
|
#endif |
|
|
|
|
|
|
|
|
#if ENABLED(FILAMENT_WIDTH_SENSOR) |
|
|
#if ENABLED(FILAMENT_WIDTH_SENSOR) |
|
@ -206,7 +202,7 @@ uint8_t Temperature::soft_pwm[HOTENDS]; |
|
|
|
|
|
|
|
|
#if ENABLED(PROBING_HEATERS_OFF) |
|
|
#if ENABLED(PROBING_HEATERS_OFF) |
|
|
bool Temperature::paused; |
|
|
bool Temperature::paused; |
|
|
int16_t Temperature::paused_hotend_temps[HOTENDS]; |
|
|
int16_t Temperature::paused_hotend_temp[HOTENDS]; |
|
|
#if HAS_TEMP_BED |
|
|
#if HAS_TEMP_BED |
|
|
int16_t Temperature::paused_bed_temp; |
|
|
int16_t Temperature::paused_bed_temp; |
|
|
#endif |
|
|
#endif |
|
@ -254,13 +250,13 @@ uint8_t Temperature::soft_pwm[HOTENDS]; |
|
|
|
|
|
|
|
|
#if HAS_PID_FOR_BOTH |
|
|
#if HAS_PID_FOR_BOTH |
|
|
if (hotend < 0) |
|
|
if (hotend < 0) |
|
|
soft_pwm_bed = bias = d = (MAX_BED_POWER) >> 1; |
|
|
soft_pwm_amount_bed = bias = d = (MAX_BED_POWER) >> 1; |
|
|
else |
|
|
else |
|
|
soft_pwm[hotend] = bias = d = (PID_MAX) >> 1; |
|
|
soft_pwm_amount[hotend] = bias = d = (PID_MAX) >> 1; |
|
|
#elif ENABLED(PIDTEMP) |
|
|
#elif ENABLED(PIDTEMP) |
|
|
soft_pwm[hotend] = bias = d = (PID_MAX) >> 1; |
|
|
soft_pwm_amount[hotend] = bias = d = (PID_MAX) >> 1; |
|
|
#else |
|
|
#else |
|
|
soft_pwm_bed = bias = d = (MAX_BED_POWER) >> 1; |
|
|
soft_pwm_amount_bed = bias = d = (MAX_BED_POWER) >> 1; |
|
|
#endif |
|
|
#endif |
|
|
|
|
|
|
|
|
wait_for_heatup = true; |
|
|
wait_for_heatup = true; |
|
@ -298,13 +294,13 @@ uint8_t Temperature::soft_pwm[HOTENDS]; |
|
|
heating = false; |
|
|
heating = false; |
|
|
#if HAS_PID_FOR_BOTH |
|
|
#if HAS_PID_FOR_BOTH |
|
|
if (hotend < 0) |
|
|
if (hotend < 0) |
|
|
soft_pwm_bed = (bias - d) >> 1; |
|
|
soft_pwm_amount_bed = (bias - d) >> 1; |
|
|
else |
|
|
else |
|
|
soft_pwm[hotend] = (bias - d) >> 1; |
|
|
soft_pwm_amount[hotend] = (bias - d) >> 1; |
|
|
#elif ENABLED(PIDTEMP) |
|
|
#elif ENABLED(PIDTEMP) |
|
|
soft_pwm[hotend] = (bias - d) >> 1; |
|
|
soft_pwm_amount[hotend] = (bias - d) >> 1; |
|
|
#elif ENABLED(PIDTEMPBED) |
|
|
#elif ENABLED(PIDTEMPBED) |
|
|
soft_pwm_bed = (bias - d) >> 1; |
|
|
soft_pwm_amount_bed = (bias - d) >> 1; |
|
|
#endif |
|
|
#endif |
|
|
t1 = ms; |
|
|
t1 = ms; |
|
|
t_high = t1 - t2; |
|
|
t_high = t1 - t2; |
|
@ -367,13 +363,13 @@ uint8_t Temperature::soft_pwm[HOTENDS]; |
|
|
} |
|
|
} |
|
|
#if HAS_PID_FOR_BOTH |
|
|
#if HAS_PID_FOR_BOTH |
|
|
if (hotend < 0) |
|
|
if (hotend < 0) |
|
|
soft_pwm_bed = (bias + d) >> 1; |
|
|
soft_pwm_amount_bed = (bias + d) >> 1; |
|
|
else |
|
|
else |
|
|
soft_pwm[hotend] = (bias + d) >> 1; |
|
|
soft_pwm_amount[hotend] = (bias + d) >> 1; |
|
|
#elif ENABLED(PIDTEMP) |
|
|
#elif ENABLED(PIDTEMP) |
|
|
soft_pwm[hotend] = (bias + d) >> 1; |
|
|
soft_pwm_amount[hotend] = (bias + d) >> 1; |
|
|
#else |
|
|
#else |
|
|
soft_pwm_bed = (bias + d) >> 1; |
|
|
soft_pwm_amount_bed = (bias + d) >> 1; |
|
|
#endif |
|
|
#endif |
|
|
cycles++; |
|
|
cycles++; |
|
|
min = temp; |
|
|
min = temp; |
|
@ -466,7 +462,7 @@ void Temperature::updatePID() { |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
int Temperature::getHeaterPower(int heater) { |
|
|
int Temperature::getHeaterPower(int heater) { |
|
|
return heater < 0 ? soft_pwm_bed : soft_pwm[heater]; |
|
|
return heater < 0 ? soft_pwm_amount_bed : soft_pwm_amount[heater]; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
#if HAS_AUTO_FAN |
|
|
#if HAS_AUTO_FAN |
|
@ -717,7 +713,7 @@ void Temperature::manage_heater() { |
|
|
float pid_output = get_pid_output(e); |
|
|
float pid_output = get_pid_output(e); |
|
|
|
|
|
|
|
|
// Check if temperature is within the correct range
|
|
|
// Check if temperature is within the correct range
|
|
|
soft_pwm[e] = (current_temperature[e] > minttemp[e] || is_preheating(e)) && current_temperature[e] < maxttemp[e] ? (int)pid_output >> 1 : 0; |
|
|
soft_pwm_amount[e] = (current_temperature[e] > minttemp[e] || is_preheating(e)) && current_temperature[e] < maxttemp[e] ? (int)pid_output >> 1 : 0; |
|
|
|
|
|
|
|
|
// Check if the temperature is failing to increase
|
|
|
// Check if the temperature is failing to increase
|
|
|
#if WATCH_HOTENDS |
|
|
#if WATCH_HOTENDS |
|
@ -798,27 +794,27 @@ void Temperature::manage_heater() { |
|
|
#if ENABLED(PIDTEMPBED) |
|
|
#if ENABLED(PIDTEMPBED) |
|
|
float pid_output = get_pid_output_bed(); |
|
|
float pid_output = get_pid_output_bed(); |
|
|
|
|
|
|
|
|
soft_pwm_bed = WITHIN(current_temperature_bed, BED_MINTEMP, BED_MAXTEMP) ? (int)pid_output >> 1 : 0; |
|
|
soft_pwm_amount_bed = WITHIN(current_temperature_bed, BED_MINTEMP, BED_MAXTEMP) ? (int)pid_output >> 1 : 0; |
|
|
|
|
|
|
|
|
#elif ENABLED(BED_LIMIT_SWITCHING) |
|
|
#elif ENABLED(BED_LIMIT_SWITCHING) |
|
|
// Check if temperature is within the correct band
|
|
|
// Check if temperature is within the correct band
|
|
|
if (WITHIN(current_temperature_bed, BED_MINTEMP, BED_MAXTEMP)) { |
|
|
if (WITHIN(current_temperature_bed, BED_MINTEMP, BED_MAXTEMP)) { |
|
|
if (current_temperature_bed >= target_temperature_bed + BED_HYSTERESIS) |
|
|
if (current_temperature_bed >= target_temperature_bed + BED_HYSTERESIS) |
|
|
soft_pwm_bed = 0; |
|
|
soft_pwm_amount_bed = 0; |
|
|
else if (current_temperature_bed <= target_temperature_bed - (BED_HYSTERESIS)) |
|
|
else if (current_temperature_bed <= target_temperature_bed - (BED_HYSTERESIS)) |
|
|
soft_pwm_bed = MAX_BED_POWER >> 1; |
|
|
soft_pwm_amount_bed = MAX_BED_POWER >> 1; |
|
|
} |
|
|
} |
|
|
else { |
|
|
else { |
|
|
soft_pwm_bed = 0; |
|
|
soft_pwm_amount_bed = 0; |
|
|
WRITE_HEATER_BED(LOW); |
|
|
WRITE_HEATER_BED(LOW); |
|
|
} |
|
|
} |
|
|
#else // !PIDTEMPBED && !BED_LIMIT_SWITCHING
|
|
|
#else // !PIDTEMPBED && !BED_LIMIT_SWITCHING
|
|
|
// Check if temperature is within the correct range
|
|
|
// Check if temperature is within the correct range
|
|
|
if (WITHIN(current_temperature_bed, BED_MINTEMP, BED_MAXTEMP)) { |
|
|
if (WITHIN(current_temperature_bed, BED_MINTEMP, BED_MAXTEMP)) { |
|
|
soft_pwm_bed = current_temperature_bed < target_temperature_bed ? MAX_BED_POWER >> 1 : 0; |
|
|
soft_pwm_amount_bed = current_temperature_bed < target_temperature_bed ? MAX_BED_POWER >> 1 : 0; |
|
|
} |
|
|
} |
|
|
else { |
|
|
else { |
|
|
soft_pwm_bed = 0; |
|
|
soft_pwm_amount_bed = 0; |
|
|
WRITE_HEATER_BED(LOW); |
|
|
WRITE_HEATER_BED(LOW); |
|
|
} |
|
|
} |
|
|
#endif |
|
|
#endif |
|
@ -1205,7 +1201,7 @@ void Temperature::init() { |
|
|
|
|
|
|
|
|
#if ENABLED(PROBING_HEATERS_OFF) |
|
|
#if ENABLED(PROBING_HEATERS_OFF) |
|
|
paused = false; |
|
|
paused = false; |
|
|
ZERO(paused_hotend_temps); |
|
|
ZERO(paused_hotend_temp); |
|
|
#if HAS_TEMP_BED |
|
|
#if HAS_TEMP_BED |
|
|
paused_bed_temp = 0; |
|
|
paused_bed_temp = 0; |
|
|
#endif |
|
|
#endif |
|
@ -1316,7 +1312,7 @@ void Temperature::disable_all_heaters() { |
|
|
// Unpause and reset everything
|
|
|
// Unpause and reset everything
|
|
|
#if ENABLED(PROBING_HEATERS_OFF) |
|
|
#if ENABLED(PROBING_HEATERS_OFF) |
|
|
paused = false; |
|
|
paused = false; |
|
|
ZERO(paused_hotend_temps); |
|
|
ZERO(paused_hotend_temp); |
|
|
#if HAS_TEMP_BED |
|
|
#if HAS_TEMP_BED |
|
|
paused_bed_temp = 0; |
|
|
paused_bed_temp = 0; |
|
|
#endif |
|
|
#endif |
|
@ -1327,7 +1323,7 @@ void Temperature::disable_all_heaters() { |
|
|
|
|
|
|
|
|
#define DISABLE_HEATER(NR) { \ |
|
|
#define DISABLE_HEATER(NR) { \ |
|
|
setTargetHotend(0, NR); \ |
|
|
setTargetHotend(0, NR); \ |
|
|
soft_pwm[NR] = 0; \ |
|
|
soft_pwm_amount[NR] = 0; \ |
|
|
WRITE_HEATER_ ##NR (LOW); \ |
|
|
WRITE_HEATER_ ##NR (LOW); \ |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
@ -1349,7 +1345,7 @@ void Temperature::disable_all_heaters() { |
|
|
|
|
|
|
|
|
#if HAS_TEMP_BED |
|
|
#if HAS_TEMP_BED |
|
|
target_temperature_bed = 0; |
|
|
target_temperature_bed = 0; |
|
|
soft_pwm_bed = 0; |
|
|
soft_pwm_amount_bed = 0; |
|
|
#if HAS_HEATER_BED |
|
|
#if HAS_HEATER_BED |
|
|
WRITE_HEATER_BED(LOW); |
|
|
WRITE_HEATER_BED(LOW); |
|
|
#endif |
|
|
#endif |
|
@ -1357,36 +1353,29 @@ void Temperature::disable_all_heaters() { |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
#if ENABLED(PROBING_HEATERS_OFF) |
|
|
#if ENABLED(PROBING_HEATERS_OFF) |
|
|
void Temperature::pause(bool p) { |
|
|
|
|
|
if (p == paused) { // If called out of order something is wrong
|
|
|
|
|
|
SERIAL_ERROR_START; |
|
|
|
|
|
serialprintPGM(paused ? PSTR("Heaters already paused!") : PSTR("Heaters already unpaused!")); |
|
|
|
|
|
return; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (p) { |
|
|
void Temperature::pause(const bool p) { |
|
|
HOTEND_LOOP() { |
|
|
if (p != paused) { |
|
|
paused_hotend_temps[e] = degTargetHotend(e); |
|
|
paused = p; |
|
|
setTargetHotend(0, e); |
|
|
if (p) { |
|
|
|
|
|
HOTEND_LOOP() { |
|
|
|
|
|
paused_hotend_temp[e] = degTargetHotend(e); |
|
|
|
|
|
setTargetHotend(0, e); |
|
|
|
|
|
} |
|
|
|
|
|
#if HAS_TEMP_BED |
|
|
|
|
|
paused_bed_temp = degTargetBed(); |
|
|
|
|
|
setTargetBed(0); |
|
|
|
|
|
#endif |
|
|
|
|
|
} |
|
|
|
|
|
else { |
|
|
|
|
|
HOTEND_LOOP() setTargetHotend(paused_hotend_temp[e], e); |
|
|
|
|
|
#if HAS_TEMP_BED |
|
|
|
|
|
setTargetBed(paused_bed_temp); |
|
|
|
|
|
#endif |
|
|
} |
|
|
} |
|
|
#if HAS_TEMP_BED |
|
|
|
|
|
paused_bed_temp = degTargetBed(); |
|
|
|
|
|
setTargetBed(0); |
|
|
|
|
|
#endif |
|
|
|
|
|
} |
|
|
|
|
|
else { |
|
|
|
|
|
HOTEND_LOOP() setTargetHotend(paused_hotend_temps[e], e); |
|
|
|
|
|
#if HAS_TEMP_BED |
|
|
|
|
|
setTargetBed(paused_bed_temp); |
|
|
|
|
|
#endif |
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
paused = p; |
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
bool Temperature::ispaused() { |
|
|
|
|
|
return paused; |
|
|
|
|
|
} |
|
|
|
|
|
#endif // PROBING_HEATERS_OFF
|
|
|
#endif // PROBING_HEATERS_OFF
|
|
|
|
|
|
|
|
|
#if ENABLED(HEATER_0_USES_MAX6675) |
|
|
#if ENABLED(HEATER_0_USES_MAX6675) |
|
@ -1613,11 +1602,11 @@ void Temperature::isr() { |
|
|
#if ENABLED(SLOW_PWM_HEATERS) |
|
|
#if ENABLED(SLOW_PWM_HEATERS) |
|
|
static uint8_t slow_pwm_count = 0; |
|
|
static uint8_t slow_pwm_count = 0; |
|
|
#define ISR_STATICS(n) \ |
|
|
#define ISR_STATICS(n) \ |
|
|
static uint8_t soft_pwm_ ## n; \ |
|
|
static uint8_t soft_pwm_count_ ## n, \ |
|
|
static uint8_t state_heater_ ## n = 0; \ |
|
|
state_heater_ ## n = 0, \ |
|
|
static uint8_t state_timer_heater_ ## n = 0 |
|
|
state_timer_heater_ ## n = 0 |
|
|
#else |
|
|
#else |
|
|
#define ISR_STATICS(n) static uint8_t soft_pwm_ ## n = 0 |
|
|
#define ISR_STATICS(n) static uint8_t soft_pwm_count_ ## n = 0 |
|
|
#endif |
|
|
#endif |
|
|
|
|
|
|
|
|
// Statics per heater
|
|
|
// Statics per heater
|
|
@ -1656,73 +1645,73 @@ void Temperature::isr() { |
|
|
*/ |
|
|
*/ |
|
|
if (pwm_count_tmp >= 127) { |
|
|
if (pwm_count_tmp >= 127) { |
|
|
pwm_count_tmp -= 127; |
|
|
pwm_count_tmp -= 127; |
|
|
soft_pwm_0 = (soft_pwm_0 & pwm_mask) + soft_pwm[0]; |
|
|
soft_pwm_count_0 = (soft_pwm_count_0 & pwm_mask) + soft_pwm_amount[0]; |
|
|
WRITE_HEATER_0(soft_pwm_0 > pwm_mask ? HIGH : LOW); |
|
|
WRITE_HEATER_0(soft_pwm_count_0 > pwm_mask ? HIGH : LOW); |
|
|
#if HOTENDS > 1 |
|
|
#if HOTENDS > 1 |
|
|
soft_pwm_1 = (soft_pwm_1 & pwm_mask) + soft_pwm[1]; |
|
|
soft_pwm_count_1 = (soft_pwm_count_1 & pwm_mask) + soft_pwm_amount[1]; |
|
|
WRITE_HEATER_1(soft_pwm_1 > pwm_mask ? HIGH : LOW); |
|
|
WRITE_HEATER_1(soft_pwm_count_1 > pwm_mask ? HIGH : LOW); |
|
|
#if HOTENDS > 2 |
|
|
#if HOTENDS > 2 |
|
|
soft_pwm_2 = (soft_pwm_2 & pwm_mask) + soft_pwm[2]; |
|
|
soft_pwm_count_2 = (soft_pwm_count_2 & pwm_mask) + soft_pwm_amount[2]; |
|
|
WRITE_HEATER_2(soft_pwm_2 > pwm_mask ? HIGH : LOW); |
|
|
WRITE_HEATER_2(soft_pwm_count_2 > pwm_mask ? HIGH : LOW); |
|
|
#if HOTENDS > 3 |
|
|
#if HOTENDS > 3 |
|
|
soft_pwm_3 = (soft_pwm_3 & pwm_mask) + soft_pwm[3]; |
|
|
soft_pwm_count_3 = (soft_pwm_count_3 & pwm_mask) + soft_pwm_amount[3]; |
|
|
WRITE_HEATER_3(soft_pwm_3 > pwm_mask ? HIGH : LOW); |
|
|
WRITE_HEATER_3(soft_pwm_count_3 > pwm_mask ? HIGH : LOW); |
|
|
#if HOTENDS > 4 |
|
|
#if HOTENDS > 4 |
|
|
soft_pwm_4 = (soft_pwm_4 & pwm_mask) + soft_pwm[4]; |
|
|
soft_pwm_count_4 = (soft_pwm_count_4 & pwm_mask) + soft_pwm_amount[4]; |
|
|
WRITE_HEATER_4(soft_pwm_4 > pwm_mask ? HIGH : LOW); |
|
|
WRITE_HEATER_4(soft_pwm_count_4 > pwm_mask ? HIGH : LOW); |
|
|
#endif // HOTENDS > 4
|
|
|
#endif // HOTENDS > 4
|
|
|
#endif // HOTENDS > 3
|
|
|
#endif // HOTENDS > 3
|
|
|
#endif // HOTENDS > 2
|
|
|
#endif // HOTENDS > 2
|
|
|
#endif // HOTENDS > 1
|
|
|
#endif // HOTENDS > 1
|
|
|
|
|
|
|
|
|
#if HAS_HEATER_BED |
|
|
#if HAS_HEATER_BED |
|
|
soft_pwm_BED = (soft_pwm_BED & pwm_mask) + soft_pwm_bed; |
|
|
soft_pwm_count_BED = (soft_pwm_count_BED & pwm_mask) + soft_pwm_amount_bed; |
|
|
WRITE_HEATER_BED(soft_pwm_BED > pwm_mask ? HIGH : LOW); |
|
|
WRITE_HEATER_BED(soft_pwm_count_BED > pwm_mask ? HIGH : LOW); |
|
|
#endif |
|
|
#endif |
|
|
|
|
|
|
|
|
#if ENABLED(FAN_SOFT_PWM) |
|
|
#if ENABLED(FAN_SOFT_PWM) |
|
|
#if HAS_FAN0 |
|
|
#if HAS_FAN0 |
|
|
soft_pwm_fan[0] = (soft_pwm_fan[0] & pwm_mask) + fanSpeedSoftPwm[0] >> 1; |
|
|
soft_pwm_count_fan[0] = (soft_pwm_count_fan[0] & pwm_mask) + soft_pwm_amount_fan[0] >> 1; |
|
|
WRITE_FAN(soft_pwm_fan[0] > pwm_mask ? HIGH : LOW); |
|
|
WRITE_FAN(soft_pwm_count_fan[0] > pwm_mask ? HIGH : LOW); |
|
|
#endif |
|
|
#endif |
|
|
#if HAS_FAN1 |
|
|
#if HAS_FAN1 |
|
|
soft_pwm_fan[1] = (soft_pwm_fan[1] & pwm_mask) + fanSpeedSoftPwm[1] >> 1; |
|
|
soft_pwm_count_fan[1] = (soft_pwm_count_fan[1] & pwm_mask) + soft_pwm_amount_fan[1] >> 1; |
|
|
WRITE_FAN1(soft_pwm_fan[1] > pwm_mask ? HIGH : LOW); |
|
|
WRITE_FAN1(soft_pwm_count_fan[1] > pwm_mask ? HIGH : LOW); |
|
|
#endif |
|
|
#endif |
|
|
#if HAS_FAN2 |
|
|
#if HAS_FAN2 |
|
|
soft_pwm_fan[2] = (soft_pwm_fan[2] & pwm_mask) + fanSpeedSoftPwm[2] >> 1; |
|
|
soft_pwm_count_fan[2] = (soft_pwm_count_fan[2] & pwm_mask) + soft_pwm_amount_fan[2] >> 1; |
|
|
WRITE_FAN2(soft_pwm_fan[2] > pwm_mask ? HIGH : LOW); |
|
|
WRITE_FAN2(soft_pwm_count_fan[2] > pwm_mask ? HIGH : LOW); |
|
|
#endif |
|
|
#endif |
|
|
#endif |
|
|
#endif |
|
|
} |
|
|
} |
|
|
else { |
|
|
else { |
|
|
if (soft_pwm_0 <= pwm_count_tmp) WRITE_HEATER_0(0); |
|
|
if (soft_pwm_count_0 <= pwm_count_tmp) WRITE_HEATER_0(0); |
|
|
#if HOTENDS > 1 |
|
|
#if HOTENDS > 1 |
|
|
if (soft_pwm_1 <= pwm_count_tmp) WRITE_HEATER_1(0); |
|
|
if (soft_pwm_count_1 <= pwm_count_tmp) WRITE_HEATER_1(0); |
|
|
#if HOTENDS > 2 |
|
|
#if HOTENDS > 2 |
|
|
if (soft_pwm_2 <= pwm_count_tmp) WRITE_HEATER_2(0); |
|
|
if (soft_pwm_count_2 <= pwm_count_tmp) WRITE_HEATER_2(0); |
|
|
#if HOTENDS > 3 |
|
|
#if HOTENDS > 3 |
|
|
if (soft_pwm_3 <= pwm_count_tmp) WRITE_HEATER_3(0); |
|
|
if (soft_pwm_count_3 <= pwm_count_tmp) WRITE_HEATER_3(0); |
|
|
#if HOTENDS > 4 |
|
|
#if HOTENDS > 4 |
|
|
if (soft_pwm_4 <= pwm_count_tmp) WRITE_HEATER_4(0); |
|
|
if (soft_pwm_count_4 <= pwm_count_tmp) WRITE_HEATER_4(0); |
|
|
#endif // HOTENDS > 4
|
|
|
#endif // HOTENDS > 4
|
|
|
#endif // HOTENDS > 3
|
|
|
#endif // HOTENDS > 3
|
|
|
#endif // HOTENDS > 2
|
|
|
#endif // HOTENDS > 2
|
|
|
#endif // HOTENDS > 1
|
|
|
#endif // HOTENDS > 1
|
|
|
|
|
|
|
|
|
#if HAS_HEATER_BED |
|
|
#if HAS_HEATER_BED |
|
|
if (soft_pwm_BED <= pwm_count_tmp) WRITE_HEATER_BED(0); |
|
|
if (soft_pwm_count_BED <= pwm_count_tmp) WRITE_HEATER_BED(0); |
|
|
#endif |
|
|
#endif |
|
|
|
|
|
|
|
|
#if ENABLED(FAN_SOFT_PWM) |
|
|
#if ENABLED(FAN_SOFT_PWM) |
|
|
#if HAS_FAN0 |
|
|
#if HAS_FAN0 |
|
|
if (soft_pwm_fan[0] <= pwm_count_tmp) WRITE_FAN(0); |
|
|
if (soft_pwm_count_fan[0] <= pwm_count_tmp) WRITE_FAN(0); |
|
|
#endif |
|
|
#endif |
|
|
#if HAS_FAN1 |
|
|
#if HAS_FAN1 |
|
|
if (soft_pwm_fan[1] <= pwm_count_tmp) WRITE_FAN1(0); |
|
|
if (soft_pwm_count_fan[1] <= pwm_count_tmp) WRITE_FAN1(0); |
|
|
#endif |
|
|
#endif |
|
|
#if HAS_FAN2 |
|
|
#if HAS_FAN2 |
|
|
if (soft_pwm_fan[2] <= pwm_count_tmp) WRITE_FAN2(0); |
|
|
if (soft_pwm_count_fan[2] <= pwm_count_tmp) WRITE_FAN2(0); |
|
|
#endif |
|
|
#endif |
|
|
#endif |
|
|
#endif |
|
|
} |
|
|
} |
|
@ -1765,7 +1754,7 @@ void Temperature::isr() { |
|
|
WRITE_HEATER_ ##NR(0); \ |
|
|
WRITE_HEATER_ ##NR(0); \ |
|
|
} \ |
|
|
} \ |
|
|
} |
|
|
} |
|
|
#define SLOW_PWM_ROUTINE(n) _SLOW_PWM_ROUTINE(n, soft_pwm[n]) |
|
|
#define SLOW_PWM_ROUTINE(n) _SLOW_PWM_ROUTINE(n, soft_pwm_amount[n]) |
|
|
|
|
|
|
|
|
#define PWM_OFF_ROUTINE(NR) \ |
|
|
#define PWM_OFF_ROUTINE(NR) \ |
|
|
if (soft_pwm_ ##NR < slow_pwm_count) { \ |
|
|
if (soft_pwm_ ##NR < slow_pwm_count) { \ |
|
@ -1792,7 +1781,7 @@ void Temperature::isr() { |
|
|
#endif // HOTENDS > 2
|
|
|
#endif // HOTENDS > 2
|
|
|
#endif // HOTENDS > 1
|
|
|
#endif // HOTENDS > 1
|
|
|
#if HAS_HEATER_BED |
|
|
#if HAS_HEATER_BED |
|
|
_SLOW_PWM_ROUTINE(BED, soft_pwm_bed); // BED
|
|
|
_SLOW_PWM_ROUTINE(BED, soft_pwm_amount_bed); // BED
|
|
|
#endif |
|
|
#endif |
|
|
|
|
|
|
|
|
} // slow_pwm_count == 0
|
|
|
} // slow_pwm_count == 0
|
|
@ -1818,26 +1807,26 @@ void Temperature::isr() { |
|
|
if (pwm_count_tmp >= 127) { |
|
|
if (pwm_count_tmp >= 127) { |
|
|
pwm_count_tmp = 0; |
|
|
pwm_count_tmp = 0; |
|
|
#if HAS_FAN0 |
|
|
#if HAS_FAN0 |
|
|
soft_pwm_fan[0] = fanSpeedSoftPwm[0] >> 1; |
|
|
soft_pwm_count_fan[0] = soft_pwm_amount_fan[0] >> 1; |
|
|
WRITE_FAN(soft_pwm_fan[0] > 0 ? HIGH : LOW); |
|
|
WRITE_FAN(soft_pwm_count_fan[0] > 0 ? HIGH : LOW); |
|
|
#endif |
|
|
#endif |
|
|
#if HAS_FAN1 |
|
|
#if HAS_FAN1 |
|
|
soft_pwm_fan[1] = fanSpeedSoftPwm[1] >> 1; |
|
|
soft_pwm_count_fan[1] = soft_pwm_amount_fan[1] >> 1; |
|
|
WRITE_FAN1(soft_pwm_fan[1] > 0 ? HIGH : LOW); |
|
|
WRITE_FAN1(soft_pwm_count_fan[1] > 0 ? HIGH : LOW); |
|
|
#endif |
|
|
#endif |
|
|
#if HAS_FAN2 |
|
|
#if HAS_FAN2 |
|
|
soft_pwm_fan[2] = fanSpeedSoftPwm[2] >> 1; |
|
|
soft_pwm_count_fan[2] = soft_pwm_amount_fan[2] >> 1; |
|
|
WRITE_FAN2(soft_pwm_fan[2] > 0 ? HIGH : LOW); |
|
|
WRITE_FAN2(soft_pwm_count_fan[2] > 0 ? HIGH : LOW); |
|
|
#endif |
|
|
#endif |
|
|
} |
|
|
} |
|
|
#if HAS_FAN0 |
|
|
#if HAS_FAN0 |
|
|
if (soft_pwm_fan[0] <= pwm_count_tmp) WRITE_FAN(0); |
|
|
if (soft_pwm_count_fan[0] <= pwm_count_tmp) WRITE_FAN(0); |
|
|
#endif |
|
|
#endif |
|
|
#if HAS_FAN1 |
|
|
#if HAS_FAN1 |
|
|
if (soft_pwm_fan[1] <= pwm_count_tmp) WRITE_FAN1(0); |
|
|
if (soft_pwm_count_fan[1] <= pwm_count_tmp) WRITE_FAN1(0); |
|
|
#endif |
|
|
#endif |
|
|
#if HAS_FAN2 |
|
|
#if HAS_FAN2 |
|
|
if (soft_pwm_fan[2] <= pwm_count_tmp) WRITE_FAN2(0); |
|
|
if (soft_pwm_count_fan[2] <= pwm_count_tmp) WRITE_FAN2(0); |
|
|
#endif |
|
|
#endif |
|
|
#endif // FAN_SOFT_PWM
|
|
|
#endif // FAN_SOFT_PWM
|
|
|
|
|
|
|
|
|