我有一个定制的Arduino ATMega328板,该板通常以5V @ 8MHz运行(使用Arduino Pro 3.3V 8MHz配置文件和引导程序)。我使用此设置的主要原因是,当主电源断开并且它开始用完电池电源(纽扣电池3V)时,我可以使电路板进入睡眠状态。5V和3V电源经过二极管“或”运算,并且5V输入连接至INT0。在代码中,当它检测到INT0下降到低电平时,它将初始化睡眠模式,并且所有电源都将掉电,但看门狗定时器除外,该定时器保持1Hz周期以保持内部计数并检查是否应将芯片唤醒。这适用精美当第一施加5V电源,则电池被插入,然后5V已断开。它进入睡眠状态,当5V恢复时它会唤醒,我可以看到它并没有计数。
然而,当3V应用问题就来了第一个。老实说,我不确定它是否正在启动。但是应该做的是引导,检查INT0(数字2)是否为低电平,如果是,则直接进入睡眠状态。通过观察电流消耗,我可以看到电流在几秒钟内达到几mA,然后下降到约0.3mA(仍然高于睡眠模式下的电流)。但是当我重新施加5V电压时,什么也没有。功率消耗会恢复,但没有响应(通过FTDI串行)。
也许我错过了一些东西,它无法在3V电压下启动...从理论上讲,它应该可以正常运行。
更新:我在D13上放了一个LED,并尝试了眨眼草图。从3V或5V开始工作正常。但是,当我运行固件并从3V启动时,LED刚开始疯狂闪烁。我不知道是什么原因造成的,因为我什至从未将D13设置为代码中的任何内容。但这让我觉得这与引导加载程序有关...