|
@@ -75,8 +75,13 @@ float current_temperature_bed = 0.0;
|
|
|
unsigned char fanSpeedSoftPwm;
|
|
|
#endif
|
|
|
|
|
|
+#if defined(LCD_PWM_PIN) && (LCD_PWM_PIN > -1)
|
|
|
+ unsigned char lcdSoftPwm = (LCD_PWM_MAX * 2 + 1); //set default value to maximum
|
|
|
+ unsigned char lcdBlinkDelay = 0; //lcd blinking delay (0 = no blink)
|
|
|
+#endif
|
|
|
+
|
|
|
unsigned char soft_pwm_bed;
|
|
|
-
|
|
|
+
|
|
|
#ifdef BABYSTEPPING
|
|
|
volatile int babystepsTodo[3]={0,0,0};
|
|
|
#endif
|
|
@@ -129,6 +134,12 @@ static volatile bool temp_meas_ready = false;
|
|
|
static unsigned long extruder_autofan_last_check;
|
|
|
#endif
|
|
|
|
|
|
+#if defined(LCD_PWM_PIN) && (LCD_PWM_PIN > -1)
|
|
|
+ static unsigned char soft_pwm_lcd = 0;
|
|
|
+ static unsigned char lcd_blink_delay = 0;
|
|
|
+ static bool lcd_blink_on = false;
|
|
|
+#endif
|
|
|
+
|
|
|
#if EXTRUDERS > 3
|
|
|
# error Unsupported number of extruders
|
|
|
#elif EXTRUDERS > 2
|
|
@@ -942,7 +953,12 @@ void tp_init()
|
|
|
#ifdef FAN_SOFT_PWM
|
|
|
soft_pwm_fan = fanSpeedSoftPwm / 2;
|
|
|
#endif
|
|
|
- #endif
|
|
|
+ #if defined(LCD_PWM_PIN) && (LCD_PWM_PIN > -1)
|
|
|
+ soft_pwm_lcd = lcdSoftPwm / 2;
|
|
|
+ lcd_blink_delay = lcdBlinkDelay;
|
|
|
+ lcd_blink_on = true;
|
|
|
+ #endif
|
|
|
+ #endif
|
|
|
|
|
|
#ifdef HEATER_0_USES_MAX6675
|
|
|
#ifndef SDSUPPORT
|
|
@@ -1507,15 +1523,16 @@ ISR(TIMER0_COMPB_vect)
|
|
|
/*
|
|
|
* standard PWM modulation
|
|
|
*/
|
|
|
- if(pwm_count == 0){
|
|
|
+ if (pwm_count == 0)
|
|
|
+ {
|
|
|
soft_pwm_0 = soft_pwm[0];
|
|
|
- if(soft_pwm_0 > 0) {
|
|
|
+ if(soft_pwm_0 > 0)
|
|
|
+ {
|
|
|
WRITE(HEATER_0_PIN,1);
|
|
|
#ifdef HEATERS_PARALLEL
|
|
|
WRITE(HEATER_1_PIN,1);
|
|
|
#endif
|
|
|
} else WRITE(HEATER_0_PIN,0);
|
|
|
-
|
|
|
#if EXTRUDERS > 1
|
|
|
soft_pwm_1 = soft_pwm[1];
|
|
|
if(soft_pwm_1 > 0) WRITE(HEATER_1_PIN,1); else WRITE(HEATER_1_PIN,0);
|
|
@@ -1533,12 +1550,35 @@ ISR(TIMER0_COMPB_vect)
|
|
|
if(soft_pwm_fan > 0) WRITE(FAN_PIN,1); else WRITE(FAN_PIN,0);
|
|
|
#endif
|
|
|
}
|
|
|
- if(soft_pwm_0 < pwm_count) {
|
|
|
+ if(soft_pwm_0 < pwm_count)
|
|
|
+ {
|
|
|
WRITE(HEATER_0_PIN,0);
|
|
|
#ifdef HEATERS_PARALLEL
|
|
|
WRITE(HEATER_1_PIN,0);
|
|
|
#endif
|
|
|
}
|
|
|
+#if defined(LCD_PWM_PIN) && (LCD_PWM_PIN > -1)
|
|
|
+ if ((pwm_count & LCD_PWM_MAX) == 0)
|
|
|
+ {
|
|
|
+ if (lcd_blink_delay)
|
|
|
+ {
|
|
|
+ lcd_blink_delay--;
|
|
|
+ if (lcd_blink_delay == 0)
|
|
|
+ {
|
|
|
+ lcd_blink_delay = lcdBlinkDelay;
|
|
|
+ lcd_blink_on = !lcd_blink_on;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ lcd_blink_delay = lcdBlinkDelay;
|
|
|
+ lcd_blink_on = true;
|
|
|
+ }
|
|
|
+ soft_pwm_lcd = (lcd_blink_on) ? (lcdSoftPwm / 2) : 0;
|
|
|
+ if (soft_pwm_lcd > 0) WRITE(LCD_PWM_PIN,1); else WRITE(LCD_PWM_PIN,0);
|
|
|
+ }
|
|
|
+#endif
|
|
|
+
|
|
|
#if EXTRUDERS > 1
|
|
|
if(soft_pwm_1 < pwm_count) WRITE(HEATER_1_PIN,0);
|
|
|
#endif
|
|
@@ -1551,10 +1591,13 @@ ISR(TIMER0_COMPB_vect)
|
|
|
#ifdef FAN_SOFT_PWM
|
|
|
if(soft_pwm_fan < pwm_count) WRITE(FAN_PIN,0);
|
|
|
#endif
|
|
|
+#if defined(LCD_PWM_PIN) && (LCD_PWM_PIN > -1)
|
|
|
+ if (soft_pwm_lcd < (pwm_count & LCD_PWM_MAX)) WRITE(LCD_PWM_PIN,0);
|
|
|
+#endif
|
|
|
|
|
|
pwm_count += (1 << SOFT_PWM_SCALE);
|
|
|
pwm_count &= 0x7f;
|
|
|
-
|
|
|
+
|
|
|
#else //ifndef SLOW_PWM_HEATERS
|
|
|
/*
|
|
|
* SLOW PWM HEATERS
|
|
@@ -1742,7 +1785,7 @@ ISR(TIMER0_COMPB_vect)
|
|
|
}
|
|
|
if (soft_pwm_fan < pwm_count) WRITE(FAN_PIN,0);
|
|
|
#endif
|
|
|
-
|
|
|
+
|
|
|
pwm_count += (1 << SOFT_PWM_SCALE);
|
|
|
pwm_count &= 0x7f;
|
|
|
|