找回密码
 立即注册
楼主: 我的用户名

ADC采集为什么有时候是0?

[复制链接]
  • 打卡等级:常住居民III
  • 打卡总天数:105
  • 最近打卡:2025-06-09 07:11:14
已绑定手机

6

主题

62

回帖

447

积分

中级会员

积分
447
发表于 2024-11-17 07:13:41 来自手机 | 显示全部楼层
如果官方愿意,把你的板子烧好程序发给官方,让他们看一下是最好的,这样的描述,谁也不能很好判断问题在哪
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:126
  • 最近打卡:2025-08-07 09:24:45

5

主题

52

回帖

891

积分

高级会员

积分
891
发表于 2024-11-18 11:44:36 | 显示全部楼层
pzeg*** 发表于 2024-11-16 16:47
重点是:使用SOP8 或DIP8  
使用8脚的就有这种现象 使用16脚的就没有
是不是设置上还要设置什么

https://oshwhub.com/rm543/dig_loader_v06
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:126
  • 最近打卡:2025-08-07 09:24:45

5

主题

52

回帖

891

积分

高级会员

积分
891
发表于 2024-11-18 11:47:56 | 显示全部楼层
pzeg*** 发表于 2024-11-16 16:47
重点是:使用SOP8 或DIP8  
使用8脚的就有这种现象 使用16脚的就没有
是不是设置上还要设置什么


我这个开源工程里面用的就是这个SOP8 的STC8G1K08A,ADC采样只读一次直接使用结果,不使用任何滤波,目前长时间运行还没遇到异常(如果数据不对会直接停止工作)
网址:oshwhub.com/rm543/dig_loader_v06
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:8
  • 最近打卡:2025-10-06 18:05:33
已绑定手机

1

主题

13

回帖

99

积分

注册会员

积分
99
发表于 2024-11-18 19:51:10 来自手机 | 显示全部楼层
rm543 发表于 2024-11-18 11:47
我这个开源工程里面用的就是这个SOP8 的STC8G1K08A,ADC采样只读一次直接使用结果,不使用任何滤波,目 ...

因为你不用连续读数,我的程序是要读取最小值,需要用最小值来做判断,他应该是在采集外部数值时,内部有什么置0值的某些原因,也许要特别设置一下,在这里看看哪位大佬帮忙一下?
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:141
  • 最近打卡:2025-10-16 09:02:10

6

主题

70

回帖

1064

积分

金牌会员

积分
1064
发表于 2024-11-19 10:44:47 | 显示全部楼层
我之前用STC8G和STC8H以及STC15W系列做ADC案子都没有出现问题还特别稳定,这次新案子用STC8H1K08-36I-QFN20也出现ADC输出值为零,PCBA设计时ADC_REF和ADC IN都用了10U电容滤波但还是在加负载时严重输出异常,我怀疑是我的代码配置不匹配导致,没有找到非库文件版ADC代码,用范例代码改的.
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:8
  • 最近打卡:2025-10-06 18:05:33
已绑定手机

1

主题

13

回帖

99

积分

注册会员

积分
99
发表于 2024-11-19 12:45:33 来自手机 | 显示全部楼层
已经不是输入端外部问题了,我已直接把输入端连接5V电源了,在用眼看显示值一直是1023的,但如果用程序取最小值时,就很快会得到0值,再把变量置一个值,不到几秒,就会读到0值,现在我就是在8脚的SOP8或DlP8,8G和8H系发现是这样,而同一程序在DlP16/20 ,SOP16系正常

点评

不管多少引脚,ADC外设都是一样的,不应该有差别。  详情 回复 发表于 2024-11-19 15:09
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:209
  • 最近打卡:2025-10-16 08:03:21

787

主题

1万

回帖

1万

积分

管理员

积分
19784
发表于 2024-11-19 12:58:54 | 显示全部楼层
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:201
  • 最近打卡:2025-10-16 11:05:25

78

主题

6780

回帖

1万

积分

超级版主

积分
14401
发表于 2024-11-19 15:09:58 | 显示全部楼层
pzeg*** 发表于 2024-11-19 12:45
已经不是输入端外部问题了,我已直接把输入端连接5V电源了,在用眼看显示值一直是1023的,但如果用程序取最 ...

不管多少引脚,ADC外设都是一样的,不应该有差别。
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:126
  • 最近打卡:2025-08-07 09:24:45

5

主题

52

回帖

891

积分

高级会员

积分
891
发表于 2024-11-19 15:22:30 | 显示全部楼层
pzeg*** 发表于 2024-11-16 16:47
重点是:使用SOP8 或DIP8  
使用8脚的就有这种现象 使用16脚的就没有
是不是设置上还要设置什么

我复制了你的代码进行测试,运行了数十分钟没有出现ADC异常为0的状态

这段代码中发现有一处错误:设置 ADCTIM  寄存器前应先将 P_SW2 的第7位置1,否则是向此地址的XDATA进行操作。
但我在本次测试中并无修改此处,所以这个寄存器的设置应该是没有生效的。

代码运行读取ADC第1通道,如果读取结果小于10,将在OLED显示屏上显示结果,并进行次数累加,否则显示当前值(为演示效果,实际上去掉正常时显示,让ADC快速重复读取也不影响结果)。
且可以见到,开关切换到USB输入电压测量时,并未出现ADC值小于10的情况,开关切换到外部输入时,测量值为零,计数累加,逻辑无误。

电路板中使用的主控是 STC8G1K08A ,封装为 SOP8,单片机供电电压为3V
电路图如下:输入USB的5V连接到 USB_VINP ,外部切换开关按下后,USB输入电压切换到 VIN1_ADC,单片机P3.1引脚(ADC1通道)连接到 VIN1_ADC 进行测量。
截图202411191510283470.jpg

完整工程见:oshwhub.com/rm543/dig_loader_v06  (立创OSHW开源广场,复制到浏览器打开)



video_20241119_150026.mp4

41.38 MB, 下载次数: 112

测试视频

回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:141
  • 最近打卡:2025-10-16 09:02:10

6

主题

70

回帖

1064

积分

金牌会员

积分
1064
发表于 2024-11-19 19:39:55 | 显示全部楼层
本帖最后由 qq603599910 于 2024-11-19 19:48 编辑

我这边有复制到靠近DC-DC电路偶尔值为零会更加频繁,单独焊了一片MCU连线到原板子做ADC读取.我的板子很小不能远离DC-DC电路,现在在尝试判定输出值为零就重新读一次.

以下是ADC循环10次轮询2个通道的输出值截图,没有规律偶发输出值为0 .

截图202411191948127374.jpg
回复

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-10-17 05:47 , Processed in 0.155200 second(s), 107 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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