Forráskód Böngészése

Fixed brightness control; Reduced number of brightness levels to 4.

Ante Vukorepa 10 éve
szülő
commit
1f52d60ef1
2 módosított fájl, 20 hozzáadás és 11 törlés
  1. 17 5
      keyboard/planck/backlight.c
  2. 3 6
      keyboard/planck/config.h

+ 17 - 5
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));
     }
 }

+ 3 - 6
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