You need to change the communication.
The Master is also a Slave, that is going to fail.
You use a Serial function in the onReceive handler. Do not do that.
for (int i = 0; i < 2; i++)
iRXVal += Wire.read() << (i * 8);
Is making it hard for no reason.
Why not this:
iRXVal = Wire.read();
iRXVal += Wire.read() << 8;
Perhaps you should define whether the LSB or the MSB is send first, and put that in code in both the Master and the Slaves.
iRXVal is used in setup() and in the onReceive handler, it must therefor be “volatile”.
It is not allowed to start a I2C session from the receiveEvent() function.
Do not use a Serial function in the receiveEvent() function.
Writing a TWI register while still in the receiveEvent() function can’t be good.
Using the WatchDog to reset a I2C Slave is a bad idea. What if that reset is done while the Slave is receiving data at that moment. That will disturb the I2C bus.
What is the Wire.begin() doing in the loop(), is that trying to reset the I2C bus ? But that will make it worse if something was being received at that moment.
The same things as AsseX.ino
The call to readSensor() from the receiveEvent() is not okay. That function takes too much time. The receiveEvent() is already longer than it should be.
The variable “setpoint” is two bytes. On a 8-bit microcontroller an interrupt could happen when that variable is only read half. If you use that variable from the loop() function, then you should turn of the interrupts temporarily.
This Slave is a Master for the ADS1115 ? That will fail. Do not try to make a multi-master bus.
Same as AsseY.ino
Is this Slave using the same ADS1115 as the other Slave. How ? What ? What did I miss ?
How long are the wires ? Do you use a cable ? What kind of cable ?
What is the value of the pullup resistors ?
These are problems that I noticed at first glance. There are probably more. If you are serious about using the I2C bus, then each and everyone of the issues should be fixed. Using a Serial bus is easier, unless you use SoftwareSerial. With SoftwareSerial a whole new world of problems are introduced.
I don’t know a good reason to reset the I2C bus. All you do, trying to reset things makes it worse. If a Slave behaves as a normal Slave, then the I2C bus runs forever.