I have multiple MCP23017 ICs with their interrupts all connected in serial. The interrupt pins are configured to be open-drain.
All the A port interrupt pins are connected together and all the B port interrupt pins are connected together.
When I have up to 2 interrupts on the same line, when an interrupt is triggered I get a logical 0, active low, as expected. When I have more than 2 interrupts on the same line I get a logical 1.
After measuring the line, the voltage still drops but not far enough to be considered a logical 0. I assume this is something to do with the pull-ups on the ICs that are currently pulled high as no interrupt has been triggered on those ICs.
My understanding is that devices connected on the same line with an open-drain would act as if they were logically being AND'd, and therefore if any device went low the entire line would be low too. What have I misunderstood?
I have attached the schematic, code, and MCP23017 datasheets below.
Schematic: https://i.stack.imgur.com/IIKhX.jpg
Arduino code: https://gist.github.com/P4rk/13d0ca7865f8dede6a54042c220fb957
MCP23017 datasheet: https://ww1.microchip.com/downloads/en/devicedoc/20001952c.pdf