diff options
Diffstat (limited to 'keyboards/xiudi/xd96/matrix.c')
-rw-r--r-- | keyboards/xiudi/xd96/matrix.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/keyboards/xiudi/xd96/matrix.c b/keyboards/xiudi/xd96/matrix.c index 8cecc79c26..beef7fae12 100644 --- a/keyboards/xiudi/xd96/matrix.c +++ b/keyboards/xiudi/xd96/matrix.c @@ -50,13 +50,16 @@ static void select_row(uint8_t row) { } static uint32_t read_cols(void) { - uint32_t state_1 = pca9555_readPins(IC2, PCA9555_PORT0); - uint32_t state_2 = pca9555_readPins(IC2, PCA9555_PORT1); - uint32_t state_3 = pca9555_readPins(IC1, PCA9555_PORT1); + uint8_t state_1 = 0; + uint8_t state_2 = 0; + uint8_t state_3 = 0; + pca9555_readPins(IC2, PCA9555_PORT0, &state_1); + pca9555_readPins(IC2, PCA9555_PORT1, &state_2); + pca9555_readPins(IC1, PCA9555_PORT1, &state_3); // For the XD96 the pins are mapped to port expanders as follows: // all 8 pins port 0 IC2, first 6 pins port 1 IC2, first 4 pins port 1 IC1 - uint32_t state = (((state_3 & 0b00001111) << 14) | ((state_2 & 0b00111111) << 8) | state_1); + uint32_t state = ((((uint32_t)state_3 & 0b00001111) << 14) | (((uint32_t)state_2 & 0b00111111) << 8) | (uint32_t)state_1); return (~state) & 0b111111111111111111; } |