c-将int转换为浮点dsPIC33



我正在尝试将int16_t转换为浮动

代码是

int16_t ADC_value;
float voltage = (float)ADC_value/1000.0f;
printf("%frn",voltage);

结果

当电压超过2.0V时,浮点值变为(-(值。但在它转换为浮点值之前,它是正常的。

代码:-

int16_t ADC_value;
printf("%urn",ADC_Value);  //this is correct

int16_t到float的转换是错误的吗?

对于ADC,我发现这是主流模式。由于您使用的是LTC1867,因此需要确定IC是在双极模式还是单极模式下运行。FSR为4.096。如果是单极,则应使用uint16_t作为ADC值。如果是双极模式,则应使用int16_t。在双极模式下,ADC是一个有符号的二进制补码,可以在+/-32767之间变化,因此您需要更改我在下面使用的FSR变量。

const float fsr = 4.096;        // Full-scale range, Volts, depends on the ADC
const float max_val = 65535.0f; // For 16-bit unsigned ADC, 2^16 -1 
float voltage = fsr*((float)ADC_value / max_val); 

最新更新