]> git.donarmstrong.com Git - qmk_firmware.git/blobdiff - keyboard/planck/backlight.c
Merge pull request #136 from cbbrowne/master
[qmk_firmware.git] / keyboard / planck / backlight.c
index 7eacaeed00a4a99d4519fdb878380b68797461c3..f69364b2afb619ea591cfc2577842c9e81b00b50 100644 (file)
@@ -7,7 +7,7 @@
 void backlight_init_ports()
 {
 
-    Setup PB7 as output and output low.
+    // Setup PB7 as output and output low.
     DDRB |= (1<<7);
     PORTB &= ~(1<<7);
     
@@ -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