this->designator = THEKERNEL->config->value(temperature_control_checksum, this->name_checksum, designator_checksum)->by_default(string("T"))->as_string();
// Runaway parameters
- this->runaway_range = THEKERNEL->config->value(temperature_control_checksum, this->name_checksum, runaway_range_checksum)->by_default(0)->as_number();
- this->runaway_heating_timeout = THEKERNEL->config->value(temperature_control_checksum, this->name_checksum, runaway_heating_timeout_checksum)->by_default(0)->as_number();
+ uint32_t n= THEKERNEL->config->value(temperature_control_checksum, this->name_checksum, runaway_range_checksum)->by_default(0)->as_number();
+ if(n > 63) n= 63;
+ this->runaway_range= n;
+ n= THEKERNEL->config->value(temperature_control_checksum, this->name_checksum, runaway_heating_timeout_checksum)->by_default(0)->as_number();
+ if(n > 511) n= 511;
+ this->runaway_heating_timeout = n;
// Max and min temperatures we are not allowed to get over (Safety)
this->max_temp = THEKERNEL->config->value(temperature_control_checksum, this->name_checksum, max_temp_checksum)->by_default(300)->as_number();
void set_desired_temperature(float desired_temperature);
float get_temperature();
-
+
enum RUNAWAY_TYPE {NOT_HEATING, WAITING_FOR_TEMP_TO_BE_REACHED, TARGET_TEMPERATURE_REACHED};
friend class PID_Autotuner;
float PIDdt;
// Temperature runaway values
- RUNAWAY_TYPE runaway_state;
+ RUNAWAY_TYPE runaway_state;
struct {
- uint8_t runaway_heating_timer:8;
// Temperature runaway config options
- uint8_t runaway_range:8;
- uint8_t runaway_heating_timeout:8;
+ uint8_t runaway_range:6; // max 63
+ uint16_t runaway_heating_timeout:9; // max 511
+ uint16_t runaway_heating_timer:9;
bool use_bangbang:1;
bool waiting:1;
bool temp_violated:1;