大多数微控制器(例如 AVR、MSP430、PIC 等)支持多种不同的睡眠模式。“最深”睡眠模式是一种声称功耗最低的模式(例如“断电”、“关机”),但所有时钟系统通常都在这些模式下停止,在我看来,“从它们中唤醒”是通过外部刺激(例如引脚更改中断、芯片复位)。我错过了什么吗?是否有非常低功耗的方法可以为 MCU 生成周期性唤醒信号?
假设我的目标是尽量减少功耗(即尽可能长时间地深度睡眠,尽可能短暂地保持清醒),同时定期醒来执行功能,实现这种行为的常见方法是什么?为了进一步简化问题,假设我的函数是无状态的(我不必记住过去的任何事情来执行它)。
我在 MSP430 上使用 WDT 取得了一些成功,以获得这种效果。我只是让我的主要例程成为我的函数,最后一行使看门狗定时器在一段时间后到期并进入 LPM4.5 或任何所谓的“深度睡眠”模式。最终结果是功能被执行,MCU 休眠,WDT 到期,芯片复位,令人作呕。似乎有效,只是想知道是否有一种“更好”、“更优雅”或“更节能”的方式来获得这种行为?
我还没有在 AVR 上尝试过这种方法,但我认为 AVR 中的 WDT 比 MSP430 更“耗电”,因此它对低功耗工作的吸引力可能较小。也许没有一种“通用”的低功耗方法,您必须使用给定产品线提供的工具?我知道新的 picoPower 系列有很多超棒的功能,比如事件系统和睡眠行走,如果你可以让你的应用程序适应那个结构,在某些情况下几乎不需要 CPU 唤醒......
好吧,我的游荡已经够多了,让我们来看看你们要说的话:)
编辑 说明技术的具体示例也很酷!