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了,所以串口读回来的数,最高位有问题。应该还有其它数会跳变,只是没留意到。
想不到做了十多年单片机,会这样翻沟。 带符号~~~~~~~~~ 读出负数了? k2866 发表于 2018-2-10 13:01
读出负数了?
应该不会吧?
ADRJ=1,负号也不在低8位的身上呀。 90999 发表于 2018-2-10 12:43
带符号~~~~~~~~~
也没见规格书有见说到能采样负值呀。 adc的地与被测地不一样?有什么大负载没有 z31com 发表于 2018-2-10 14:20
adc的地与被测地不一样?有什么大负载没有
一样的,出现这个问题,我也怀疑测试点电压有问题。
但现在我用个可调电阻,用单片机的电,还是一样的问题。 输入比VDD/2略高的电压,读数多少? 或者提供VDD、输入VDD*1/4、VDD*2/4、VDD*3/4对应的ADC值。 小李非刀 发表于 2018-2-10 18:44
输入比VDD/2略高的电压,读数多少?
采集电压超0.1V,数值基本是对的,严格误差多少没统计过。
2.5V,5V都很准。 小李非刀 发表于 2018-2-10 18:45
或者提供VDD、输入VDD*1/4、VDD*2/4、VDD*3/4对应的ADC值。
哦,明白你的意思了,你想看看实际值在0x80以上时,值对不对。 小李非刀 发表于 2018-2-10 18:45
或者提供VDD、输入VDD*1/4、VDD*2/4、VDD*3/4对应的ADC值。
粗略抽点测试,1.25V、2.5V、3V、5V 的ADC值都很准。 给AD的时钟开慢一点试试?死马当活马~~ sypf 发表于 2018-2-11 11:31
给AD的时钟开慢一点试试?死马当活马~~
谢谢建议
刚试过,还是不行。 小李非刀 发表于 2018-2-10 18:45
或者提供VDD、输入VDD*1/4、VDD*2/4、VDD*3/4对应的ADC值。
对不起,我的错。
晶振用错了,11.0592MHz的晶振,焊了12M了,所以串口读回来的数,最高位有问题。应该还有其它数会跳变,只是没留意到。
Firman 发表于 2018-2-11 15:40
对不起,我的错。
晶振用错了,11.0592MHz的晶振,焊了12M了,所以串口读回来的数,最高位有问题。应该还 ...
高科技~~~~~~~~~~~~~~~ 90999 发表于 2018-2-11 20:54
高科技~~~~~~~~~~~~~~~
让你笑话了
页:
[1]