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.

[参考译文] 编译器/MSP430G2553:delay()和 sleep()时序要求。

Guru**** 2577385 points
Other Parts Discussed in Thread: MSP430G2553, ENERGIA

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/610680/compiler-msp430g2553-delay-and-sleep-timing-requirement

器件型号:MSP430G2553
主题中讨论的其他器件: Energia

工具/软件:TI C/C++编译器

您好!

我使用的是 msp430g2553微控制器。 当我使用 delay()并将 Vcc 从4V 更改为2.8V 时,时间保持恒定(时钟不取决于电压)。 但当我使用 SLEE()函数时,时间会在4V 至2.8V 之间变化。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这些函数来自哪里? 您在谈论 Energia 吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是的、我将讨论 Energia。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    delay()函数是正式 Arduino API 的一部分。 它是通过基于 CPU 时钟的忙环路实现的。

    SLEEP()函数不是正式 Arduino API 的一部分。 它将 CPU 断电、并根据 VLO 来测量时间、VLO 从一开始就没有精确指定的频率、并且其温度和电压系数比其他时钟源高得多。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Sleep () 函数不是官方函数,但我可以在 Energia 和 Arduino 参考页中看到有关 Sleep 函数的信息。 这意味着它不是官方职能,我没有得到它。  

    我不知道 Delay()在 DCO 上工作,而 SLEEP()在 VLO 时钟源上工作。 我有一个问题 ,如果我在代码中将 DCO 配置为1MHz,然后再使用 SLEE()函数,微控制器是否会自动从 DCO 时钟源切换到 VLO。  这就是我所做的、时钟时序在很大程度上取决于提供给微控制器的电压。

    使用 DCO 作为时钟源时、是否可以使用睡眠模式。 我们将感谢您的任何帮助。  

    此致、

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您可以将 SLEE()与 Energia 配合使用,但可能不能与其他 Arduino (兼容)微控制器配合使用。

    要更改 SLEE()的行为方式,必须修改 Energia 源代码。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    • 如果我还记得在 Energia 中正确使用 sleep()命令、则会将 MCU 切换到 LPM3。  在此模式下、使用 VLO 时钟来实现 LPM3的低功耗状态。  我相信您不能同时运行 DCO 并实现低功耗。  如果您的睡眠/ LPM 时间很关键、也许您可以使用外部中断源作为退出 LPM3的更精确的方法。
    • 编辑: 您是否使用外部32K 晶体?  不确定 Energia 是否支持该器件、但它应以略高于 VLO 的功耗为代价提供更准确的间隔(请参阅数据表第23页)。