~ruther/qmk_firmware

d5def73f6eccc3727d7aa192b9204322af2933ba — omkbd 7 years ago d7881f3
 sync the left and right backlight led control on ErgoDash (#3298)

* Hardware update

Backlight enable
Change pin
Add 2keys (68→70)

* change readme

* support rev1

change keymap path

* move ergodash.h

* sync the left and right backlight led

matrix.c is same as iris keyboad
backlight breathing is unstable,  so it comment out
2 files changed, 34 insertions(+), 4 deletions(-)

M keyboards/ergodash/matrix.c
M keyboards/ergodash/rev2/config.h
M keyboards/ergodash/matrix.c => keyboards/ergodash/matrix.c +32 -2
@@ 1,5 1,5 @@
/*
Copyright 2012 Jun Wako <wakojun@gmail.com>
Copyright 2017 Danny Nguyen <danny@keeb.io>

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


@@ 31,6 31,11 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
#include "config.h"
#include "timer.h"

#ifdef BACKLIGHT_ENABLE
    #include "backlight.h"
    extern backlight_config_t backlight_config;
#endif

#ifdef USE_I2C
#  include "i2c.h"
#else // USE_SERIAL


@@ 58,6 63,8 @@ static matrix_row_t matrix_debouncing[MATRIX_ROWS];

#define ERROR_DISCONNECT_COUNT 5

#define SERIAL_LED_ADDR 0x00

#define ROWS_PER_HAND (MATRIX_ROWS/2)

static uint8_t error_count = 0;


@@ 201,6 208,15 @@ int i2c_transaction(void) {
    err = i2c_master_write(0x00);
    if (err) goto i2c_error;

#ifdef BACKLIGHT_ENABLE
    // Write backlight level for slave to read
    err = i2c_master_write(backlight_config.enable ? backlight_config.level : 0);
#else
    // Write zero, so our byte index is the same
    err = i2c_master_write(0x00);
#endif
    if (err) goto i2c_error;

    // Start read
    err = i2c_master_start(SLAVE_I2C_ADDRESS + I2C_READ);
    if (err) goto i2c_error;


@@ 233,6 249,11 @@ int serial_transaction(void) {
    for (int i = 0; i < ROWS_PER_HAND; ++i) {
        matrix[slaveOffset+i] = serial_slave_buffer[i];
    }

#ifdef BACKLIGHT_ENABLE
    // Write backlight level for slave to read
    serial_master_buffer[SERIAL_LED_ADDR] = backlight_config.enable ? backlight_config.level : 0;
#endif
    return 0;
}
#endif


@@ 273,13 294,22 @@ void matrix_slave_scan(void) {
    int offset = (isLeftHand) ? 0 : ROWS_PER_HAND;

#ifdef USE_I2C
#ifdef BACKLIGHT_ENABLE
    // Read backlight level sent from master and update level on slave
    backlight_set(i2c_slave_buffer[0]);
#endif
    for (int i = 0; i < ROWS_PER_HAND; ++i) {
        i2c_slave_buffer[i] = matrix[offset+i];
        i2c_slave_buffer[i+1] = matrix[offset+i];
    }
#else // USE_SERIAL
    for (int i = 0; i < ROWS_PER_HAND; ++i) {
        serial_slave_buffer[i] = matrix[offset+i];
    }

#ifdef BACKLIGHT_ENABLE
    // Read backlight level sent from master and update level on slave
    backlight_set(serial_master_buffer[SERIAL_LED_ADDR]);
#endif
#endif
}


M keyboards/ergodash/rev2/config.h => keyboards/ergodash/rev2/config.h +2 -2
@@ 49,8 49,8 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
#ifdef BACKLIGHT_ENABLE
  #define BACKLIGHT_PIN B6
  #define BACKLIGHT_LEVELS 7
  #define BACKLIGHT_BREATHING
  #define BREATHING_PERIOD 4
//  #define BACKLIGHT_BREATHING
//  #define BREATHING_PERIOD 4
#endif

/* Set 0 if debouncing isn't needed */