Reduce, clean up code for mintemp/maxtemp tests

This commit is contained in:
Scott Lahteine 2016-10-22 10:14:15 -05:00
parent ad64723354
commit f888597197

View File

@ -1758,6 +1758,9 @@ void Temperature::isr() {
} // switch(temp_state) } // switch(temp_state)
if (temp_count >= OVERSAMPLENR) { // 10 * 16 * 1/(16000000/64/256) = 164ms. if (temp_count >= OVERSAMPLENR) { // 10 * 16 * 1/(16000000/64/256) = 164ms.
temp_count = 0;
// Update the raw values if they've been read. Else we could be updating them during reading. // Update the raw values if they've been read. Else we could be updating them during reading.
if (!temp_meas_ready) set_current_temp_raw(); if (!temp_meas_ready) set_current_temp_raw();
@ -1766,85 +1769,54 @@ void Temperature::isr() {
current_raw_filwidth = raw_filwidth_value >> 10; // Divide to get to 0-16384 range since we used 1/128 IIR filter approach current_raw_filwidth = raw_filwidth_value >> 10; // Divide to get to 0-16384 range since we used 1/128 IIR filter approach
#endif #endif
temp_count = 0; ZERO(raw_temp_value);
for (int i = 0; i < 4; i++) raw_temp_value[i] = 0;
raw_temp_bed_value = 0; raw_temp_bed_value = 0;
#if HAS_TEMP_0 && DISABLED(HEATER_0_USES_MAX6675) int constexpr temp_dir[] = {
#if HEATER_0_RAW_LO_TEMP > HEATER_0_RAW_HI_TEMP #if ENABLED(HEATER_0_USES_MAX6675)
#define GE0 <= 0
#elif HEATER_0_RAW_LO_TEMP > HEATER_0_RAW_HI_TEMP
-1
#else #else
#define GE0 >= 1
#endif #endif
if (current_temperature_raw[0] GE0 maxttemp_raw[0]) max_temp_error(0); #if HAS_TEMP_1 && HOTENDS > 1
if (minttemp_raw[0] GE0 current_temperature_raw[0] && !is_preheating(0) && target_temperature[0] > 0.0f) { #if HEATER_1_RAW_LO_TEMP > HEATER_1_RAW_HI_TEMP
#ifdef MAX_CONSECUTIVE_LOW_TEMPERATURE_ERROR_ALLOWED , -1
if (++consecutive_low_temperature_error[0] >= MAX_CONSECUTIVE_LOW_TEMPERATURE_ERROR_ALLOWED) #else
, 1
#endif #endif
min_temp_error(0);
}
#ifdef MAX_CONSECUTIVE_LOW_TEMPERATURE_ERROR_ALLOWED
else
consecutive_low_temperature_error[0] = 0;
#endif #endif
#endif #if HAS_TEMP_2 && HOTENDS > 2
#if HEATER_2_RAW_LO_TEMP > HEATER_2_RAW_HI_TEMP
, -1
#else
, 1
#endif
#endif
#if HAS_TEMP_3 && HOTENDS > 3
#if HEATER_3_RAW_LO_TEMP > HEATER_3_RAW_HI_TEMP
, -1
#else
, 1
#endif
#endif
};
#if HAS_TEMP_1 && HOTENDS > 1 for (uint8_t e = 0; e < COUNT(temp_dir); e++) {
#if HEATER_1_RAW_LO_TEMP > HEATER_1_RAW_HI_TEMP const int tdir = temp_dir[e], rawtemp = current_temperature_raw[e] * tdir;
#define GE1 <= if (rawtemp > maxttemp_raw[e] * tdir) max_temp_error(e);
#else if (rawtemp < minttemp_raw[e] * tdir && !is_preheating(e) && target_temperature[e] > 0.0f) {
#define GE1 >=
#endif
if (current_temperature_raw[1] GE1 maxttemp_raw[1]) max_temp_error(1);
if (minttemp_raw[1] GE1 current_temperature_raw[1] && !is_preheating(1) && target_temperature[1] > 0.0f) {
#ifdef MAX_CONSECUTIVE_LOW_TEMPERATURE_ERROR_ALLOWED #ifdef MAX_CONSECUTIVE_LOW_TEMPERATURE_ERROR_ALLOWED
if (++consecutive_low_temperature_error[1] >= MAX_CONSECUTIVE_LOW_TEMPERATURE_ERROR_ALLOWED) if (++consecutive_low_temperature_error[e] >= MAX_CONSECUTIVE_LOW_TEMPERATURE_ERROR_ALLOWED)
#endif #endif
min_temp_error(1); min_temp_error(e);
} }
#ifdef MAX_CONSECUTIVE_LOW_TEMPERATURE_ERROR_ALLOWED #ifdef MAX_CONSECUTIVE_LOW_TEMPERATURE_ERROR_ALLOWED
else else
consecutive_low_temperature_error[1] = 0; consecutive_low_temperature_error[e] = 0;
#endif #endif
#endif // TEMP_SENSOR_1 }
#if HAS_TEMP_2 && HOTENDS > 2
#if HEATER_2_RAW_LO_TEMP > HEATER_2_RAW_HI_TEMP
#define GE2 <=
#else
#define GE2 >=
#endif
if (current_temperature_raw[2] GE2 maxttemp_raw[2]) max_temp_error(2);
if (minttemp_raw[2] GE2 current_temperature_raw[2] && !is_preheating(2) && target_temperature[2] > 0.0f) {
#ifdef MAX_CONSECUTIVE_LOW_TEMPERATURE_ERROR_ALLOWED
if (++consecutive_low_temperature_error[2] >= MAX_CONSECUTIVE_LOW_TEMPERATURE_ERROR_ALLOWED)
#endif
min_temp_error(2);
}
#ifdef MAX_CONSECUTIVE_LOW_TEMPERATURE_ERROR_ALLOWED
else
consecutive_low_temperature_error[2] = 0;
#endif
#endif // TEMP_SENSOR_2
#if HAS_TEMP_3 && HOTENDS > 3
#if HEATER_3_RAW_LO_TEMP > HEATER_3_RAW_HI_TEMP
#define GE3 <=
#else
#define GE3 >=
#endif
if (current_temperature_raw[3] GE3 maxttemp_raw[3]) max_temp_error(3);
if (minttemp_raw[3] GE3 current_temperature_raw[3] && !is_preheating(3) && target_temperature[3] > 0.0f) {
#ifdef MAX_CONSECUTIVE_LOW_TEMPERATURE_ERROR_ALLOWED
if (++consecutive_low_temperature_error[3] >= MAX_CONSECUTIVE_LOW_TEMPERATURE_ERROR_ALLOWED)
#endif
min_temp_error(3);
}
#ifdef MAX_CONSECUTIVE_LOW_TEMPERATURE_ERROR_ALLOWED
else
consecutive_low_temperature_error[3] = 0;
#endif
#endif // TEMP_SENSOR_3
#if HAS_TEMP_BED #if HAS_TEMP_BED
#if HEATER_BED_RAW_LO_TEMP > HEATER_BED_RAW_HI_TEMP #if HEATER_BED_RAW_LO_TEMP > HEATER_BED_RAW_HI_TEMP