Я пытаюсь написать собственный драйвер для Adafruit LSM303 (https://www.adafruit.com/product/1120), чтобы я мог написать код C ++ на Raspberry Pi, используя эту доску. Как я копался в источнике для драйвера Arduino (находится здесь: https://github.com/adafruit/Adafruit_LSM303DLHC/blob/master/Adafruit_LSM303_U.cpp) Я обнаружил, что код ожидает готовности данных, прежде чем они будут прочитаны: (строка 87)
Следующий код предназначен для Arduino, использующего заголовок Wire.h для доступа I2C.
void Adafruit_LSM303_Accel_Unified::read()
{
...
while (Wire.available() < 6);
#if ARDUINO >= 100
uint8_t xlo = Wire.read();
uint8_t xhi = Wire.read();
uint8_t ylo = Wire.read();
uint8_t yhi = Wire.read();
uint8_t zlo = Wire.read();
uint8_t zhi = Wire.read();
#else
uint8_t xlo = Wire.receive();
uint8_t xhi = Wire.receive();
uint8_t ylo = Wire.receive();
uint8_t yhi = Wire.receive();
uint8_t zlo = Wire.receive();
uint8_t zhi = Wire.receive();
#endif
...
}
Можно ли в библиотеке wiringPi I2C дождаться, пока эти данные будут готовы в первую очередь? Как в ожидании данных, чтобы быть готовым, а затем прочитать данные.
Как примечание, я портирую код Arduino, чтобы он работал на Raspberry Pi.
Задача ещё не решена.