MSP430 停止响应高频查询

Posted

技术标签:

【中文标题】MSP430 停止响应高频查询【英文标题】:MSP430 Stops Responding to Queries at High Frequencies 【发布时间】:2021-04-06 05:52:12 【问题描述】:

我一直致力于将板载 ADC 与我在 MSP-EXP430FR2433 上的现有项目集成。为此,我使用了 WDT 间隔定时器,每次 WDT ISR 触发时都向 ADC 查询新数据(使用 ADCCTL0 |= ADCENC | ADCSC;)。在低频(WDT 间隔定时器)下,这种设计在大多数情况下都能正常工作,ADC ISR 会用数据响应查询。但是,当我增加 WDT 间隔定时器的频率时,ADC ISR 将完全停止响应我的查询。我最近的想法是查询中一定存在某种保持时间违规,但在上下文中我不确定这是否有任何意义。我还在考虑这样一个事实,即我没有正确配置 ADC 以使其按我想要的方式工作。为此,我在下面放弃了我的 ADC 配置。非常感谢您对此问题的任何帮助。

SYSCFG2 |= ADCPCTL1;
ADCCTL0 |= ADCON;
ADCCTL1 |= ADCSHP | ADCSSEL1 | ADCSSEL0;         
ADCCTL2 |= ADCRES;
ADCMCTL0 |= ADCINCH_1;
ADCIE |= ADCIE0;

【问题讨论】:

WDT 和 ADC 中断的相对优先级是什么?与 WDT 间隔计时器的周期相比,WDT ISR 的执行时间是多少? 【参考方案1】:

尝试用简单的软件延迟例程临时替换 WDT 间隔计时器。确保在程序开始时完全禁用 WDT。建议使用编译器内部函数 __delay_cycles(1000) 来进行延迟。这将消除中断优先级或错误 WDT 配置的可能性。如果这可行,那么开始减少延迟量,直到您达到所需的速率。如果您达到所需的速率(您想要的最快 ADC 采样),那么 ADC 就不是问题。然后,您可能想用真正的硬件定时器替换 WDT 间隔定时器,或者只是忍受 __delay_cycles() 软件延迟。

【讨论】:

以上是关于MSP430 停止响应高频查询的主要内容,如果未能解决你的问题,请参考以下文章

1-MSP430点亮一个灯

访问中的编号列导致查询停止响应

PL/SQL Developer 查询中程序停止响应

MSP430的I/O中断和看门狗定时器能同时使用吗?

显示器驱动程序已停止响应 并且已成功恢复 这是啥原因

Aurora R4显示器驱动以停止响应。GTX 680 双显卡。