1
0

Add custom backlight feature

This commit is contained in:
Kai Ryu 2013-11-21 12:33:03 +09:00
parent 821578293c
commit 4f3b84f4c5
2 changed files with 77 additions and 0 deletions

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
keyboard/gh60/backlight.c Normal file
View File

@ -0,0 +1,54 @@
/*
Copyright 2013 Kai Ryu <kai1103@gmail.com>
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