led init code missing pwm writes for Frame 1
This commit is contained in:
parent
dda858c437
commit
d8e9c183be
2 changed files with 41 additions and 16 deletions
|
@ -62,7 +62,7 @@ const uint16_t keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
_______,_______,_______,_______,_______,_______,_______, _______, _______, _______,KC_MUTE, KC_VOLD, KC_VOLU,_______,KC_NO,\
|
_______,_______,_______,_______,_______,_______,_______, _______, _______, _______,KC_MUTE, KC_VOLD, KC_VOLU,_______,KC_NO,\
|
||||||
_______,_______,_______,_______,_______,_______,_______, _______, _______, _______,_______, _______,_______,_______,\
|
_______,_______,_______,_______,_______,_______,_______, _______, _______, _______,_______, _______,_______,_______,\
|
||||||
_______,_______,_______,_______,_______,_______,_______, _______, _______, _______,_______, _______,_______, \
|
_______,_______,_______,_______,_______,_______,_______, _______, _______, _______,_______, _______,_______, \
|
||||||
_______,_______,F(2),F(3),F(4),_______,_______, _______, KC_MPRV, KC_MNXT,KC_MSTP, _______,KC_NO, \
|
_______,_______,F(2),F(3),F(4),F(5),F(6),F(7), KC_MPRV, KC_MNXT,KC_MSTP, _______,KC_NO, \
|
||||||
_______,_______,_______, KC_MPLY, _______,_______, _______,_______ \
|
_______,_______,_______, KC_MPLY, _______,_______, _______,_______ \
|
||||||
),
|
),
|
||||||
/* ~ */
|
/* ~ */
|
||||||
|
@ -91,7 +91,9 @@ enum function_id {
|
||||||
enum macro_id {
|
enum macro_id {
|
||||||
ACTION_LEDS_ALL,
|
ACTION_LEDS_ALL,
|
||||||
ACTION_LEDS_GAME,
|
ACTION_LEDS_GAME,
|
||||||
ACTION_LED_1
|
ACTION_LEDS_NAV,
|
||||||
|
ACTION_LEDS_MEDIA,
|
||||||
|
ACTION_LEDS_NUMPAD
|
||||||
};
|
};
|
||||||
|
|
||||||
/* ==================================
|
/* ==================================
|
||||||
|
@ -170,7 +172,9 @@ const uint16_t fn_actions[] = {
|
||||||
[1] = ACTION_LAYER_MODS(_TILDE, MOD_LSFT),
|
[1] = ACTION_LAYER_MODS(_TILDE, MOD_LSFT),
|
||||||
[2] = ACTION_FUNCTION(ACTION_LEDS_ALL),
|
[2] = ACTION_FUNCTION(ACTION_LEDS_ALL),
|
||||||
[3] = ACTION_FUNCTION(ACTION_LEDS_GAME),
|
[3] = ACTION_FUNCTION(ACTION_LEDS_GAME),
|
||||||
[4] = ACTION_FUNCTION(ACTION_LED_1)
|
[4] = ACTION_FUNCTION(ACTION_LEDS_MEDIA),
|
||||||
|
[5] = ACTION_FUNCTION(ACTION_LEDS_NAV),
|
||||||
|
[6] = ACTION_FUNCTION(ACTION_LEDS_NUMPAD)
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -182,23 +186,35 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
|
||||||
case ACTION_LEDS_ALL:
|
case ACTION_LEDS_ALL:
|
||||||
if(record->event.pressed) {
|
if(record->event.pressed) {
|
||||||
// signal the LED controller thread
|
// signal the LED controller thread
|
||||||
msg=(TOGGLE_LED << 8) | 12;
|
msg=(TOGGLE_ALL << 8) | 0;
|
||||||
chMBPost(&led_mailbox, msg, TIME_IMMEDIATE);
|
chMBPost(&led_mailbox, msg, TIME_IMMEDIATE);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case ACTION_LEDS_GAME:
|
case ACTION_LEDS_GAME:
|
||||||
if(record->event.pressed) {
|
if(record->event.pressed) {
|
||||||
// signal the LED controller thread
|
// signal the LED controller thread
|
||||||
msg=(TOGGLE_LAYER_LEDS << 8) | 5;
|
msg=(TOGGLE_LED << 8) | 11;
|
||||||
chMBPost(&led_mailbox, msg, TIME_IMMEDIATE);
|
chMBPost(&led_mailbox, msg, TIME_IMMEDIATE);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case ACTION_LED_1:
|
case ACTION_LEDS_NAV:
|
||||||
if(record->event.pressed) {
|
if(record->event.pressed) {
|
||||||
// signal the LED controller thread
|
// signal the LED controller thread
|
||||||
chMBPost(&led_mailbox, ADDR_LED_1, TIME_IMMEDIATE);
|
msg=(TOGGLE_LAYER_LEDS << 8) | 3;
|
||||||
|
chMBPost(&led_mailbox, msg, TIME_IMMEDIATE);
|
||||||
|
}
|
||||||
|
case ACTION_LEDS_NUMPAD:
|
||||||
|
if(record->event.pressed) {
|
||||||
|
// signal the LED controller thread
|
||||||
|
msg=(TOGGLE_LAYER_LEDS << 8) | 4;
|
||||||
|
chMBPost(&led_mailbox, msg, TIME_IMMEDIATE);
|
||||||
|
}
|
||||||
|
case ACTION_LEDS_MEDIA:
|
||||||
|
if(record->event.pressed) {
|
||||||
|
// signal the LED controller thread
|
||||||
|
msg=(TOGGLE_LAYER_LEDS << 8) | 5;
|
||||||
|
chMBPost(&led_mailbox, msg, TIME_IMMEDIATE);
|
||||||
}
|
}
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -122,7 +122,6 @@ msg_t is31_write_register(uint8_t page, uint8_t reg, uint8_t data) {
|
||||||
is31_select_page(page);
|
is31_select_page(page);
|
||||||
tx[0] = reg;
|
tx[0] = reg;
|
||||||
tx[1] = data;
|
tx[1] = data;
|
||||||
xprintf("page display: %X\n", page);
|
|
||||||
return i2cMasterTransmitTimeout(&I2CD1, IS31_ADDR_DEFAULT, tx, 2, NULL, 0, US2ST(IS31_TIMEOUT));
|
return i2cMasterTransmitTimeout(&I2CD1, IS31_ADDR_DEFAULT, tx, 2, NULL, 0, US2ST(IS31_TIMEOUT));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -379,6 +378,8 @@ void set_led_bit (uint8_t *led_control_reg, uint8_t msg_led, uint8_t toggle_on)
|
||||||
////first byte is register address 0x00
|
////first byte is register address 0x00
|
||||||
row_byte = ((msg_led / 10) % 10 - 1 ) * 2 + 1;
|
row_byte = ((msg_led / 10) % 10 - 1 ) * 2 + 1;
|
||||||
column_bit = 1<<(msg_led % 10 - 1);
|
column_bit = 1<<(msg_led % 10 - 1);
|
||||||
|
xprintf("row %X\n", row_byte);
|
||||||
|
xprintf("col %X\n", column_bit);
|
||||||
|
|
||||||
if (toggle_on) {
|
if (toggle_on) {
|
||||||
led_control_reg[row_byte] |= 1<<(column_bit);
|
led_control_reg[row_byte] |= 1<<(column_bit);
|
||||||
|
@ -451,16 +452,24 @@ void led_controller_init(void) {
|
||||||
/* initialise IS31 chip */
|
/* initialise IS31 chip */
|
||||||
is31_init();
|
is31_init();
|
||||||
|
|
||||||
/* enable LEDs on all pages */
|
|
||||||
full_page[0] = 0;
|
|
||||||
__builtin_memcpy(full_page+1, is31_ic60_leds_mask, 0x12);
|
|
||||||
for(i=0; i<8; i++) {
|
|
||||||
is31_write_data(i, full_page, 1+0x12);
|
|
||||||
}
|
|
||||||
|
|
||||||
//set Display Option Register so all pwm intensity is controlled from Frame 1
|
//set Display Option Register so all pwm intensity is controlled from Frame 1
|
||||||
is31_write_register(IS31_FUNCTIONREG, IS31_REG_DISPLAYOPT, IS31_REG_DISPLAYOPT_INTENSITY_SAME);
|
is31_write_register(IS31_FUNCTIONREG, IS31_REG_DISPLAYOPT, IS31_REG_DISPLAYOPT_INTENSITY_SAME);
|
||||||
|
|
||||||
|
/* set full pwm on Frame 1 */
|
||||||
|
for(i=1; i<9; i++) {
|
||||||
|
pwm_reg_array[i]=0xFF;
|
||||||
|
}
|
||||||
|
for(i=0; i<8; i++) {
|
||||||
|
pwm_reg_array[0] = 0x24 + (i * 0x10);//first byte of 9 bytes must be register address
|
||||||
|
is31_write_data(0, pwm_reg_array, 9);
|
||||||
|
chThdSleepMilliseconds(5);
|
||||||
|
}
|
||||||
|
|
||||||
|
//set all led bits on for Frame 2 LEDS_ALL
|
||||||
|
full_page[0] = 0;
|
||||||
|
__builtin_memcpy(full_page+1, is31_ic60_leds_mask, 0x12);
|
||||||
|
is31_write_data(1, full_page, 1+0x12);
|
||||||
|
|
||||||
/* enable breathing when the displayed page changes */
|
/* enable breathing when the displayed page changes */
|
||||||
// Fade-in Fade-out, time = 26ms * 2^N, N=3
|
// Fade-in Fade-out, time = 26ms * 2^N, N=3
|
||||||
is31_write_register(IS31_FUNCTIONREG, IS31_REG_BREATHCTRL1, (3<<4)|3);
|
is31_write_register(IS31_FUNCTIONREG, IS31_REG_BREATHCTRL1, (3<<4)|3);
|
||||||
|
|
Loading…
Reference in a new issue