Browse Source

Add custom backlight feature

led_matrix
Kai Ryu 10 years ago
parent
commit
4f3b84f4c5
2 changed files with 77 additions and 0 deletions
  1. 23
    0
      common/backlight.c
  2. 54
    0
      keyboard/gh60/backlight.c

+ 23
- 0
common/backlight.c View File

@@ -33,6 +33,16 @@ void backlight_init(void)

void backlight_increase(void)
{
#ifdef BACKLIGHT_CUSTOM
if (backlight_config.enable) {
if (backlight_config.level < BACKLIGHT_LEVELS) {
backlight_config.level++;
eeconfig_write_backlight(backlight_config.raw);
}
dprintf("backlight custom increase: %u\n", backlight_config.level);
backlight_set(backlight_config.level);
}
#else
if(backlight_config.level < BACKLIGHT_LEVELS)
{
backlight_config.level++;
@@ -41,10 +51,22 @@ void backlight_increase(void)
}
dprintf("backlight increase: %u\n", backlight_config.level);
backlight_set(backlight_config.level);
#endif
}

void backlight_decrease(void)
{
#ifdef BACKLIGHT_CUSTOM
if (backlight_config.enable) {
if(backlight_config.level > 1)
{
backlight_config.level--;
eeconfig_write_backlight(backlight_config.raw);
}
dprintf("backlight custom decrease: %u\n", backlight_config.level);
backlight_set(backlight_config.level);
}
#else
if(backlight_config.level > 0)
{
backlight_config.level--;
@@ -53,6 +75,7 @@ void backlight_decrease(void)
}
dprintf("backlight decrease: %u\n", backlight_config.level);
backlight_set(backlight_config.level);
#endif
}

void backlight_toggle(void)

+ 54
- 0
keyboard/gh60/backlight.c View File

@@ -0,0 +1,54 @@
/*
Copyright 2013 Kai Ryu <[email protected]>

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/

#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/pgmspace.h>
#include "backlight.h"

#ifdef GH60_REV_C
static const uint8_t backlight_table[] PROGMEM = {
0, 16, 128, 255
};

/* Backlight pin configuration
* PWM: PB7
*/
void backlight_set(uint8_t level)
{
if (level > 0) {
// Turn on PWM
cli();
DDRB |= (1<<PB6);
TCCR1A |= ( (1<<WGM10) | (1<<COM1B1) );
TCCR1B |= ( (1<<CS11) | (1<<CS10) );
sei();
// Set PWM
OCR1B = pgm_read_byte(&backlight_table[level]);
}
else {
// Turn off PWM
cli();
DDRB &= ~(1<<PB6);
TCCR1A &= ~( (1<<WGM10) | (1<<COM1B1) );
TCCR1B &= ~( (1<<CS11) | (1<<CS10) );
sei();
// Set PWM
OCR1B = 0;
}
}
#endif