|
@@ -2194,14 +2194,18 @@ void Temperature::readings_ready() {
|
2194
|
2194
|
temp_chamber.acc = 0;
|
2195
|
2195
|
#endif
|
2196
|
2196
|
|
2197
|
|
- int constexpr temp_dir[] = {
|
|
2197
|
+ static constexpr int8_t temp_dir[] = {
|
2198
|
2198
|
#if ENABLED(HEATER_0_USES_MAX6675)
|
2199
|
|
- 0
|
|
2199
|
+ 0
|
2200
|
2200
|
#else
|
2201
|
2201
|
TEMPDIR(0)
|
2202
|
2202
|
#endif
|
2203
|
2203
|
#if HOTENDS > 1
|
2204
|
|
- , TEMPDIR(1)
|
|
2204
|
+ #if ENABLED(HEATER_1_USES_MAX6675)
|
|
2205
|
+ , 0
|
|
2206
|
+ #else
|
|
2207
|
+ , TEMPDIR(1)
|
|
2208
|
+ #endif
|
2205
|
2209
|
#if HOTENDS > 2
|
2206
|
2210
|
, TEMPDIR(2)
|
2207
|
2211
|
#if HOTENDS > 3
|
|
@@ -2221,23 +2225,26 @@ void Temperature::readings_ready() {
|
2221
|
2225
|
if (grace_period) return;
|
2222
|
2226
|
|
2223
|
2227
|
for (uint8_t e = 0; e < COUNT(temp_dir); e++) {
|
2224
|
|
- const int16_t tdir = temp_dir[e], rawtemp = temp_hotend[e].raw * tdir;
|
2225
|
|
- const bool heater_on = (temp_hotend[e].target > 0)
|
2226
|
|
- #if ENABLED(PIDTEMP)
|
2227
|
|
- || (temp_hotend[e].soft_pwm_amount > 0)
|
2228
|
|
- #endif
|
2229
|
|
- ;
|
2230
|
|
- if (rawtemp > temp_range[e].raw_max * tdir) max_temp_error(e);
|
2231
|
|
- if (heater_on && rawtemp < temp_range[e].raw_min * tdir && !is_preheating(e)) {
|
|
2228
|
+ const int8_t tdir = temp_dir[e];
|
|
2229
|
+ if (tdir) {
|
|
2230
|
+ const int16_t rawtemp = temp_hotend[e].raw * tdir; // normal direction, +rawtemp, else -rawtemp
|
|
2231
|
+ const bool heater_on = (temp_hotend[e].target > 0
|
|
2232
|
+ #if ENABLED(PIDTEMP)
|
|
2233
|
+ || temp_hotend[e].soft_pwm_amount > 0
|
|
2234
|
+ #endif
|
|
2235
|
+ );
|
|
2236
|
+ if (rawtemp > temp_range[e].raw_max * tdir) max_temp_error(e);
|
|
2237
|
+ if (heater_on && rawtemp < temp_range[e].raw_min * tdir && !is_preheating(e)) {
|
|
2238
|
+ #ifdef MAX_CONSECUTIVE_LOW_TEMPERATURE_ERROR_ALLOWED
|
|
2239
|
+ if (++consecutive_low_temperature_error[e] >= MAX_CONSECUTIVE_LOW_TEMPERATURE_ERROR_ALLOWED)
|
|
2240
|
+ #endif
|
|
2241
|
+ min_temp_error(e);
|
|
2242
|
+ }
|
2232
|
2243
|
#ifdef MAX_CONSECUTIVE_LOW_TEMPERATURE_ERROR_ALLOWED
|
2233
|
|
- if (++consecutive_low_temperature_error[e] >= MAX_CONSECUTIVE_LOW_TEMPERATURE_ERROR_ALLOWED)
|
|
2244
|
+ else
|
|
2245
|
+ consecutive_low_temperature_error[e] = 0;
|
2234
|
2246
|
#endif
|
2235
|
|
- min_temp_error(e);
|
2236
|
2247
|
}
|
2237
|
|
- #ifdef MAX_CONSECUTIVE_LOW_TEMPERATURE_ERROR_ALLOWED
|
2238
|
|
- else
|
2239
|
|
- consecutive_low_temperature_error[e] = 0;
|
2240
|
|
- #endif
|
2241
|
2248
|
}
|
2242
|
2249
|
|
2243
|
2250
|
#if HAS_HEATED_BED
|