diff options
-rw-r--r-- | keyboard/planck/backlight.c | 22 | ||||
-rw-r--r-- | keyboard/planck/config.h | 9 |
2 files changed, 20 insertions, 11 deletions
diff --git a/keyboard/planck/backlight.c b/keyboard/planck/backlight.c index 06f103b4a..f69364b2a 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 4e49a2b89..7e95afdde 100644 --- a/keyboard/planck/config.h +++ b/keyboard/planck/config.h @@ -35,8 +35,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. //#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 <http://www.gnu.org/licenses/>. 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 |