Cleanup of temperature code
- Reduce calls to millis() - General cleanup of manage_heaters - General cleanup of pid autotune - Formatting here & there - Macros to clean up and shrink ISR code (reduced by ~364 lines)
This commit is contained in:
parent
e6af82ba2f
commit
9c9726d469
@ -6,6 +6,10 @@
|
|||||||
#error Oops! Make sure you have 'Arduino Mega' selected from the 'Tools -> Boards' menu.
|
#error Oops! Make sure you have 'Arduino Mega' selected from the 'Tools -> Boards' menu.
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if EXTRUDERS > 3
|
||||||
|
#error RUMBA supports up to 3 extruders. Comment this line to keep going.
|
||||||
|
#endif
|
||||||
|
|
||||||
#define X_STEP_PIN 17
|
#define X_STEP_PIN 17
|
||||||
#define X_DIR_PIN 16
|
#define X_DIR_PIN 16
|
||||||
#define X_ENABLE_PIN 48
|
#define X_ENABLE_PIN 48
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -85,55 +85,25 @@ extern float current_temperature_bed;
|
|||||||
//inline so that there is no performance decrease.
|
//inline so that there is no performance decrease.
|
||||||
//deg=degreeCelsius
|
//deg=degreeCelsius
|
||||||
|
|
||||||
FORCE_INLINE float degHotend(uint8_t extruder) {
|
FORCE_INLINE float degHotend(uint8_t extruder) { return current_temperature[extruder]; }
|
||||||
return current_temperature[extruder];
|
FORCE_INLINE float degBed() { return current_temperature_bed; }
|
||||||
};
|
|
||||||
|
|
||||||
#ifdef SHOW_TEMP_ADC_VALUES
|
#ifdef SHOW_TEMP_ADC_VALUES
|
||||||
FORCE_INLINE float rawHotendTemp(uint8_t extruder) {
|
FORCE_INLINE float rawHotendTemp(uint8_t extruder) { return current_temperature_raw[extruder]; }
|
||||||
return current_temperature_raw[extruder];
|
FORCE_INLINE float rawBedTemp() { return current_temperature_bed_raw; }
|
||||||
};
|
|
||||||
|
|
||||||
FORCE_INLINE float rawBedTemp() {
|
|
||||||
return current_temperature_bed_raw;
|
|
||||||
};
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
FORCE_INLINE float degBed() {
|
FORCE_INLINE float degTargetHotend(uint8_t extruder) { return target_temperature[extruder]; }
|
||||||
return current_temperature_bed;
|
FORCE_INLINE float degTargetBed() { return target_temperature_bed; }
|
||||||
};
|
|
||||||
|
|
||||||
FORCE_INLINE float degTargetHotend(uint8_t extruder) {
|
FORCE_INLINE void setTargetHotend(const float &celsius, uint8_t extruder) { target_temperature[extruder] = celsius; }
|
||||||
return target_temperature[extruder];
|
FORCE_INLINE void setTargetBed(const float &celsius) { target_temperature_bed = celsius; }
|
||||||
};
|
|
||||||
|
|
||||||
FORCE_INLINE float degTargetBed() {
|
FORCE_INLINE bool isHeatingHotend(uint8_t extruder) { return target_temperature[extruder] > current_temperature[extruder]; }
|
||||||
return target_temperature_bed;
|
FORCE_INLINE bool isHeatingBed() { return target_temperature_bed > current_temperature_bed; }
|
||||||
};
|
|
||||||
|
|
||||||
FORCE_INLINE void setTargetHotend(const float &celsius, uint8_t extruder) {
|
FORCE_INLINE bool isCoolingHotend(uint8_t extruder) { return target_temperature[extruder] < current_temperature[extruder]; }
|
||||||
target_temperature[extruder] = celsius;
|
FORCE_INLINE bool isCoolingBed() { return target_temperature_bed < current_temperature_bed; }
|
||||||
};
|
|
||||||
|
|
||||||
FORCE_INLINE void setTargetBed(const float &celsius) {
|
|
||||||
target_temperature_bed = celsius;
|
|
||||||
};
|
|
||||||
|
|
||||||
FORCE_INLINE bool isHeatingHotend(uint8_t extruder){
|
|
||||||
return target_temperature[extruder] > current_temperature[extruder];
|
|
||||||
};
|
|
||||||
|
|
||||||
FORCE_INLINE bool isHeatingBed() {
|
|
||||||
return target_temperature_bed > current_temperature_bed;
|
|
||||||
};
|
|
||||||
|
|
||||||
FORCE_INLINE bool isCoolingHotend(uint8_t extruder) {
|
|
||||||
return target_temperature[extruder] < current_temperature[extruder];
|
|
||||||
};
|
|
||||||
|
|
||||||
FORCE_INLINE bool isCoolingBed() {
|
|
||||||
return target_temperature_bed < current_temperature_bed;
|
|
||||||
};
|
|
||||||
|
|
||||||
#define degHotend0() degHotend(0)
|
#define degHotend0() degHotend(0)
|
||||||
#define degTargetHotend0() degTargetHotend(0)
|
#define degTargetHotend0() degTargetHotend(0)
|
||||||
@ -141,38 +111,36 @@ FORCE_INLINE bool isCoolingBed() {
|
|||||||
#define isHeatingHotend0() isHeatingHotend(0)
|
#define isHeatingHotend0() isHeatingHotend(0)
|
||||||
#define isCoolingHotend0() isCoolingHotend(0)
|
#define isCoolingHotend0() isCoolingHotend(0)
|
||||||
#if EXTRUDERS > 1
|
#if EXTRUDERS > 1
|
||||||
#define degHotend1() degHotend(1)
|
#define degHotend1() degHotend(1)
|
||||||
#define degTargetHotend1() degTargetHotend(1)
|
#define degTargetHotend1() degTargetHotend(1)
|
||||||
#define setTargetHotend1(_celsius) setTargetHotend((_celsius), 1)
|
#define setTargetHotend1(_celsius) setTargetHotend((_celsius), 1)
|
||||||
#define isHeatingHotend1() isHeatingHotend(1)
|
#define isHeatingHotend1() isHeatingHotend(1)
|
||||||
#define isCoolingHotend1() isCoolingHotend(1)
|
#define isCoolingHotend1() isCoolingHotend(1)
|
||||||
#else
|
#else
|
||||||
#define setTargetHotend1(_celsius) do{}while(0)
|
#define setTargetHotend1(_celsius) do{}while(0)
|
||||||
#endif
|
#endif
|
||||||
#if EXTRUDERS > 2
|
#if EXTRUDERS > 2
|
||||||
#define degHotend2() degHotend(2)
|
#define degHotend2() degHotend(2)
|
||||||
#define degTargetHotend2() degTargetHotend(2)
|
#define degTargetHotend2() degTargetHotend(2)
|
||||||
#define setTargetHotend2(_celsius) setTargetHotend((_celsius), 2)
|
#define setTargetHotend2(_celsius) setTargetHotend((_celsius), 2)
|
||||||
#define isHeatingHotend2() isHeatingHotend(2)
|
#define isHeatingHotend2() isHeatingHotend(2)
|
||||||
#define isCoolingHotend2() isCoolingHotend(2)
|
#define isCoolingHotend2() isCoolingHotend(2)
|
||||||
#else
|
#else
|
||||||
#define setTargetHotend2(_celsius) do{}while(0)
|
#define setTargetHotend2(_celsius) do{}while(0)
|
||||||
#endif
|
#endif
|
||||||
#if EXTRUDERS > 3
|
#if EXTRUDERS > 3
|
||||||
#define degHotend3() degHotend(3)
|
#define degHotend3() degHotend(3)
|
||||||
#define degTargetHotend3() degTargetHotend(3)
|
#define degTargetHotend3() degTargetHotend(3)
|
||||||
#define setTargetHotend3(_celsius) setTargetHotend((_celsius), 3)
|
#define setTargetHotend3(_celsius) setTargetHotend((_celsius), 3)
|
||||||
#define isHeatingHotend3() isHeatingHotend(3)
|
#define isHeatingHotend3() isHeatingHotend(3)
|
||||||
#define isCoolingHotend3() isCoolingHotend(3)
|
#define isCoolingHotend3() isCoolingHotend(3)
|
||||||
#else
|
#else
|
||||||
#define setTargetHotend3(_celsius) do{}while(0)
|
#define setTargetHotend3(_celsius) do{}while(0)
|
||||||
#endif
|
#endif
|
||||||
#if EXTRUDERS > 4
|
#if EXTRUDERS > 4
|
||||||
#error Invalid number of extruders
|
#error Invalid number of extruders
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
int getHeaterPower(int heater);
|
int getHeaterPower(int heater);
|
||||||
void disable_heater();
|
void disable_heater();
|
||||||
void setWatch();
|
void setWatch();
|
||||||
@ -189,15 +157,14 @@ static bool thermal_runaway = false;
|
|||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
FORCE_INLINE void autotempShutdown(){
|
FORCE_INLINE void autotempShutdown() {
|
||||||
#ifdef AUTOTEMP
|
#ifdef AUTOTEMP
|
||||||
if(autotemp_enabled)
|
if (autotemp_enabled) {
|
||||||
{
|
autotemp_enabled = false;
|
||||||
autotemp_enabled=false;
|
if (degTargetHotend(active_extruder) > autotemp_min)
|
||||||
if(degTargetHotend(active_extruder)>autotemp_min)
|
setTargetHotend(0, active_extruder);
|
||||||
setTargetHotend(0,active_extruder);
|
}
|
||||||
}
|
#endif
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void PID_autotune(float temp, int extruder, int ncycles);
|
void PID_autotune(float temp, int extruder, int ncycles);
|
||||||
|
Loading…
Reference in New Issue
Block a user