|
|
@ -254,6 +254,11 @@ int getHeaterPower(int heater) { |
|
|
|
|
|
|
|
void manage_heater() |
|
|
|
{ |
|
|
|
#ifdef HEATER_BED_DUTY_CYCLE_DIVIDER |
|
|
|
static int bed_needs_heating=0; |
|
|
|
static int bed_is_on=0; |
|
|
|
#endif |
|
|
|
|
|
|
|
#ifdef USE_WATCHDOG |
|
|
|
wd_reset(); |
|
|
|
#endif |
|
|
@ -333,12 +338,26 @@ void manage_heater() |
|
|
|
} |
|
|
|
#endif |
|
|
|
|
|
|
|
#ifdef HEATER_BED_DUTY_CYCLE_DIVIDER |
|
|
|
if (bed_needs_heating){ |
|
|
|
if (bed_is_on==0) |
|
|
|
WRITE(HEATER_BED_PIN,HIGH); |
|
|
|
if (bed_is_on==1) |
|
|
|
WRITE(HEATER_BED_PIN,LOW); |
|
|
|
bed_is_on=(bed_is_on+1) % HEATER_BED_DUTY_CYCLE_DIVIDER; |
|
|
|
} |
|
|
|
#endif |
|
|
|
|
|
|
|
if(millis() - previous_millis_bed_heater < BED_CHECK_INTERVAL) |
|
|
|
return; |
|
|
|
previous_millis_bed_heater = millis(); |
|
|
|
|
|
|
|
#if TEMP_BED_PIN > -1 |
|
|
|
|
|
|
|
#ifdef HEATER_BED_DUTY_CYCLE_DIVIDER |
|
|
|
bed_needs_heating=0; |
|
|
|
#endif |
|
|
|
|
|
|
|
#ifndef BED_LIMIT_SWITCHING |
|
|
|
// Check if temperature is within the correct range
|
|
|
|
if((current_raw_bed > bed_minttemp) && (current_raw_bed < bed_maxttemp)) { |
|
|
@ -348,6 +367,9 @@ void manage_heater() |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
#ifdef HEATER_BED_DUTY_CYCLE_DIVIDER |
|
|
|
bed_needs_heating=1; |
|
|
|
#endif |
|
|
|
WRITE(HEATER_BED_PIN,HIGH); |
|
|
|
} |
|
|
|
} |
|
|
@ -364,6 +386,9 @@ void manage_heater() |
|
|
|
else |
|
|
|
if(current_raw_bed <= target_bed_low_temp) |
|
|
|
{ |
|
|
|
#ifdef HEATER_BED_DUTY_CYCLE_DIVIDER |
|
|
|
bed_needs_heating=1; |
|
|
|
#endif |
|
|
|
WRITE(HEATER_BED_PIN,HIGH); |
|
|
|
} |
|
|
|
} |
|
|
|