summaryrefslogtreecommitdiff
path: root/keyboards/ergodox_ez/matrix.c
diff options
context:
space:
mode:
Diffstat (limited to 'keyboards/ergodox_ez/matrix.c')
-rw-r--r--keyboards/ergodox_ez/matrix.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/keyboards/ergodox_ez/matrix.c b/keyboards/ergodox_ez/matrix.c
index e101711334..6660af46a4 100644
--- a/keyboards/ergodox_ez/matrix.c
+++ b/keyboards/ergodox_ez/matrix.c
@@ -34,7 +34,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "util.h"
#include "matrix.h"
#include QMK_KEYBOARD_H
-#include "i2cmaster.h"
#ifdef DEBUG_MATRIX_SCAN_RATE
#include "timer.h"
#endif
@@ -69,7 +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 uint8_t mcp23018_reset_loop;
+static uint16_t mcp23018_reset_loop;
#ifdef DEBUG_MATRIX_SCAN_RATE
uint32_t matrix_timer;
@@ -176,7 +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 == 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");
@@ -297,7 +298,7 @@ static matrix_row_t read_cols(uint8_t row)
mcp23018_status = i2c_start(I2C_ADDR_WRITE); if (mcp23018_status) goto out;
mcp23018_status = i2c_write(GPIOB); if (mcp23018_status) goto out;
mcp23018_status = i2c_start(I2C_ADDR_READ); if (mcp23018_status) goto out;
- data = i2c_readNak();
+ data = i2c_read_nack();
data = ~data;
out:
i2c_stop();