~ruther/qmk_firmware

0aa0f75432feee66dde82ba8098b1c18eff0b3df — Jack Humbert 10 years ago b8c8ecb + 1f52d60
Merge pull request #25 from orcinus/master

Fixed brightness control; Reduced number of brightness levels to 4.
2 files changed, 20 insertions(+), 11 deletions(-)

M keyboard/planck/backlight.c
M keyboard/planck/config.h
M keyboard/planck/backlight.c => keyboard/planck/backlight.c +17 -5
@@ 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

M keyboard/planck/config.h => keyboard/planck/config.h +3 -6
@@ 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