summaryrefslogtreecommitdiff
path: root/keyboard/atomic/backlight.c
diff options
context:
space:
mode:
Diffstat (limited to 'keyboard/atomic/backlight.c')
-rw-r--r--keyboard/atomic/backlight.c22
1 files changed, 17 insertions, 5 deletions
diff --git a/keyboard/atomic/backlight.c b/keyboard/atomic/backlight.c
index 06f103b4ac..f69364b2af 100644
--- a/keyboard/atomic/backlight.c
+++ b/keyboard/atomic/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