У меня есть ADC (AD7767), который я использую для измерения дифференциального сигнала. Данные, поступающие с АЦП, являются первым дополнением MSB к первому 24-битовому значению. Я хочу преобразовать это значение в напряжение. Опорное напряжение используется 5 вольт. Я использую IDE Arduino. То, что я до сих пор в основном это:Преобразование комплимента 24 бит 2 (MSB first) в напряжение
const long minValue = 0x800000;
const long maxValue = 0x7FFFFF;
signed long result = 0;
....
long voltage = (result * 0x5)/maxValue;
Serial.println(voltage);
Это печатает значение 0.
Что значения:
result = 1010101101010101
0x5: ака Vref
(result * 0x5) = 110101100010101001
(result * 0x5)/maxValue = 0
В чем вопрос? – Radiodef
http://stackoverflow.com/questions/2916191/c-c-convert-24-bit-signed-integer-to-float может вам помочь. –
Возможный дубликат [Результат разделения всегда равен нулю] (http://stackoverflow.com/questions/2345902/division-result-is-always-zero) –