zcllom 发表于 2023-3-15 10:20:52

怪事,ADC原始值没问题,但换算出来的结果离谱!

用了DMA采集得到ADC值,采样的原始值看起来没问题。但用公式算出的结果太离谱了,这个公式很常用啊。
u16 x;
x = (u16)( (u32)adc * 45 / 4095 ),其中45是外接Vref=4.5V的参考电压,扩大10倍,adc的原始值有3000多,但x等于0

32位8051 发表于 2023-3-15 10:31:04

楼主用的哪个型号呢?

神农鼎 发表于 2023-3-15 11:01:13

还是用仿真功能仿真调试,进去看错在哪,不盲人摸象在那猜

zcllom 发表于 2023-3-15 11:07:16

STC32位8051芯片 发表于 2023-3-15 10:31
楼主用的哪个型号呢?

STC8H4K

神农鼎 发表于 2023-3-15 11:09:41


用这个 免费+包邮 送的 STC-USB Link1D 来仿真,解决你这个隐藏的程序问题


【新提醒】用STC-USB Link1D仿真STC8系列MCU - 编译器/仿真器/ISP下载/做自己的ISP/ID号加密/程序加密后传输 国芯论坛-STC全球32位8051爱好者互助交流社区 - STC全球32位8051爱好者互助交流社区 (stcaimcu.com)

梁工 发表于 2023-3-15 11:29:34

很常规的用法,有时候我还用浮点数呢,都没碰到过问题。
楼主可以仿真看看,或者同时观察ADC值和X值,跟手算有啥差别。或者直接给ADC一个值,去计算看看。

kksk 发表于 2023-3-16 20:35:50

可以把变量都输出看看,以及把表达式拆开确认每次运算的结果

另外顺便推荐一下MDU,这种数据计算起来很舒服:lol

神农鼎 发表于 2023-3-19 15:27:09

MDU16, 不用是您的损失啊



zcllom 发表于 2023-3-19 23:08:40

神农鼎 发表于 2023-3-19 15:27
MDU16, 不用是您的损失啊

用了三年ST8系列,还真没弄过MDU16。

神农鼎 发表于 2023-3-20 15:11:16

尝试下,16位运算支持12位ADC运算,计算简单多了
页: [1]
查看完整版本: 怪事,ADC原始值没问题,但换算出来的结果离谱!