~ruther/qmk_firmware

b8564f5dd08f49ee0fc6d28957a376132bd7038d — Jack Humbert 7 years ago 998ddbb
revert some attempts, update i2c
M drivers/avr/i2c_master.c => drivers/avr/i2c_master.c +1 -1
@@ 21,7 21,7 @@ void i2c_init(void)
uint8_t i2c_start(uint8_t address)
{
	// reset TWI control register
	//TWCR = 0;
	TWCR = 0;
	// transmit START condition
	TWCR = (1<<TWINT) | (1<<TWSTA) | (1<<TWEN);
	// wait for end of transmission

M keyboards/ergodox_ez/config.h => keyboards/ergodox_ez/config.h +2 -3
@@ 81,10 81,9 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
/* fix space cadet rollover issue */
#define DISABLE_SPACE_CADET_ROLLOVER

// #define RGB_MIDI
#define RGBW_BB_TWI
// #define RGBW_BB_TWI

#define RGBW 1
// #define RGBW 1

/* "debounce" is measured in keyboard scans. Some users reported
 * needing values as high as 15, which was at the time around 50ms.

M keyboards/ergodox_ez/ergodox_ez.c => keyboards/ergodox_ez/ergodox_ez.c +7 -7
@@ 113,13 113,13 @@ uint8_t init_mcp23018(void) {
    // sreg_prev=SREG;
    // cli();

    // if (i2c_initialized == 0) {
    //     i2c_init();  // on pins D(1,0)
    //     i2c_initialized = true;
    //     _delay_ms(1000);
    // }
    i2c_init(); // on pins D(1,0)
    _delay_ms(1000);
    if (i2c_initialized == 0) {
        i2c_init();  // on pins D(1,0)
        i2c_initialized = true;
        _delay_ms(1000);
    }
    // i2c_init(); // on pins D(1,0)
    // _delay_ms(1000);

    // set pin direction
    // - unused  : input  : 1

M keyboards/ergodox_ez/matrix.c => keyboards/ergodox_ez/matrix.c +4 -4
@@ 68,8 68,8 @@ static void init_cols(void);
static void unselect_rows(void);
static void select_row(uint8_t row);

// static uint8_t mcp23018_reset_loop;
static uint16_t mcp23018_reset_loop;
static uint8_t mcp23018_reset_loop;
// static uint16_t mcp23018_reset_loop;

#ifdef DEBUG_MATRIX_SCAN_RATE
uint32_t matrix_timer;


@@ 176,8 176,8 @@ void debounce_report(matrix_row_t change, uint8_t row) {
uint8_t matrix_scan(void)
{
    if (mcp23018_status) { // if there was an error
        // if (++mcp23018_reset_loop == 0) {
        if (++mcp23018_reset_loop >= 1300) {
        if (++mcp23018_reset_loop == 0) {
        // if (++mcp23018_reset_loop >= 1300) {
            // since mcp23018_reset_loop is 8 bit - we'll try to reset once in 255 matrix scans
            // this will be approx bit more frequent than once per second
            print("trying to reset mcp23018\n");