diff --git a/esphome/components/sx1509/sx1509.cpp b/esphome/components/sx1509/sx1509.cpp index eb78a5ba324..ab2b8ac0365 100644 --- a/esphome/components/sx1509/sx1509.cpp +++ b/esphome/components/sx1509/sx1509.cpp @@ -347,8 +347,6 @@ void SX1509Component::enable_pin_interrupt_(uint8_t pin) { this->write_byte_16(REG_INTERRUPT_MASK_B, mask); // Configure sense to trigger on both edges - // Each sense register covers 4 pins with 2 bits per pin - static constexpr uint8_t SENSE_REGS[] = {REG_SENSE_LOW_A, REG_SENSE_HIGH_A, REG_SENSE_LOW_B, REG_SENSE_HIGH_B}; uint8_t sense_reg = SENSE_REGS[pin / 4]; uint8_t sense_val = 0; this->read_byte(sense_reg, &sense_val); diff --git a/esphome/components/sx1509/sx1509_registers.h b/esphome/components/sx1509/sx1509_registers.h index 6bddaf7694d..b83aecb7905 100644 --- a/esphome/components/sx1509/sx1509_registers.h +++ b/esphome/components/sx1509/sx1509_registers.h @@ -59,6 +59,8 @@ const uint8_t REG_SENSE_HIGH_A = 0x16; // RegSenseHighA Sense register for I const uint8_t REG_SENSE_LOW_A = 0x17; // RegSenseLowA Sense register for I/O[3:0] 0000 0000 // Sense register values (2 bits per pin): 00=None, 01=Rising, 10=Falling, 11=Both const uint8_t SENSE_BOTH_EDGES = 0x03; +// Sense register lookup: each register covers 4 pins (pins 0-3, 4-7, 8-11, 12-15) +const uint8_t SENSE_REGS[] = {REG_SENSE_LOW_A, REG_SENSE_HIGH_A, REG_SENSE_LOW_B, REG_SENSE_HIGH_B}; const uint8_t REG_INTERRUPT_SOURCE_B = 0x18; // RegInterruptSourceB Interrupt source register _ I/O[15_8] (Bank B) 0000 0000 const uint8_t REG_INTERRUPT_SOURCE_A =