标题: STC8A单片机读取adc错误,找不到原因? [打印本页]

作者: 3205440665    时间: 2020-6-18 20:49
标题: STC8A单片机读取adc错误,找不到原因?
测试stc8a单片机的12位adc,不要求精度。硬件电路    AVref接VCC,AVcc接VCC,VCC为5V;           AGnd接GND.测试结果:都是最大值4095,

以下是我的程序:

以下是stc提供的例程

确实找不出问题,在这里请教下哪里处问题了?


11.jpg (8.9 KB, 下载次数: 48)

我的adc程序1

我的adc程序1

222.jpg (21.46 KB, 下载次数: 50)

我的adc程序2

我的adc程序2

3333.jpg (29.15 KB, 下载次数: 47)

stc提供的例程

stc提供的例程

44444.jpg (22.96 KB, 下载次数: 55)

原理图

原理图

作者: aking991    时间: 2020-6-19 08:46
手册中的原理图要看看比对一下,AVCC接到VCC时串个电感,AGND接到GND时加个0R电阻,这是有作用的,不然人家不会推荐这种电路接法
作者: f556    时间: 2020-6-19 09:12
1、把R1短路看看ADC值
2、确保V看看Vref接了Vcc

作者: bemc    时间: 2020-6-19 09:44
要参考官方的电路图
作者: Y_G_G    时间: 2020-6-19 10:07
R1接地了没有?
多少是要并联一个104电容在R1两头的
至于官方电路,串不串电感和0欧电阻要不要都无所谓,反正你对精度没有要求
作者: SKYLAR123    时间: 2020-6-19 16:33
从程序说你看看adc定义的数据类型
作者: 张一一97    时间: 2022-11-3 14:39
楼主这个问题解决了吗

作者: coody_sz    时间: 2022-11-3 18:33
直接下载STC官方例程就可以测试啦
作者: leeye    时间: 2023-3-11 19:43
我今天调试STC15W408AS发现,使用外部晶振ADC就采不到数据,我这个10位的采出来永远都是0x03FF,换成内部晶振采的数据就准确了。

我猜测你是不是也用外部晶振。这个BUG直接想骂人!
作者: 188610329    时间: 2023-3-12 03:03
把查询 ADC完成标志的语句
改成:  
while((ADC_CONTR & 0x20) != 0x20);
或者:
while((ADC_CONTR & 0x20) == 0x00);
作者: coody_sz    时间: 2023-3-12 11:52
leeye 发表于 2023-3-11 19:43
我今天调试STC15W408AS发现,使用外部晶振ADC就采不到数据,我这个10位的采出来永远都是0x03FF,换成内部晶 ...

怎么会?ADC时钟取自系统时钟,系统时钟是内部时钟、外部晶振二选一。
我有好多东西用的STC15W408AS做的,就是因为带ADC和PWM、SPI、串口,而我基本都使用外部晶振的。
作者: leeye    时间: 2023-3-13 14:29
coody_sz 发表于 2023-3-12 11:52
怎么会?ADC时钟取自系统时钟,系统时钟是内部时钟、外部晶振二选一。
我有好多东西用的STC15W408AS做的 ...

我也想不明白,但是事实证明就是。我用的是STC15W408AS,SOP28封装,芯片最下面的一串数字是2219H3RK92.XA。现在用内部晶振是正常的,只要一用外部晶振,ADC_RES得到的值就是255,我已经排除其他原因了。
这款芯片用好久了,以前都用内部晶振,没发现有什么,这次因为需要高精度时钟,换了外部晶振,就这样了。
我感觉STC的芯片暗BUG多,我曾经还遇到过开机启动不进入程序,并且电流增大,芯片发烫的,最后的解决方案是改电路,增加延时电容,延迟启动单片机,就好了。这些神奇的BUG我一直找不到原因。。。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1