假设微控制器上的输入有一个 5V 上拉电阻和一个接地开关(常开)连接到它。我知道开关在关闭时应该去抖(在我的情况下,在软件中),但是在开关打开时需要去抖吗?
开关打开时需要去抖动吗?
电器工程
图片
开关
输入
按钮
去抖
2022-01-12 07:46:58
4个回答
是的,如果您希望每次开关更改状态时都有一个保证的单边沿,则必须在两个方向上进行去抖动。
幸运的是,如果开关连接到微控制器,您不需要任何额外的硬件来防抖。如果微型有一个内部上拉,很多人都有,那么你只需要微型引脚和地之间的开关就可以了。
我发现 50 毫秒是一个很好的去抖时间。大多数开关的弹跳时间远低于此值,但少数开关的弹跳时间可能接近那么长。但是,对于人类用户来说,50 毫秒仍然是瞬间的,所以你还不如更加可靠。唯一的区别是您在固件中计数的数字,因此无需额外费用。无论如何,我通常有一个 1 毫秒的周期性中断,所以如果开关在该中断中连续 50 次处于相同状态,那么你声明它去抖动到新状态。
响应评论的去抖动逻辑的详细信息:
通常,您将有一个全局位来指示开关的官方去抖状态。这就是任何需要知道开关设置方式的逻辑所使用的。您需要的唯一附加状态是中断程序中的计数器,通常是单个字节。假设中断是每 1 毫秒,去抖时间是 50 毫秒。对于每个中断:
如果瞬时状态与去抖动状态匹配: 将计数器重置为 50 完毕 如果瞬时状态不同于去抖动状态: 递减计数器 如果计数器达到 0: 声明新的去抖动状态 将计数器重置为 50 完毕
是的,我会使用一个,机制基本相同。当您断开接触时,您将在某个时间点使开关产生良好的电接触以及没有产生良好的电接触。与您进行联系时相同。
一般来说,是的。机械开关在关闭和打开时都会产生电噪声(弹跳)。
一般来说,是的,但这始终取决于您对数字输入的操作。我有一些系统绝对不需要在任何一个方向上去抖动。
但是,如果您正在驱动中断,则很可能应该去抖动。
其它你可能感兴趣的问题