首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将int转换为浮点dsPIC33

将int转换为浮点dsPIC33
EN

Stack Overflow用户
提问于 2022-08-02 08:48:01
回答 1查看 61关注 0票数 -1

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

代码是

代码语言:javascript
复制
int16_t ADC_value;

float voltage = (float)ADC_value/1000.0f;

printf("%f\r\n",voltage);

结果

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

代码:-

代码语言:javascript
复制
int16_t ADC_value;

printf("%u\r\n",ADC_Value);  //this is correct

这是int16_t的浮点转换错误吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-02 15:17:50

对于ADC来说,我发现这是一种流行的模式。由于您使用的是LTC1867,您需要确定IC是在双极模式还是单极模式下工作。FSR为4.096。如果是单极,则应使用uint16_t作为ADC值。如果是双极模式,则应该使用int16_t。在双极模式中,ADC是一个有符号的双补码,可以从+/- 32767变化,因此您需要修改下面使用的FSR变量。

代码语言:javascript
复制
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); 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73204570

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档