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.

[参考译文] MSP430FR5969:如果引脚为高电平、则始终唤醒

Guru**** 2539500 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/975601/msp430fr5969-always-wake-up-if-pin-is-high

器件型号:MSP430FR5969

在此应用中、芯片通常处于 LPM 4.5模式、并在 P1.1变为高电平时唤醒、运行程序、然后重新进入 LPM 4.5模式、除非 P1.1保持高电平。

我希望芯片在 P1.1变为高电平或处于高电平时唤醒。

我看到一种情况、即 P1.1在设置为 LPM 模式期间变为高电平、这会导致芯片进入 LPM 模式而不会唤醒、尽管 P1.1为高电平。 可能会发生这种情况的时钟周期可能会持续几十个。 是否有任何方法可以避免这种情况?

输入 LPM 4.5的代码如下所示(简化):


//禁用中断
_BIC_SR_register (GIE);

//将 P1.1设置为上升沿中断输入、无拉电流
P1SEL0 &=~BIT1;
P1SEL1 &=~BIT1;
P1REN &=~BIT1;
P1DIR &=~BIT1;
P1IES &=~BIT1;
P1IE |= BIT1;
P1IFG &=~BIT1;

//如果 P1.1为高电平或已经被触发,则防止进入睡眠状态
IF (P1IN 和 BIT1 || P1IFG 和 BIT){
//触发 PUC
WDTCTL = 0;
while (1);
}

//如果 P1.1在这里变为高电平、芯片保持在 LPM4.5中并且不会被唤醒!!

//进入 LPM4.5
PMMCTL0_H = PMMPW_H; //打开 PMM 寄存器进行写入
PMMCTL0_L |= PMMREGOFF; //并设置 PMMREGOFF
PMMCTL0_H = 0; //锁定 PMM 寄存器
_bis_SR_register (LPM4_BITS);

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

    在用户指南(SLAU367P)第12.3.3节[第二个"注:"]中讨论了这一点(有点间接)。 建议在进入 LPM 之前重新启用 GIE。

    它讨论的是 IFG、但由于您明确检查的是高状态、所以比赛实际上是关于同时转换高电平的案例、这将触发 IFG。

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

    谢谢。  这确实说明了如何比我在上面所做的更好地缓解问题。  如果复位/触发时、我可以将其移动到 ISR。  这可能会进一步缩短时间,并可能消除这种时间。

    仍然想知道是否存在竞态条件、即引脚在 LPM 激活时变为高电平、因此它不会唤醒。  假设我需要尝试触发此条件以查看它是否存在。  如果不可重现、可能会将其称为"良好"。

    除非有其他好的想法。

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

    > 仍然想知道是否存在竞争状态、引脚在 LPM 激活时变为高电平

    这似乎是注释的要点:如果您按照他们的建议执行操作、则中断会在之前(作为中断)或之后(作为唤醒)触发、因此两者之间不存在任何中断。

    我想这是真的、因为他们提到了它。 我不知道设置测试用例有多容易。

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

    啊、我没有这么读、但你可能是对的。  在任何情况下、它都应该会大有帮助。  我认为最简单的测试是在已知/精确的延迟下对 RSI 和 P1.1进行脉冲。  进行一些校准。

    感谢你的帮助。  如果我确实发现任何有趣的东西、我将在这里跟进。