|
@@ -7,22 +7,47 @@
|
|
#include "Marlin.h"
|
|
#include "Marlin.h"
|
|
#include "pins.h"
|
|
#include "pins.h"
|
|
#include "fastio.h"
|
|
#include "fastio.h"
|
|
-// #include "Timer.h"
|
|
|
|
|
|
+#include "Timer.h"
|
|
// #include "Configuration.h"
|
|
// #include "Configuration.h"
|
|
|
|
|
|
#ifdef LCD_BL_PIN
|
|
#ifdef LCD_BL_PIN
|
|
|
|
|
|
int16_t backlightLevel = 0;
|
|
int16_t backlightLevel = 0;
|
|
int16_t backlightLevel_old = 0;
|
|
int16_t backlightLevel_old = 0;
|
|
-// uint16_t backlightCounter = 0;
|
|
|
|
|
|
+unsigned long backlightTimer_period = 10000ul;
|
|
|
|
+bool backlightIsDimmed = true;
|
|
|
|
+LongTimer backlightTimer;
|
|
|
|
+
|
|
|
|
+static void backlightDim()
|
|
|
|
+{
|
|
|
|
+ // if (backlightIsDimmed) return;
|
|
|
|
+ backlightLevel /= 4; //make the display half as bright.
|
|
|
|
+ backlightIsDimmed = true;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+static void backlightWake()
|
|
|
|
+{
|
|
|
|
+ // if (!backlightIsDimmed) return;
|
|
|
|
+ backlightLevel = eeprom_read_byte((uint8_t *)EEPROM_BACKLIGHT_LEVEL);
|
|
|
|
+ backlightIsDimmed = false;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+void backlightTimer_reset() //used for resetting the timer and waking the display
|
|
|
|
+{
|
|
|
|
+ backlightTimer.start();
|
|
|
|
+ if (backlightIsDimmed) backlightWake();
|
|
|
|
+}
|
|
|
|
|
|
void backlight_update()
|
|
void backlight_update()
|
|
{
|
|
{
|
|
- if (backlightLevel != backlightLevel_old) //update level
|
|
|
|
|
|
+ if (backlightTimer.expired(backlightTimer_period)) backlightDim();
|
|
|
|
+
|
|
|
|
+ if (backlightLevel != backlightLevel_old) //update pwm duty cycle
|
|
{
|
|
{
|
|
analogWrite(LCD_BL_PIN, backlightLevel);
|
|
analogWrite(LCD_BL_PIN, backlightLevel);
|
|
backlightLevel_old = backlightLevel;
|
|
backlightLevel_old = backlightLevel;
|
|
- eeprom_update_byte((uint8_t *)EEPROM_BACKLIGHT_LEVEL, backlightLevel);
|
|
|
|
|
|
+
|
|
|
|
+ if (!backlightIsDimmed) eeprom_update_byte((uint8_t *)EEPROM_BACKLIGHT_LEVEL, backlightLevel); //update eeprom value
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@@ -30,8 +55,8 @@ void backlight_init()
|
|
{
|
|
{
|
|
SET_OUTPUT(LCD_BL_PIN);
|
|
SET_OUTPUT(LCD_BL_PIN);
|
|
WRITE(LCD_BL_PIN,0);
|
|
WRITE(LCD_BL_PIN,0);
|
|
- backlightLevel = eeprom_read_byte((uint8_t *)EEPROM_BACKLIGHT_LEVEL);
|
|
|
|
- backlight_update();
|
|
|
|
|
|
+ backlightTimer_reset(); //initializes eeprom data and starts backlightTimer
|
|
|
|
+ backlight_update(); //actually sets the backlight to the correct level
|
|
}
|
|
}
|
|
|
|
|
|
#endif //LCD_BL_PIN
|
|
#endif //LCD_BL_PIN
|