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.

[参考译文] MSP430F5529:只需处理第一个触发中断(如果是多路中断)、忽略第一个触发中断后50us 内的任何其他中断

Guru**** 2543770 points
Other Parts Discussed in Thread: MSP430F5529, TDC7201

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/883439/msp430f5529-want-to-process-only-first-trigger-interrupt-in-case-of-mutiple-interrupts-ignoring-any-other-interrupts-for-50us-after-the-first

器件型号:MSP430F5529
主题中讨论的其他器件: TDC7201

您好!

我很尴尬地问这个问题,因为我认为 答案应该很小,但我只是没有找到答案,时间也在流逝。

我的程序使用一个驱动硬件中断的有噪声的 TTL"启动"信号。

我怀疑可能会发生多个"启动"触发事件、我想记录启动中断发生时的"时间"、以便我可以在大于100ns 和小于50us 的时间段内忽略后续触发事件(确切地说无关紧要)。

我想我只需要读取一些具有适当周期的时钟/计数器(计算经过的时间...)、并将继续寻找如何执行此操作。

任何帮助都值得赞赏-当然、我对人们处理这种情况的任何其他方式感兴趣。

当然、我们可能会清理 TTL 输入、但我仍想在逻辑中处理这种情况。

提前感谢。

BTW:我使用的是 CCS 8.3.1、处理器是 MSP430f5529 EVM。 已经配置了两个计时器中断来支持 TDC7201 ZAX EVM 子板。 当然、我已经了解了配置这些寄存器的逻辑、但仍然无法识别我应该读取的寄存器。  

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

    这听起来很像去抖。 有一种关于这个主题的文学类型,但它们大多涉及1-50毫秒的世界。

    我的第一个想法是<50微秒不是很长--使用计时器可能花费的时间超过它的价值。  

    我对__delay_cycles ()并不是很有信心,但在短期内,这通常只是一件事。 类似如下:

    GOT_INTERRUPT:
    __DELAY_CYCLES (50*Hz/1000000UL);//在这里等待50us
    CLEAR_INTERRUPT ();//清除同时发生的所有中断 

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

    Bruce、

    感谢您的快速回复。 您的建议正确无误。

    我想 仅在 第一次出现中断时禁用中断、可以 随意启用中断。

    我遇到这个线程。 您能帮我找到参考的:“TRM”-或描述推荐程序的另一本手册(以避免竞争条件)吗?

    非常感谢!

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

    该项目大概是指《TMS320F2837xS 技术参考手册》(SPRUHX5G)第3.4.4.3节。 即使在中断被禁用后、该竞态也会导致一个中断出现。

    C2000中断系统比 MSP430复杂得多。 据我所知、MSP430不易受此类竞争的影响。

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

    相关知识、谢谢!