Great suggestions guys. The reason I was hoping to do things the way I originally envisioned was to achieve the following characteristics:
- Able to have dynamic address provisioning (ATtiny would take over i2c bus, already knowing the Electron’s hard-coded address, and request that it be provisioned an i2c that is confirmed by virtue of also passing/receiving back a universally unique ID number). Eventually there would be up to 12 ATtinies all provisioned and working on the same bus (at which point they could just all be slaves)
- Able to work with only 2 wire or less
If I were to add an extra GPIO for data ready signal, that would translate to minimum 12 extra wires/connectors/pins taken up on the Electron end of things.
If I was using that many wires, my preference would be to simply switch over to a multiplexed SPI based protocol where I would only have 1/12 of the SPI bus “active” at a time (to avoid problems with too much bus capacitance). Throw a reset signal on there and this would allow me to do seamless firmware updates of the ATtinies over SPI.
I think what I’ve settled on is to just multiplex the i2c signals and have all the ATtinies have the same slave address and just poll them regularly.