okay, thanks for clarifying. On some research, it looks like i2c is limited by the number of pins used. If 3 pins are used, 8 devices are the limit. 4 pins should enable 16 devices. how many are on the K16/K64?
I2C is only 2 pins -- clock and data. (+1 for ground, so really 3). The 3 vs 4 is probably referring to addressing -- on I2C boards you can use jumpers to select an address. I'm not sure how the boards are picking their addresses.
The K16 has a 4 pin I2C connector but 1 pin is clipped off and used as a orientation pin for a plugged hole on the female end. That pin has VCC (3.3V) on it and was intended for later to supply power to a repeater module allowing extending the bus. GND, SDA, SCL are pins used.
The I2C provided uses serial# arbitration as an addressing negotiation to assign addresses. The addressing limit is 112 devices but that does not determine the real bus limit as physical effects such as line capacitance have greater influence. I think we can trust that 8 will work but it could be higher.
Addressing doesn't depend on pins or jumpers as in some I2C implementations. Here's how it works:
1. Master sends a query for new devices on the bus.
2. All new devices respond with their serial #.
3. Since I2C is wired-or (has pull up resistors on lines), only zero bits actively actually influence the data captured by the master. This ensures the serial# received is the "lowest one", which acts as a priority filter.
4. Master increments the device count and sends back the new address with serial# as assignment.
5. The device which recognizes it's own serial# stores and uses that address.
6. The process repeats until no response is detected by the master, in which case assignment is complete. The last address value indicates the total slave device count.
7. Periodically a new scan is done just in case devices are added to the the chain.
Each PIC device will be programmed with a unique serial# to enable this method using an updated version of the ktest app via the firmware updater facility, or via manual setting if using a PICKit3. The ktest app is automated so that each device it sees without serial# will cause it to increment and assign a serial#, and record the serial# in a file. That functionality is being coded by me right now and will be pushed to Github in time for PIC/board arrival.