From 529748894caaf47982411c0f600a3896cd344b81 Mon Sep 17 00:00:00 2001 From: daid303 Date: Wed, 5 Dec 2012 19:54:01 +0100 Subject: [PATCH] Minor changes in the temperature code for some cleanup. --- Marlin/temperature.cpp | 67 ++++++++++++++++++------------------------ 1 file changed, 28 insertions(+), 39 deletions(-) diff --git a/Marlin/temperature.cpp b/Marlin/temperature.cpp index 7aa8d88a5c..4a7f39c0fa 100644 --- a/Marlin/temperature.cpp +++ b/Marlin/temperature.cpp @@ -111,33 +111,24 @@ static volatile bool temp_meas_ready = false; unsigned long watchmillis = 0; #endif //WATCHPERIOD +#if EXTRUDERS > 3 +# error Unsupported number of extruders +#elif EXTRUDERS > 2 +# define ARRAY_BY_EXTRUDERS(v1, v2, v3) { v1, v2, v3 } +#elif EXTRUDERS > 1 +# define ARRAY_BY_EXTRUDERS(v1, v2, v3) { v1, v2 } +#else +# define ARRAY_BY_EXTRUDERS(v1, v2, v3) { v1 } +#endif + // Init min and max temp with extreme values to prevent false errors during startup - static int minttemp[EXTRUDERS] = { 0 }; - static int maxttemp[EXTRUDERS] = { 16383 }; // the first value used for all - static int bed_minttemp = 0; - static int bed_maxttemp = 16383; - static void *heater_ttbl_map[EXTRUDERS] = { (void *)heater_0_temptable -#if EXTRUDERS > 1 - , (void *)heater_1_temptable -#endif -#if EXTRUDERS > 2 - , (void *)heater_2_temptable -#endif -#if EXTRUDERS > 3 - #error Unsupported number of extruders -#endif - }; - static int heater_ttbllen_map[EXTRUDERS] = { heater_0_temptable_len -#if EXTRUDERS > 1 - , heater_1_temptable_len -#endif -#if EXTRUDERS > 2 - , heater_2_temptable_len -#endif -#if EXTRUDERS > 3 - #error Unsupported number of extruders -#endif - }; +static int minttemp[EXTRUDERS] = ARRAY_BY_EXTRUDERS(0, 0, 0); +static int maxttemp[EXTRUDERS] = ARRAY_BY_EXTRUDERS(16383, 16383, 16383); // the first value used for all +static int bed_minttemp = 0; +static int bed_maxttemp = 16383; +static void *heater_ttbl_map[EXTRUDERS] = ARRAY_BY_EXTRUDERS((void *)heater_0_temptable, (void *)heater_1_temptable, (void *)heater_2_temptable); +static int heater_ttbllen_map[EXTRUDERS] = ARRAY_BY_EXTRUDERS(heater_0_temptable_len, heater_1_temptable_len, heater_2_temptable_len); + //=========================================================================== //============================= functions ============================ @@ -820,6 +811,9 @@ void max_temp_error(uint8_t e) { SERIAL_ERRORLN((int)e); SERIAL_ERRORLNPGM(": Extruder switched off. MAXTEMP triggered !"); } + #ifndef BOGUS_TEMPERATURE_FAILSAFE_OVERRIDE + Stop(); + #endif } void min_temp_error(uint8_t e) { @@ -829,6 +823,9 @@ void min_temp_error(uint8_t e) { SERIAL_ERRORLN((int)e); SERIAL_ERRORLNPGM(": Extruder switched off. MINTEMP triggered !"); } + #ifndef BOGUS_TEMPERATURE_FAILSAFE_OVERRIDE + Stop(); + #endif } void bed_max_temp_error(void) { @@ -839,16 +836,19 @@ void bed_max_temp_error(void) { SERIAL_ERROR_START; SERIAL_ERRORLNPGM("Temperature heated bed switched off. MAXTEMP triggered !!"); } + #ifndef BOGUS_TEMPERATURE_FAILSAFE_OVERRIDE + Stop(); + #endif } -#define HEAT_INTERVAL 250 #ifdef HEATER_0_USES_MAX6675 +#define MAX6675_HEAT_INTERVAL 250 long max6675_previous_millis = -HEAT_INTERVAL; int max6675_temp = 2000; int read_max6675() { - if (millis() - max6675_previous_millis < HEAT_INTERVAL) + if (millis() - max6675_previous_millis < MAX6675_HEAT_INTERVAL) return max6675_temp; max6675_previous_millis = millis(); @@ -1077,20 +1077,10 @@ ISR(TIMER0_COMPB_vect) if(current_raw[e] >= maxttemp[e]) { target_raw[e] = 0; max_temp_error(e); - #ifndef BOGUS_TEMPERATURE_FAILSAFE_OVERRIDE - { - Stop();; - } - #endif } if(current_raw[e] <= minttemp[e]) { target_raw[e] = 0; min_temp_error(e); - #ifndef BOGUS_TEMPERATURE_FAILSAFE_OVERRIDE - { - Stop(); - } - #endif } } @@ -1098,7 +1088,6 @@ ISR(TIMER0_COMPB_vect) if(current_raw_bed >= bed_maxttemp) { target_raw_bed = 0; bed_max_temp_error(); - Stop(); } #endif }