找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

STC8A单片机读取adc错误,找不到原因?

查看数: 5185 | 评论数: 11 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2020-6-18 20:49

正文摘要:

测试stc8a单片机的12位adc,不要求精度。硬件电路    AVref接VCC,AVcc接VCC,VCC为5V;           AGnd接GND.测试结果:都是最大值4095, 以下是我的程序: ...

回复

ID:1066136 发表于 2023-3-13 14:29
coody_sz 发表于 2023-3-12 11:52
怎么会?ADC时钟取自系统时钟,系统时钟是内部时钟、外部晶振二选一。
我有好多东西用的STC15W408AS做的 ...

我也想不明白,但是事实证明就是。我用的是STC15W408AS,SOP28封装,芯片最下面的一串数字是2219H3RK92.XA。现在用内部晶振是正常的,只要一用外部晶振,ADC_RES得到的值就是255,我已经排除其他原因了。
这款芯片用好久了,以前都用内部晶振,没发现有什么,这次因为需要高精度时钟,换了外部晶振,就这样了。
我感觉STC的芯片暗BUG多,我曾经还遇到过开机启动不进入程序,并且电流增大,芯片发烫的,最后的解决方案是改电路,增加延时电容,延迟启动单片机,就好了。这些神奇的BUG我一直找不到原因。。。
ID:1034262 发表于 2023-3-12 11:52
leeye 发表于 2023-3-11 19:43
我今天调试STC15W408AS发现,使用外部晶振ADC就采不到数据,我这个10位的采出来永远都是0x03FF,换成内部晶 ...

怎么会?ADC时钟取自系统时钟,系统时钟是内部时钟、外部晶振二选一。
我有好多东西用的STC15W408AS做的,就是因为带ADC和PWM、SPI、串口,而我基本都使用外部晶振的。
ID:624769 发表于 2023-3-12 03:03
把查询 ADC完成标志的语句
改成:  
while((ADC_CONTR & 0x20) != 0x20);
或者:
while((ADC_CONTR & 0x20) == 0x00);
ID:1066136 发表于 2023-3-11 19:43
我今天调试STC15W408AS发现,使用外部晶振ADC就采不到数据,我这个10位的采出来永远都是0x03FF,换成内部晶振采的数据就准确了。

我猜测你是不是也用外部晶振。这个BUG直接想骂人!
ID:1034262 发表于 2022-11-3 18:33
直接下载STC官方例程就可以测试啦
ID:1050352 发表于 2022-11-3 14:39
楼主这个问题解决了吗
ID:636538 发表于 2020-6-19 16:33
从程序说你看看adc定义的数据类型
ID:401564 发表于 2020-6-19 10:07
R1接地了没有?
多少是要并联一个104电容在R1两头的
至于官方电路,串不串电感和0欧电阻要不要都无所谓,反正你对精度没有要求
ID:285863 发表于 2020-6-19 09:44
要参考官方的电路图
ID:282850 发表于 2020-6-19 09:12
1、把R1短路看看ADC值
2、确保V看看Vref接了Vcc
ID:65956 发表于 2020-6-19 08:46
手册中的原理图要看看比对一下,AVCC接到VCC时串个电感,AGND接到GND时加个0R电阻,这是有作用的,不然人家不会推荐这种电路接法

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表