找回密码
 立即注册
楼主: Inve***

STC8G2K64S4的AD采集有时采集的数据偏大 | 已解决

[复制链接]

该用户从未签到

13

主题

40

回帖

194

积分

注册会员

积分
194
 楼主| 发表于 2023-8-14 13:21:06 | 显示全部楼层
L1L3A代码IRC 11.0295M且P13单独的AD口 这个压缩包里面有串口助手数据 我是单独在这个口外接可调电阻分压给ADC3口的 为什么有的时候会出现0?

L1L3A.rar

80.88 KB, 下载次数: 14

回复 支持 反对 送花

使用道具 举报

该用户从未签到

13

主题

40

回帖

194

积分

注册会员

积分
194
 楼主| 发表于 2023-8-14 13:21:42 | 显示全部楼层
梁工 发表于 2023-8-14 13:04
直接下载HEX文件测试,串口助手观察结果!做平均值是为了对信号滤波(这是通用测试程序,避免有的用户输入 ...

梁工 我在下面上传了程序 麻烦帮忙看看 谢谢
回复 支持 反对 送花

使用道具 举报

该用户从未签到

13

主题

40

回帖

194

积分

注册会员

积分
194
 楼主| 发表于 2023-8-14 14:04:54 | 显示全部楼层
Inver1688 发表于 2023-8-14 13:21
梁工 我在下面上传了程序 麻烦帮忙看看 谢谢

程序在楼上 L1L3A  帮忙看看 谢谢 串口打印会出现0其他值可以 谢谢
示波器观察单片机电源以及AD输入都很稳
回复 支持 反对 送花

使用道具 举报

该用户从未签到

13

主题

40

回帖

194

积分

注册会员

积分
194
 楼主| 发表于 2023-8-14 14:24:01 | 显示全部楼层
梁工 发表于 2023-8-14 13:04
直接下载HEX文件测试,串口助手观察结果!做平均值是为了对信号滤波(这是通用测试程序,避免有的用户输入 ...

我单独外接可调电阻的分压 会时不时出现0值 其他值还算可以 其他板子会有的时候出现高值
回复 支持 反对 送花

使用道具 举报

该用户从未签到

13

主题

40

回帖

194

积分

注册会员

积分
194
 楼主| 发表于 2023-8-14 14:30:27 | 显示全部楼层
梁工 发表于 2023-8-14 13:04
直接下载HEX文件测试,串口助手观察结果!做平均值是为了对信号滤波(这是通用测试程序,避免有的用户输入 ...

C:\Users\Administrator\Desktop\ADC03.png
回复 支持 反对 送花

使用道具 举报

该用户从未签到

13

主题

40

回帖

194

积分

注册会员

积分
194
 楼主| 发表于 2023-8-14 14:32:04 | 显示全部楼层
梁工 发表于 2023-8-14 13:04
直接下载HEX文件测试,串口助手观察结果!做平均值是为了对信号滤波(这是通用测试程序,避免有的用户输入 ...

此外你发的程序,程序采取的是查询模式 发现平均值637 557 按道理不应该差别这么大的 是不是芯片自己的bug ?
回复 支持 反对 送花

使用道具 举报

该用户从未签到

13

主题

40

回帖

194

积分

注册会员

积分
194
 楼主| 发表于 2023-8-14 14:33:08 | 显示全部楼层
梁工 发表于 2023-8-14 10:59
100%使用的问题,没用对。STC8系列的MCU是非常优秀的,精度高,噪声低。
你可以使用我的例程测试,直接下 ...

用这个程序测试可 发现AD值 637 557 平均值都差这么多?

点评

请明确告知你要那个ADC输入?你程序太乱,初始化: ADC_CONTR = ADC_POWER |ADC_START| AD_CHS1;//AD_INNER;//AD_CHS2;//ADC_START ADC0并且开启转换 ADC中断: ADC_CONTR = 0xc3; 两个操作不同,请告诉我i  详情 回复 发表于 2023-8-14 15:01
回复 支持 反对 送花

使用道具 举报

该用户从未签到

46

主题

3054

回帖

6887

积分

超级版主

积分
6887
发表于 2023-8-14 15:01:57 | 显示全部楼层
Inver1688 发表于 2023-8-14 14:33
用这个程序测试可 发现AD值 637 557 平均值都差这么多?

请明确告知你要那个ADC输入?你程序太乱,初始化:
        ADC_CONTR = ADC_POWER |ADC_START| AD_CHS1;//AD_INNER;//AD_CHS2;//ADC_START           ADC0并且开启转换
ADC中断:
        ADC_CONTR = 0xc3;  
两个操作不同,请告诉我i实际要哪个输入的?我写一个测试好给你。

你的程序有一个很大的问题,就是不断地做ADC,几个us一次,程序前后台操作ADC_L1_L3,又没有保证信息的不变性(即中断操作时,主程序不能操作,主程序操作时,中断不能操作,否则你就会乱)。
应该中断设置标志,主程序处理完成后清除标志,中断中发现标志未清除,则不操作ADC_L1_L3。
你应该根据项目要求的ADC速度,用定时器或PWM来触发。
回复 支持 反对 送花

使用道具 举报

该用户从未签到

13

主题

40

回帖

194

积分

注册会员

积分
194
 楼主| 发表于 2023-8-14 15:08:36 | 显示全部楼层
梁工 发表于 2023-8-14 15:01
请明确告知你要那个ADC输入?你程序太乱,初始化:
        ADC_CONTR = ADC_POWER |ADC_START| AD_CHS1;//AD_I ...

ADC是ADC3口 且整个中断程序都是ADC_CONTR = 0xc3;  
主程序操作只是读取数据 打印数据 并没改变数据
此外你发的程序
STC8G系列-ADC相关程序\ADC相关程序-STC8G2K64Sx-48PIN\01-15路ADC转换-BandGap-串口1(P3.1)返回结果-C语言
整个打印出来的值ADC03=0637  ADC03=0557
STC8G系列-ADC相关程序打印出的AD值都差别这么大说明单次取值肯定有小的值出现
STC8G系列-ADC相关程序整个程序应该不是us级运行的  
目前官方程序也不行
回复 支持 反对 送花

使用道具 举报

该用户从未签到

13

主题

40

回帖

194

积分

注册会员

积分
194
 楼主| 发表于 2023-8-14 15:10:38 | 显示全部楼层
梁工 发表于 2023-8-14 15:01
请明确告知你要那个ADC输入?你程序太乱,初始化:
        ADC_CONTR = ADC_POWER |ADC_START| AD_CHS1;//AD_I ...

我按照你发的程序来 串口打印
ADC03=0637  
ADC03=0557
其他无关的AD值我没写出来
请问两者差别这么大的AD值能用?

点评

专门花时间改了一个给你测试,下面是我的测试结果,一个跳动都没有。你直接下载HEX测试,如果还有问题,你还是寄一个样板给我吧,否则这样扯下去没意义了。  详情 回复 发表于 2023-8-14 16:03
回复 支持 反对 送花

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-21 18:41 , Processed in 0.068272 second(s), 66 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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