Slave address is fixed at zero in ReadRegister but not in WriteRegister and that seems like a possible problem to me. I tried to copy the relevant code sections but yikes! Wrapping it with the <> option didn't look good at all, so just leaving the two lines : WriteRegister has comm.address, // Slave address ReadRegister has writeBuffer[1] = 0x00 // Slave address