找回密码
 立即注册
查看: 367|回复: 10

为啥两种写法效果不一样

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:6
  • 最近打卡:2025-02-03 11:12:39
已绑定手机

2

主题

4

回帖

44

积分

新手上路

积分
44
发表于 2024-12-22 16:39:43 来自手机 | 显示全部楼层 |阅读模式
使用注释的那个,ADC的值是浮空的
使用下面那个ADC值则正常4095
因为我只需要使用几个ADC,在使用只把部分ADC设置为高阻输入时发现
Cache_-47d948a3239408cd.png
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:417
  • 最近打卡:2025-04-30 21:39:09
已绑定手机

34

主题

2096

回帖

2206

积分

荣誉版主

积分
2206
发表于 2024-12-22 17:49:49 | 显示全部楼层
zyk1*** 发表于 2024-12-22 17:29
大佬为啥IO模式不配置成高阻输入,ADC值是4095啊,采集3.3v数据也正常还很稳,配置成高组输入,能测数据 ...

如果设置为推拉模式或者准双向模式时,IO端口默认输出高电平,相应端口由于拉高所以采集到的 就是ADC最大值4095,设置成高阻输入时,采集到的是端口的实际值,至于波动大的情况需要考虑是VREF波动引起的还是输入电压本身波动就大,然后针对性的处理即可。
睁开眼睛做场梦~~~
回复 支持 1 反对 0

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:417
  • 最近打卡:2025-04-30 21:39:09
已绑定手机

34

主题

2096

回帖

2206

积分

荣誉版主

积分
2206
发表于 2024-12-22 17:00:58 | 显示全部楼层
十进制的1相当于十六进制的0x01, 和0xFF完全是不同的,换算成二进制1是00000001,而0xff是11111111.

点评

大佬我悟了,原来ADC不设置成高祖输入的话,ADC值就是4095,设置了才是几百的值  发表于 2024-12-22 17:27
睁开眼睛做场梦~~~
回复 支持 1 反对 0

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:6
  • 最近打卡:2025-02-03 11:12:39
已绑定手机

2

主题

4

回帖

44

积分

新手上路

积分
44
发表于 2024-12-22 17:15:12 | 显示全部楼层
晓*** 发表于 2024-12-22 17:00
十进制的1相当于十六进制的0x01, 和0xFF完全是不同的,换算成二进制1是00000001,而0xff是11111111. ...

0x01和0xFF,最低位都是1,为啥那最后一个端口的效果还是不一样的,搞不懂
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:6
  • 最近打卡:2025-02-03 11:12:39
已绑定手机

2

主题

4

回帖

44

积分

新手上路

积分
44
发表于 2024-12-22 17:17:33 | 显示全部楼层
晓*** 发表于 2024-12-22 17:00
十进制的1相当于十六进制的0x01, 和0xFF完全是不同的,换算成二进制1是00000001,而0xff是11111111. ...

我直接赋值1,ADC那个值就是4095,而我使用0xFF,ADC那个值就只有几百的值,0x01和0xFF,有一位是相同的,出来的效果不同

点评

除了P1.0,其它IO的输入输出配置完全不同,你的ADC用的不是P1.0吧  详情 回复 发表于 2024-12-22 17:25
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:417
  • 最近打卡:2025-04-30 21:39:09
已绑定手机

34

主题

2096

回帖

2206

积分

荣誉版主

积分
2206
发表于 2024-12-22 17:25:12 | 显示全部楼层
zyk1*** 发表于 2024-12-22 17:17
我直接赋值1,ADC那个值就是4095,而我使用0xFF,ADC那个值就只有几百的值,0x01和0xFF,有一位是相同的, ...

除了P1.0,其它IO的输入输出配置完全不同,你的ADC用的不是P1.0吧
睁开眼睛做场梦~~~
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:6
  • 最近打卡:2025-02-03 11:12:39
已绑定手机

2

主题

4

回帖

44

积分

新手上路

积分
44
发表于 2024-12-22 17:29:46 | 显示全部楼层
晓*** 发表于 2024-12-22 17:25
除了P1.0,其它IO的输入输出配置完全不同,你的ADC用的不是P1.0吧

大佬为啥IO模式不配置成高阻输入,ADC值是4095啊,采集3.3v数据也正常还很稳,配置成高组输入,能测数据但数据波动大

点评

设置成高阻,ADC值几百,IO开路的话用手一摸,ADC值还会变,手摸GND和ADC脚,接近0,手摸VCC和ADC脚,接近最大值,这就对了,高阻就是这样的,必须接个稳定电压才能稳(飘几个十几个字也是正常的),不希望飘要优化  详情 回复 发表于 2024-12-22 19:11
如果设置为推拉模式或者准双向模式时,IO端口默认输出高电平,相应端口由于拉高所以采集到的 就是ADC最大值4095,设置成高阻输入时,采集到的是端口的实际值,至于波动大的情况需要考虑是VREF波动引起的还是输入电压  详情 回复 发表于 2024-12-22 17:49
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:423
  • 最近打卡:2025-05-01 07:10:25
已绑定手机

76

主题

4833

回帖

8343

积分

超级版主

DebugLab

积分
8343
发表于 2024-12-22 19:11:40 | 显示全部楼层
zyk1*** 发表于 2024-12-22 17:29
大佬为啥IO模式不配置成高阻输入,ADC值是4095啊,采集3.3v数据也正常还很稳,配置成高组输入,能测数据 ...

设置成高阻,ADC值几百,IO开路的话用手一摸,ADC值还会变,手摸GND和ADC脚,接近0,手摸VCC和ADC脚,接近最大值,这就对了,高阻就是这样的,必须接个稳定电压才能稳(飘几个十几个字也是正常的),不希望飘要优化电路,比如不能用开关电源直接供电,尽量减小纹波,ADC脚接小电容滤波,VREF滤波,再配合数字滤波算法
DebugLab
回复 支持 1 反对 0

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:50
  • 最近打卡:2025-04-30 22:59:03

73

主题

5882

回帖

1万

积分

超级版主

积分
12073
发表于 2024-12-22 23:18:49 | 显示全部楼层
P1M1=0xff; P1M0=~0xff;   这两句将所有的P1.0~P1.7设置为高阻输入。
P1M1=1; P1M0=~1;   这两句将P1.0设置为高阻输入,P1.1~P1.7设置为推挽输出。
如果P1.0是ADC输入,则ADC结果应该一样。
回复 支持 1 反对 0

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-2 02:30 , Processed in 0.117198 second(s), 109 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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