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

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

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

6

主题

63

回帖

449

积分

中级会员

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

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:125
  • 最近打卡:2025-08-06 09:05:53

5

主题

52

回帖

887

积分

高级会员

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

https://oshwhub.com/rm543/dig_loader_v06
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:125
  • 最近打卡:2025-08-06 09:05:53

5

主题

52

回帖

887

积分

高级会员

积分
887
发表于 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
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:5
  • 最近打卡:2024-11-19 22:19:37
已绑定手机

0

主题

12

回帖

80

积分

注册会员

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

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

使用道具 举报 送花

  • 打卡等级:常住居民I
  • 打卡总天数:79
  • 最近打卡:2025-08-06 13:55:53

6

主题

68

回帖

788

积分

高级会员

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

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:5
  • 最近打卡:2024-11-19 22:19:37
已绑定手机

0

主题

12

回帖

80

积分

注册会员

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

点评

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

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:150
  • 最近打卡:2025-08-06 08:18:56

765

主题

1万

回帖

1万

积分

管理员

积分
18495
发表于 2024-11-19 12:58:54 | 显示全部楼层
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:143
  • 最近打卡:2025-08-06 23:15:14

76

主题

6596

回帖

1万

积分

超级版主

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

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

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:125
  • 最近打卡:2025-08-06 09:05:53

5

主题

52

回帖

887

积分

高级会员

积分
887
发表于 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, 下载次数: 76

测试视频

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民I
  • 打卡总天数:79
  • 最近打卡:2025-08-06 13:55:53

6

主题

68

回帖

788

积分

高级会员

积分
788
发表于 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-8-7 05:31 , Processed in 0.135918 second(s), 104 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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