arduino / ArduinoCore-avr

The Official Arduino AVR core
https://www.arduino.cc
1.25k stars 1.06k forks source link

Wire library read() returns 0xFF on reading only one byte #549

Open velechit opened 11 months ago

velechit commented 11 months ago

I am having a weird problem with my I2C code. The problem is that when I try to read only 1 byte in the master I get 0xFF but if I read 2 bytes I get proper value of the first byte.

Wire.requestFrom(SLAVE_ADDRESS, 1);
data = Wire.read();

=> gives data as 0xFF

Wire.requestFrom(SLAVE_ADDRESS, 2);
data0 = Wire.read();
data1 = Wire.read();

=> gives data0 as 0xA5 (which is expected from the single byte read)

Am I doing anything wrong?

zerovijay commented 9 months ago

0xFF is one byte (0b11111111) in binary it's mean correct. can i get more information about the issue.

ItsMe6666 commented 5 months ago
Wire.requestFrom(SLAVE_ADDRESS, 1);
while(Wire.available()) { // slave may send less than requested
  data0 = Wire.read();
  Serial.print(data0); 
}