HI all.
Master random not receive data, receive function sometime not start/run. When i clera old data and receive new, the rec function not start.
Master:
m_test = true;
Wire.beginTransmission(1);
Wire.write(Ð_to_i2c[0],12);
Wire.endTransmission();
ETH_data_out[12] = 0; //delete old data
ETH_data_out[13] = 0; //delete old data
ETH_data_out[14] = 0; //delete old data
i_pocitadlo_i2c = 12;
Wire.requestFrom(1, 12);
while (Wire.available())
{
byte c = Wire.read();
ETH_data_out[i_pocitadlo_i2c] = c;
i_pocitadlo_i2c++;
m_test = false; //when function run, all is good, no error
}
if (m_test){Serial.println("no comm");} //sometime is error, function no run, i dont now why
Slave:
void setup()
{
Wire.onReceive(I2C_receive);
Wire.onRequest(I2C_transfer);
}
void I2C_transfer()
{
OUT_I2C_data[0] = 5;
OUT_I2C_data[1] = DATA_rueck;
//tested crc function
m_calc_crc_out = true;
crc_generate2_out.CRC_gen(m_calc_crc_out, OUT_I2C_data[0], OUT_I2C_data[1]);
m_calc_crc_out = false;
OUT_I2C_data[2] = crc_generate2_out.CRC;
//tested crc function
m_calc_crc_out = true;
crc_generate_out8.CRC_gen_8(m_calc_crc_out, &OUT_I2C_data[3]);
m_calc_crc_out = false;
OUT_I2C_data[11] = crc_generate_out8.CRC;
Wire.write(OUT_I2C_data, 12);
}
Max cycle time of master is 10ms, slave 5ms.
Receive I2C function on masted every 30ms.
Why sometime atmel print in console "no comm" ?