You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Hi.
I just realized that the Library for the v3HP uses the Repeated Start Condition in LIDARLite_v3HP_read Function in /src/LIDARLite_v3HP.cpp on Line 398: nackCatcher = Wire.endTransmission(false); // false means perform repeated start
Compleete function:
void LIDARLite_v3HP::read(uint8_t regAddr, uint8_t * dataBytes,
uint16_t numBytes, uint8_t lidarliteAddress)
{
uint16_t i = 0;
int nackCatcher = 0;
// Set the internal register address pointer in the Lidar Lite
Wire.beginTransmission((int) lidarliteAddress);
Wire.write((int) regAddr); // Set the register to be read
// A nack means the device is not responding, report the error over serial
nackCatcher = Wire.endTransmission(false); // false means perform repeated start
if (nackCatcher != 0)
{
Serial.println("> nack");
}
// Perform read, save in dataBytes array
Wire.requestFrom((int)lidarliteAddress, (int) numBytes);
if ((int) numBytes <= Wire.available())
{
while (i < numBytes)
{
dataBytes[i] = (uint8_t) Wire.read();
i++;
}
}
} /* LIDARLite_v3HP::read */
Notes:
• This device does not work with repeated START conditions. It must first receive a STOP condition before a new START condition.
• The ACK and NACK items are responses from the master device to the slave device.
• The last NACK in the read is technically optional, but the formal I2C protocol states that the master shall not acknowledge the last byte.
It seems to work. But i implemented it into an other microcontroller and we ran into some I2C stucks when having higher EMI Problems. By digging into the code we found this issue...
The text was updated successfully, but these errors were encountered:
Hi.
I just realized that the Library for the v3HP uses the Repeated Start Condition in LIDARLite_v3HP_read Function in /src/LIDARLite_v3HP.cpp on Line 398:
nackCatcher = Wire.endTransmission(false); // false means perform repeated start
Compleete function:
In the Datasheet on Page 6 it says:
It seems to work. But i implemented it into an other microcontroller and we ran into some I2C stucks when having higher EMI Problems. By digging into the code we found this issue...
The text was updated successfully, but these errors were encountered: