OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 7798|回复: 11

按键并联消抖电容引发的BUG

[复制链接]

11

主题

3330

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8428
金钱
8428
注册时间
2020-5-11
在线时间
3864 小时
发表于 2021-2-2 17:00:01 | 显示全部楼层 |阅读模式
前不久交付了一个设备,出了点问题,其中一个是系统上电就有输出,正常逻辑是要按下启动键才会有输出。
经查,这个问题是按键并联电容导致,此电容本意是消抖,但单片机上电后很快检测按键,而上拉电阻对电容充电需要时间,导致单片机误以为按键按下。
解决方法 一是增加程序启动到按键检测的延时,二是去掉并联电容采用软件消抖。
最后,希望大家引以为戒。
专治疑难杂症
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

26

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
255
金钱
255
注册时间
2017-10-5
在线时间
46 小时
发表于 2021-2-24 17:09:19 | 显示全部楼层
上电后延时个0.1秒再检测。
回复 支持 反对

使用道具 举报

70

主题

6729

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
12892
金钱
12892
注册时间
2012-11-26
在线时间
3762 小时
发表于 2021-2-25 08:21:05 | 显示全部楼层
感谢分享,去抖电容用的多大的?104?
回复 支持 反对

使用道具 举报

11

主题

3330

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8428
金钱
8428
注册时间
2020-5-11
在线时间
3864 小时
 楼主| 发表于 2021-2-25 12:02:13 | 显示全部楼层
jermy_z 发表于 2021-2-25 08:21
感谢分享,去抖电容用的多大的?104?

我是常用104,但是仔细想想还是不太好,电容通过按键放电瞬间大电流可能会有不良影响,电容应尽量小或不用才好。若非要接大电容,建议按键与电容之间要串个电阻。
专治疑难杂症
回复 支持 反对

使用道具 举报

1

主题

26

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
255
金钱
255
注册时间
2017-10-5
在线时间
46 小时
发表于 2021-2-25 13:38:49 | 显示全部楼层
我一般是用防抖动处理。没有加电容。
回复 支持 反对

使用道具 举报

2

主题

255

帖子

0

精华

高级会员

Rank: 4

积分
823
金钱
823
注册时间
2013-6-5
在线时间
142 小时
发表于 2021-5-14 15:09:45 | 显示全部楼层
LcwSwust 发表于 2021-2-25 12:02
我是常用104,但是仔细想想还是不太好,电容通过按键放电瞬间大电流可能会有不良影响,电容应尽量小或不 ...

其实,电容只有和电阻配合才有延时效果,单独一个电容效果是不大的
回复 支持 反对

使用道具 举报

11

主题

3330

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8428
金钱
8428
注册时间
2020-5-11
在线时间
3864 小时
 楼主| 发表于 2021-5-15 09:31:53 | 显示全部楼层
本帖最后由 LcwSwust 于 2021-5-15 09:34 编辑
zhxzhx 发表于 2021-5-14 15:09
其实,电容只有和电阻配合才有延时效果,单独一个电容效果是不大的

我没听懂,你是以为按键IO没加上拉电阻?
专治疑难杂症
回复 支持 反对

使用道具 举报

2

主题

255

帖子

0

精华

高级会员

Rank: 4

积分
823
金钱
823
注册时间
2013-6-5
在线时间
142 小时
发表于 2021-5-19 15:23:30 | 显示全部楼层
LcwSwust 发表于 2021-5-15 09:31
我没听懂,你是以为按键IO没加上拉电阻?

不是上拉电阻,而是 按键和接了电容的io引脚之间加一个电阻,这样就不会有大的放电电流了
回复 支持 反对

使用道具 举报

11

主题

3330

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8428
金钱
8428
注册时间
2020-5-11
在线时间
3864 小时
 楼主| 发表于 2021-5-19 15:43:10 | 显示全部楼层
zhxzhx 发表于 2021-5-19 15:23
不是上拉电阻,而是 按键和接了电容的io引脚之间加一个电阻,这样就不会有大的放电电流了

哦,明白了,按键与IO之间加电阻,IO接电容到地。
似乎有些地方为了减小EMC还是啥的会这样接。
但是,6#所说“电容只有和电阻配合才有延时效果”,我还是没听懂。
一般按键会接上拉电阻,若按键并电容,在按键放开瞬间就会有延时效果;
而你说的加在按键与IO之间加电阻,这电阻与IO的接地电容会让按键在按下与放开时都有延时,
有可能出现的极端情况是明明按下了按下,单片机确未检测到,一般应用倒也没关系。
专治疑难杂症
回复 支持 反对

使用道具 举报

2

主题

255

帖子

0

精华

高级会员

Rank: 4

积分
823
金钱
823
注册时间
2013-6-5
在线时间
142 小时
发表于 2021-5-20 15:34:41 | 显示全部楼层
LcwSwust 发表于 2021-5-19 15:43
哦,明白了,按键与IO之间加电阻,IO接电容到地。
似乎有些地方为了减小EMC还是啥的会这样接。
但是,6 ...

电容上的电荷经过这个电阻通过按键对地放电,这样会形成一个下降的曲线,如果没有这个电阻,按键按下会立刻拉低,上拉电阻只对抬起按键有效,加大电容,示波器能看出来
回复 支持 反对

使用道具 举报

11

主题

3330

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8428
金钱
8428
注册时间
2020-5-11
在线时间
3864 小时
 楼主| 发表于 2021-5-20 15:40:01 | 显示全部楼层
zhxzhx 发表于 2021-5-20 15:34
电容上的电荷经过这个电阻通过按键对地放电,这样会形成一个下降的曲线,如果没有这个电阻,按键按下会立刻 ...

对,明白你的意思了。
专治疑难杂症
回复 支持 反对

使用道具 举报

2

主题

255

帖子

0

精华

高级会员

Rank: 4

积分
823
金钱
823
注册时间
2013-6-5
在线时间
142 小时
发表于 2021-5-20 15:53:27 | 显示全部楼层
EMC 要求严格的时候,必须这样处理
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-1-31 23:46

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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