|
@@ -43,7 +43,7 @@ static uint8_t error_count_arrow = 0;
|
|
|
|
|
|
|
|
|
|
#ifndef DEBOUNCING_DELAY
|
|
#ifndef DEBOUNCING_DELAY
|
|
-# define DEBOUNCING_DELAY 5
|
|
+# define DEBOUNCING_DELAY 5
|
|
#endif
|
|
#endif
|
|
|
|
|
|
#if (DEBOUNCING_DELAY > 0)
|
|
#if (DEBOUNCING_DELAY > 0)
|
|
@@ -135,10 +135,7 @@ uint8_t matrix_cols(void) {
|
|
return MATRIX_COLS;
|
|
return MATRIX_COLS;
|
|
}
|
|
}
|
|
|
|
|
|
-
|
|
|
|
i2c_status_t i2c_transaction(uint8_t address, uint32_t mask, uint8_t col_offset);
|
|
i2c_status_t i2c_transaction(uint8_t address, uint32_t mask, uint8_t col_offset);
|
|
-
|
|
|
|
-
|
|
|
|
|
|
|
|
|
|
|
|
void matrix_setup(void){
|
|
void matrix_setup(void){
|
|
@@ -220,7 +217,7 @@ uint8_t matrix_scan(void)
|
|
matrix[i] &= 0x3F;
|
|
matrix[i] &= 0x3F;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- }else{
|
|
+ }else{
|
|
error_count_right = 0;
|
|
error_count_right = 0;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -440,40 +437,28 @@ static void unselect_cols(void)
|
|
|
|
|
|
i2c_status_t i2c_transaction(uint8_t address, uint32_t mask, uint8_t col_offset) {
|
|
i2c_status_t i2c_transaction(uint8_t address, uint32_t mask, uint8_t col_offset) {
|
|
i2c_status_t err = i2c_start((address << 1) | I2C_WRITE, 10);
|
|
i2c_status_t err = i2c_start((address << 1) | I2C_WRITE, 10);
|
|
- if (err) return err;
|
|
+ i2c_write(0x01, 10);
|
|
- i2c_write(0x01, 10);
|
|
|
|
- if (err) return err;
|
|
|
|
|
|
|
|
- i2c_start((address << 1) | I2C_READ, 10);
|
|
+ i2c_start((address << 1) | I2C_READ, 5);
|
|
- if (err) return err;
|
|
|
|
|
|
|
|
err = i2c_read_ack(10);
|
|
err = i2c_read_ack(10);
|
|
if (err == 0x55) {
|
|
if (err == 0x55) {
|
|
|
|
|
|
- for (uint8_t i = 0; i < MATRIX_ROWS-1 ; i++) {
|
|
+ for (uint8_t i = 0; i < MATRIX_ROWS-1 ; i++) {
|
|
- matrix[i] &= mask;
|
|
+ matrix[i] &= mask;
|
|
- err = i2c_read_ack(10);
|
|
+ err = i2c_read_ack(10);
|
|
- if (err >= 0) {
|
|
+ matrix[i] |= ((uint32_t)err << (MATRIX_COLS_SCANNED + col_offset));
|
|
- matrix[i] |= ((uint32_t)err << (MATRIX_COLS_SCANNED + col_offset));
|
|
+ }
|
|
- } else {
|
|
+
|
|
- return err;
|
|
+ matrix[MATRIX_ROWS - 1] &= mask;
|
|
- }
|
|
+ err = i2c_read_nack(10);
|
|
- }
|
|
|
|
-
|
|
|
|
- matrix[MATRIX_ROWS - 1] &= mask;
|
|
|
|
- err = i2c_read_nack(10);
|
|
|
|
- if (err >= 0) {
|
|
|
|
matrix[MATRIX_ROWS - 1] |= ((uint32_t)err << (MATRIX_COLS_SCANNED + col_offset));
|
|
matrix[MATRIX_ROWS - 1] |= ((uint32_t)err << (MATRIX_COLS_SCANNED + col_offset));
|
|
- } else {
|
|
+
|
|
- return err;
|
|
|
|
- }
|
|
|
|
} else {
|
|
} else {
|
|
i2c_stop(10);
|
|
i2c_stop(10);
|
|
return 1;
|
|
return 1;
|
|
}
|
|
}
|
|
|
|
|
|
i2c_stop(10);
|
|
i2c_stop(10);
|
|
- if (err) return err;
|
|
|
|
-
|
|
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|