Firman 发表于 2018-2-10 11:49:06

STC12的ADC接近0V时读出值最高位为1,何解?

本帖最后由 Firman 于 2018-2-11 15:40 编辑

最近在用STC做ADC采样,当电压低于0.1V时,采样值最高位为1,不知道为什么会这样。
以为程序写错了,用官网提供的程序,结果也一样。

比如
ADRJ=0时, 慢慢调小采集电压,ADC_RES从 0x15, 0x14,0x13...0x08慢慢变小,但接下来再调小,读出来的值变成0X87,0X86....0X81.
ADRJ=1时, 慢慢调小采集电压,ADADC_RESL由 0x15, 0x14,0x13...0x06慢慢变小,再调小,读出来的值变成0X85....0X81.

有兄弟碰到这种问题吗?怎么解决呢?



对不起大家,我的错。
晶振用错了,11.0592MHz的晶振,焊了12M了,所以串口读回来的数,最高位有问题。应该还有其它数会跳变,只是没留意到。
想不到做了十多年单片机,会这样翻沟。

90999 发表于 2018-2-10 12:43:36

带符号~~~~~~~~~

k2866 发表于 2018-2-10 13:01:20

读出负数了?

Firman 发表于 2018-2-10 13:05:40

k2866 发表于 2018-2-10 13:01
读出负数了?

应该不会吧?
ADRJ=1,负号也不在低8位的身上呀。

Firman 发表于 2018-2-10 13:07:00

90999 发表于 2018-2-10 12:43
带符号~~~~~~~~~

也没见规格书有见说到能采样负值呀。

z31com 发表于 2018-2-10 14:20:35

adc的地与被测地不一样?有什么大负载没有

Firman 发表于 2018-2-10 16:04:38

z31com 发表于 2018-2-10 14:20
adc的地与被测地不一样?有什么大负载没有

一样的,出现这个问题,我也怀疑测试点电压有问题。
但现在我用个可调电阻,用单片机的电,还是一样的问题。

小李非刀 发表于 2018-2-10 18:44:31

输入比VDD/2略高的电压,读数多少?

小李非刀 发表于 2018-2-10 18:45:23

或者提供VDD、输入VDD*1/4、VDD*2/4、VDD*3/4对应的ADC值。

Firman 发表于 2018-2-10 23:23:14

小李非刀 发表于 2018-2-10 18:44
输入比VDD/2略高的电压,读数多少?

采集电压超0.1V,数值基本是对的,严格误差多少没统计过。
2.5V,5V都很准。

Firman 发表于 2018-2-10 23:25:42

小李非刀 发表于 2018-2-10 18:45
或者提供VDD、输入VDD*1/4、VDD*2/4、VDD*3/4对应的ADC值。

哦,明白你的意思了,你想看看实际值在0x80以上时,值对不对。

Firman 发表于 2018-2-11 09:09:05

小李非刀 发表于 2018-2-10 18:45
或者提供VDD、输入VDD*1/4、VDD*2/4、VDD*3/4对应的ADC值。

粗略抽点测试,1.25V、2.5V、3V、5V 的ADC值都很准。

sypf 发表于 2018-2-11 11:31:21

给AD的时钟开慢一点试试?死马当活马~~

Firman 发表于 2018-2-11 13:14:33

sypf 发表于 2018-2-11 11:31
给AD的时钟开慢一点试试?死马当活马~~

谢谢建议
刚试过,还是不行。

Firman 发表于 2018-2-11 15:40:43

小李非刀 发表于 2018-2-10 18:45
或者提供VDD、输入VDD*1/4、VDD*2/4、VDD*3/4对应的ADC值。

对不起,我的错。
晶振用错了,11.0592MHz的晶振,焊了12M了,所以串口读回来的数,最高位有问题。应该还有其它数会跳变,只是没留意到。

90999 发表于 2018-2-11 20:54:02

Firman 发表于 2018-2-11 15:40
对不起,我的错。
晶振用错了,11.0592MHz的晶振,焊了12M了,所以串口读回来的数,最高位有问题。应该还 ...

高科技~~~~~~~~~~~~~~~

Firman 发表于 2018-2-11 23:51:34

90999 发表于 2018-2-11 20:54
高科技~~~~~~~~~~~~~~~

让你笑话了
页: [1]
查看完整版本: STC12的ADC接近0V时读出值最高位为1,何解?