【问题标题】:AVR Instruction to turn Atmel Atmega completely off完全关闭 Atmel Atmega 的 AVR 指令
【发布时间】:2014-10-15 08:55:00
【问题描述】:

是否有可以从运行程序中访问的指令或保险丝设置可以完全关闭 Atmel Atmega?

我的程序通过 ADC 测量供电电池的电量,然后返回睡眠模式,仅由外部中断唤醒以再次测量并再次睡眠,这是一个无限循环。 由于电池电量不应低于某个阈值(否则电池将迅速失去其充电能力),我宁愿安全起见并完全关闭 Atmega,而不是使用无休止的深度睡眠模式。

【问题讨论】:

  • 我不知道 AVR 有什么指令可以自行核爆(毕竟,如果它自行关闭,它如何再次打开?)现在,它可能是一个掉电探测器可以通过在电压过低时将 AVR 保持在复位状态来做您感兴趣的事情,请参见此处的示例:scienceprog.com/microcontroller-brown-out-detection
  • 您能更清楚地了解您要避免的事情吗?您是想阻止电池随着时间的推移放电过低,还是不想从电池中汲取太少的电压?
  • 如果您只是想确保电池不会完全放电并且控制器只能在安全阈值电压以上运行,您可以在所需的水平上激活内部欠压检测器。这将(例如)导致控制器在电池电量低于 2.7V 时保持重置。
  • 简而言之,不,没有 HALT 指令可以让 CPU 停止。如果深度睡眠模式仍然为您消耗过多电量,那么您需要考虑基于硬件的解决方案,例如掉电检测器。
  • 仍然可以选择使用外部掉电检测器。我们也将一个用于设计,因为集成的消耗很高。我相信它在极少数 uA 范围内。如果您有兴趣,我可以在明天发布零件编号。

标签: assembly avr atmel atmega microprocessors


【解决方案1】:

最接近的方法是将 AVR 置于掉电模式,这在 ATmega328P 上消耗 0.1uA。您可以通过写入 SMCR 寄存器(睡眠模式控制寄存器)来选择模式。参见Piconomix FW Library中的教程08_sleep_mode并进行修改。

【讨论】:

    【解决方案2】:

    不,没有。您将需要使用高端开关来控制 MCU 的电源,在按下按钮时激活它,并从 MCU 上的引脚停用它。查看EE.SE 了解各种 MCU 控制的电源电路。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多