Skip to content

Commit 5d49cd0

Browse files
committed
Fix repeated start bug with Due
Use undocumented requestFrom call to make this work on the Arduino Due. Undocumented call is specifically designed for Due.
1 parent d4656eb commit 5d49cd0

File tree

1 file changed

+10
-4
lines changed

1 file changed

+10
-4
lines changed

Adafruit_LSM9DS0.cpp

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -398,12 +398,18 @@ byte Adafruit_LSM9DS0::readBuffer(boolean type, byte reg, byte len, uint8_t *buf
398398
address = LSM9DS0_ADDRESS_ACCELMAG;
399399
_cs = _csxm;
400400
}
401+
402+
401403

402404
if (_i2c) {
403-
_wire->beginTransmission(address);
404-
_wire->write(reg);
405-
_wire->endTransmission();
406-
_wire->requestFrom(address, (byte)len);
405+
#ifdef __SAM3X8E__
406+
_wire->requestFrom(address, len, reg, 1, true); //see http://forum.arduino.cc/index.php?topic=385377.msg2947227#msg2947227
407+
#else
408+
_wire->beginTransmission(address);
409+
_wire->write(reg);
410+
_wire->endTransmission();
411+
_wire->requestFrom(address, (byte)len);
412+
#endif
407413

408414
for (uint8_t i=0; i<len; i++) {
409415
buffer[i] = _wire->read();

0 commit comments

Comments
 (0)