I am creating a basic cable tester device and using I2C to interface with two MCP23017 I/O expander chips.
In my code each MCP23017 slave has its own address and I can communicate with both of them properly via I2C.
The idea is that both ends of a "cable" will be placed in the two sockets. Currently I've programmed it to operate on only 8 wires (Using only GPA7-GPA0 on both chips). Basically the idea is that a logic high pulse will be sent individually on each wire (looping 8 times) from the first MCP23017 chip (pins configured as output and is Slave 1) and received by the second MCP23017 chip (pins configured as input and is Slave 2). Now the LEDs light up just fine indicating that the connection exists however I can't get it to write to the registers on Slave 2.
I am writing to the first chips OLATA and reading from the second chips (Slave 2) GPIOA register. So if OLATA is high on GPA7 (first chip) I wish to read GPIOA GPA7 pin on the second chip. Via these reads I can perform bitwise operations to determine the cable types etc.
My problem is that even though all the LEDS light up as expected nothing is being written on the second (bottom most) I/O expander chip. This is no good for me as I need data writes to the registers to occur so I can read the value on these registers to perform operations on. The relevant I2C code for the I/O expander is provided below, these three functions are each run 8 times in the order shown, one for each GPAx pin:
Now the problem is that nothing is being written to the ReadPin variable, it's empty for all 8 GPAx pins on Slave 2 (bottom most I/O expander chip). Also uint8_t Value is 1<
Any ideas? Please help as this is the only main issue I have that is preventing me from proceeding with writing other program logic.
PS: FYI none of my interrupt pins on both MCP23017 chips are connected to anything and the reset pins are connected to VCC. Also the GPAx pins that are setup as inputs on the second slave don't have resistors connected to them. Just the pin and then the LED to GND.
EDIT: Schematic: (right click to view full size)
Also yes I know on the Schematic theres no GND connection in VSS for Slave 1 but please note that I have my present setup on a protoboard with all connections inc that VSS connection correctly wired.