@ -85,55 +85,25 @@ extern float current_temperature_bed;
//inline so that there is no performance decrease.
//deg=degreeCelsius
FORCE_INLINE float degHotend ( uint8_t extruder ) {
return current_temperature [ extruder ] ;
} ;
FORCE_INLINE float degHotend ( uint8_t extruder ) { return current_temperature [ extruder ] ; }
FORCE_INLINE float degBed ( ) { return current_temperature_bed ; }
# ifdef SHOW_TEMP_ADC_VALUES
FORCE_INLINE float rawHotendTemp ( uint8_t extruder ) {
return current_temperature_raw [ extruder ] ;
} ;
FORCE_INLINE float rawBedTemp ( ) {
return current_temperature_bed_raw ;
} ;
FORCE_INLINE float rawHotendTemp ( uint8_t extruder ) { return current_temperature_raw [ extruder ] ; }
FORCE_INLINE float rawBedTemp ( ) { return current_temperature_bed_raw ; }
# endif
FORCE_INLINE float degBed ( ) {
return current_temperature_bed ;
} ;
FORCE_INLINE float degTargetHotend ( uint8_t extruder ) { return target_temperature [ extruder ] ; }
FORCE_INLINE float degTargetBed ( ) { return target_temperature_bed ; }
FORCE_INLINE float degTargetHotend ( uint8_t extruder ) {
return target_temperature [ extruder ] ;
} ;
FORCE_INLINE void setTargetHotend ( const float & celsius , uint8_t extruder ) { target_temperature [ extruder ] = celsius ; }
FORCE_INLINE void setTargetBed ( const float & celsius ) { target_temperature_bed = celsius ; }
FORCE_INLINE float degTargetBed ( ) {
return target_temperature_bed ;
} ;
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 void setTargetHotend ( const float & celsius , uint8_t extruder ) {
target_temperature [ extruder ] = celsius ;
} ;
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 ;
} ;
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 degTargetHotend0() degTargetHotend(0)
@ -141,38 +111,36 @@ FORCE_INLINE bool isCoolingBed() {
# define isHeatingHotend0() isHeatingHotend(0)
# define isCoolingHotend0() isCoolingHotend(0)
# if EXTRUDERS > 1
# define degHotend1() degHotend(1)
# define degTargetHotend1() degTargetHotend(1)
# define setTargetHotend1(_celsius) setTargetHotend((_celsius), 1)
# define isHeatingHotend1() isHeatingHotend(1)
# define isCoolingHotend1() isCoolingHotend(1)
# define degHotend1() degHotend(1)
# define degTargetHotend1() degTargetHotend(1)
# define setTargetHotend1(_celsius) setTargetHotend((_celsius), 1)
# define isHeatingHotend1() isHeatingHotend(1)
# define isCoolingHotend1() isCoolingHotend(1)
# else
# define setTargetHotend1(_celsius) do{}while(0)
# define setTargetHotend1(_celsius) do{}while(0)
# endif
# if EXTRUDERS > 2
# define degHotend2() degHotend(2)
# define degTargetHotend2() degTargetHotend(2)
# define setTargetHotend2(_celsius) setTargetHotend((_celsius), 2)
# define isHeatingHotend2() isHeatingHotend(2)
# define isCoolingHotend2() isCoolingHotend(2)
# define degHotend2() degHotend(2)
# define degTargetHotend2() degTargetHotend(2)
# define setTargetHotend2(_celsius) setTargetHotend((_celsius), 2)
# define isHeatingHotend2() isHeatingHotend(2)
# define isCoolingHotend2() isCoolingHotend(2)
# else
# define setTargetHotend2(_celsius) do{}while(0)
# define setTargetHotend2(_celsius) do{}while(0)
# endif
# if EXTRUDERS > 3
# define degHotend3() degHotend(3)
# define degTargetHotend3() degTargetHotend(3)
# define setTargetHotend3(_celsius) setTargetHotend((_celsius), 3)
# define isHeatingHotend3() isHeatingHotend(3)
# define isCoolingHotend3() isCoolingHotend(3)
# define degHotend3() degHotend(3)
# define degTargetHotend3() degTargetHotend(3)
# define setTargetHotend3(_celsius) setTargetHotend((_celsius), 3)
# define isHeatingHotend3() isHeatingHotend(3)
# define isCoolingHotend3() isCoolingHotend(3)
# else
# define setTargetHotend3(_celsius) do{}while(0)
# define setTargetHotend3(_celsius) do{}while(0)
# endif
# if EXTRUDERS > 4
# error Invalid number of extruders
# error Invalid number of extruders
# endif
int getHeaterPower ( int heater ) ;
void disable_heater ( ) ;
void setWatch ( ) ;
@ -189,15 +157,14 @@ static bool thermal_runaway = false;
# endif
# endif
FORCE_INLINE void autotempShutdown ( ) {
# ifdef AUTOTEMP
if ( autotemp_enabled )
{
autotemp_enabled = false ;
if ( degTargetHotend ( active_extruder ) > autotemp_min )
setTargetHotend ( 0 , active_extruder ) ;
}
# endif
FORCE_INLINE void autotempShutdown ( ) {
# ifdef AUTOTEMP
if ( autotemp_enabled ) {
autotemp_enabled = false ;
if ( degTargetHotend ( active_extruder ) > autotemp_min )
setTargetHotend ( 0 , active_extruder ) ;
}
# endif
}
void PID_autotune ( float temp , int extruder , int ncycles ) ;