This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] 旋转编码器的新维修例程

Guru**** 2392905 points
Other Parts Discussed in Thread: MSP430G2231

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/661719/new-servicing-routines-for-rotary-encoders

主题中讨论的其他部件:MSP430G2231

我为我的套件示波器的正交旋转编码器制定了一个新的维修程序,完成了这项工作后 ,我决定写下 新的程序并将 其发布到Github上。  包括用于定期轮询和引脚中断服务的例程。  不需要硬件开关跳闸。  这些例程是通用的,但我为安装在Launchpad上的MSP430G2231编写了测试代码,因此它们在这里是相关的。  示波器人员使用了大多数人目前使用的"查找表"状态转换例程,但它在示波器上的工作效果不是很好,而且我发现它在一般情况下不能很好地工作。  我的例程旨在避免交换机弹跳的所有影响,似乎工作良好且高效,并且不需要为反弹引起的Interrrupts提供服务。

在repo的PDF文件中对所有内容都进行了说明。  所有测试代码也包括在内,包括源代码和可刷新的十六进制文件, 我担心所有这些都包含在汇编程序中。  但我希望如果 有人感兴趣,创建C版本不会太困难。  程序很短。  我已经为两种类型的编码器提供了十六进制文件-这些编码器的脉冲数与每转的棘爪相同,而脉冲数与棘爪的一半。  在 这两种情况下,该故障码在每个制动器上都产生一个“嘀嗒”声。

新的程序是基于我所说的移动目标柱。  例如,在pin-interrupt例程中,一次只能在一个pin上启用中断。  当发生中断时,使能立即切换到另一个稳定的引脚。  因此,在触发中断的引脚上发生的任何弹跳都将不起作用,因为该引脚上不再启用中断。  因此,对于两个交换机的完整打开/关闭/打开循环,该例程 仅处理四个中断,一个用于 任一引脚上的每个合法过渡,而不用于退回。  轮询例程使用类似的逻辑来缓解反弹。

希望这对他人有用。

https://github.com/gbhug5a/Rotary-Encoder-Servicing-Routines

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    George,

    这里很整洁! 感谢您的分享!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    非常欢迎你,Jace。  为了完整起见,我添加了第二个PDF,描述了用于维修多个瞬时按钮开关的高效轮询例程。