diff --git a/keyboard/planck/backlight.c b/keyboard/planck/backlight.c
index 06f103b4ac5a..f69364b2afb6 100644
--- a/keyboard/planck/backlight.c
+++ b/keyboard/planck/backlight.c
@@ -36,14 +36,26 @@ void backlight_set(uint8_t level)
{
// Turn off PWM control on PB7, revert to output low.
TCCR1A &= ~(_BV(COM1C1));
- // CHANNEL = level << OFFSET | 0x0FFF;
- CHANNEL = ((1 << level) - 1);
+ CHANNEL = 0x0;
+ // Prevent backlight blink on lowest level
+ PORTB &= ~(_BV(PORTB7));
}
- else
+ else if ( level == BACKLIGHT_LEVELS )
{
+ // Prevent backlight blink on lowest level
+ PORTB &= ~(_BV(PORTB7));
// Turn on PWM control of PB7
TCCR1A |= _BV(COM1C1);
- // CHANNEL = level << OFFSET | 0x0FFF;
- CHANNEL = ((1 << level) - 1);
+ // Set the brightness
+ CHANNEL = 0xFFFF;
+ }
+ else
+ {
+ // Prevent backlight blink on lowest level
+ PORTB &= ~(_BV(PORTB7));
+ // Turn on PWM control of PB7
+ TCCR1A |= _BV(COM1C1);
+ // Set the brightness
+ CHANNEL = 0xFFFF >> ((BACKLIGHT_LEVELS - level) * ((BACKLIGHT_LEVELS + 1) / 2));
}
}
\ No newline at end of file
diff --git a/keyboard/planck/config.h b/keyboard/planck/config.h
index 4e49a2b89793..7e95afddeaba 100644
--- a/keyboard/planck/config.h
+++ b/keyboard/planck/config.h
@@ -35,8 +35,7 @@ along with this program. If not, see .
//#define MATRIX_HAS_GHOST
/* number of backlight levels */
-/* NOTE: this is the max value of 0..BACKLIGHT_LEVELS so really 16 levels. */
-#define BACKLIGHT_LEVELS 15
+#define BACKLIGHT_LEVELS 3
/* Set 0 if debouncing isn't needed */
#define DEBOUNCE 5
@@ -51,18 +50,16 @@ along with this program. If not, see .
keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
)
-
-
/*
* Feature disable options
* These options are also useful to firmware size reduction.
*/
/* disable debug print */
-//#define NO_DEBUG
+#define NO_DEBUG
/* disable print */
-//#define NO_PRINT
+#define NO_PRINT
/* disable action features */
//#define NO_ACTION_LAYER