Я использую 24-разрядный АЦП I2C с Arduino, и у нас нет 3-байтового (24-разрядного) типа данных, поэтому вместо этого я использовал uint32_t
, который представляет собой 32-разрядное целое число без знака.Мой фактический вывод, однако, 24-битное число со знаком, как вы можете видеть ниже:
Также вот код, который я использовал для чтения результатовесли вам интересно:
uint32_t readData(){
Wire.beginTransmission(address);
Wire.write(0x10);
Wire.endTransmission();
Wire.requestFrom(address,3);
byte dataMSB = Wire.read();
byte data = Wire.read();
byte dataLSB = Wire.read();
uint32_t data32 = dataMSB;
data32 <<= 8;
data32 |= data;
data32 <<= 8;
data32 |= dataLSB;
return data32;
}
Чтобы это число было полезным, мне нужно преобразовать его обратно в 24-битное целое число со знаком (я не уверен, как это сделать, или даже если этовозможно, потому что 24 не является степенью 2), поэтому я немного застрял.Было бы здорово, если бы кто-нибудь смог мне помочь, так как я почти закончил с проектом, и это один из последних нескольких шагов.