Align existing pca9555 driver to better match mcp23018 API (#16277)
This commit is contained in:
parent
96afc7a03a
commit
1f67de2001
6 changed files with 113 additions and 62 deletions
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue