Fix Phantom sleep LED.
This commit is contained in:
parent
9e84c89535
commit
28aeef231b
|
@ -39,6 +39,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
/* Set 0 if need no debouncing */
|
/* Set 0 if need no debouncing */
|
||||||
#define DEBOUNCE 7
|
#define DEBOUNCE 7
|
||||||
|
|
||||||
|
/* Set LED brightness 0-255.
|
||||||
|
* This have no effect if sleep LED is enabled. */
|
||||||
|
#define LED_BRIGHTNESS 250
|
||||||
|
|
||||||
/* key combination for command */
|
/* key combination for command */
|
||||||
#define IS_COMMAND() ( \
|
#define IS_COMMAND() ( \
|
||||||
keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
|
keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
|
||||||
|
|
|
@ -16,19 +16,34 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <avr/io.h>
|
#include <avr/io.h>
|
||||||
#include "stdint.h"
|
|
||||||
#include "led.h"
|
#include "led.h"
|
||||||
|
|
||||||
|
|
||||||
void led_set(uint8_t usb_led)
|
void led_set(uint8_t usb_led)
|
||||||
{
|
{
|
||||||
if (!(usb_led & (1<<USB_LED_CAPS_LOCK)))
|
if (usb_led & (1<<USB_LED_CAPS_LOCK))
|
||||||
DDRB &= ~(1<<6);
|
{
|
||||||
else
|
// Output high.
|
||||||
DDRB |= (1<<6);
|
DDRB |= (1<<6);
|
||||||
|
PORTB |= (1<<6);
|
||||||
if (!(usb_led & (1<<USB_LED_SCROLL_LOCK)))
|
}
|
||||||
DDRB &= ~(1<<7);
|
|
||||||
else
|
else
|
||||||
DDRB |= (1<<7);
|
{
|
||||||
|
// Output low.
|
||||||
|
DDRB &= ~(1<<6);
|
||||||
|
PORTB &= ~(1<<6);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (usb_led & (1<<USB_LED_SCROLL_LOCK))
|
||||||
|
{
|
||||||
|
// Output high.
|
||||||
|
DDRB &= ~(1<<7);
|
||||||
|
PORTB |= (1<<7);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Output low.
|
||||||
|
DDRB &= ~(1<<7);
|
||||||
|
PORTB &= ~(1<<7);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -32,6 +32,7 @@ static void init_rows(void);
|
||||||
static void unselect_cols(void);
|
static void unselect_cols(void);
|
||||||
static void select_col(uint8_t col);
|
static void select_col(uint8_t col);
|
||||||
|
|
||||||
|
#ifndef SLEEP_LED_ENABLE
|
||||||
/* LEDs are on output compare pins OC1B OC1C
|
/* LEDs are on output compare pins OC1B OC1C
|
||||||
This activates fast PWM mode on them.
|
This activates fast PWM mode on them.
|
||||||
Prescaler 256 and 8-bit counter results in
|
Prescaler 256 and 8-bit counter results in
|
||||||
|
@ -51,12 +52,13 @@ void setup_leds(void)
|
||||||
TCCR1B |= // Timer control register 1B
|
TCCR1B |= // Timer control register 1B
|
||||||
(1<<WGM12) | // Fast PWM 8-bit
|
(1<<WGM12) | // Fast PWM 8-bit
|
||||||
(1<<CS12); // Prescaler 256
|
(1<<CS12); // Prescaler 256
|
||||||
OCR1B = 250; // Output compare register 1B
|
OCR1B = LED_BRIGHTNESS; // Output compare register 1B
|
||||||
OCR1C = 250; // Output compare register 1C
|
OCR1C = LED_BRIGHTNESS; // Output compare register 1C
|
||||||
// LEDs: LED_A -> PORTB6, LED_B -> PORTB7
|
// LEDs: LED_A -> PORTB6, LED_B -> PORTB7
|
||||||
DDRB &= 0x3F;
|
DDRB |= (1<<6) | (1<<7);
|
||||||
PORTB &= 0x3F;
|
PORTB &= ~((1<<6) | (1<<7));
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
inline
|
inline
|
||||||
uint8_t matrix_rows(void)
|
uint8_t matrix_rows(void)
|
||||||
|
@ -79,7 +81,9 @@ void matrix_init(void)
|
||||||
// initialize row and col
|
// initialize row and col
|
||||||
unselect_cols();
|
unselect_cols();
|
||||||
init_rows();
|
init_rows();
|
||||||
|
#ifndef SLEEP_LED_ENABLE
|
||||||
setup_leds();
|
setup_leds();
|
||||||
|
#endif
|
||||||
|
|
||||||
// initialize matrix state: all keys off
|
// initialize matrix state: all keys off
|
||||||
for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
|
for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
|
||||||
|
|
Loading…
Reference in New Issue