我正在做一个数据记录器,它应该尽可能的安全电池寿命。因此,记录器(芯片ATmega 328 p)进入睡眠状态,一切正常工作。现在,我想用一个RTC模块(DS3231)扩展设置,以便将时间信息包含到每个度量中。
现在我的问题是:如何通过外部RTC唤醒芯片,还是根本不可能。我发现芯片,即使是在电源下降模式下,也可以被外部事件唤醒。但我没有找到如何使用RTC的方法。可能有趣的是,记录器设置为每小时测量一次。
谢谢你的每一个提示!
(对所有的超级英雄来说,在你开始投票之前
发布于 2015-12-22 16:49:12
正如注释中已经提到的,您可以使用INT/SQW信号定期通过外部中断唤醒您的ATmega。DS3231 RTC模块的INT/SQW信号可以由两个内置的时间/日期警报(DS3231数据表)中的一个触发:
警报可以编程(通过警报启用和控制寄存器的INTCN位)以在警报匹配条件下激活INT/SQW输出。
每一整小时触发are 3231中断信号所需的步骤如下
A2M2)A2M3 (0x0C中的位7)A2M4 (0x0D中的位7)A2IE (0x0E中的位1)启用警报2INTCN中断信号。这将使INT/SQW引脚每隔一小时降低一次。警报1也可以被使用,但需要设置一个额外的寄存器。
将ATmega的中断INT0或INT1配置为在低级别上触发应该可以做到这一点。
来自ATmega 328 p数据表第12节:
异步检测INT0和INT1上的低层中断。这意味着这个中断也可以用来唤醒该部分,而不是从空闲模式中唤醒。
https://stackoverflow.com/questions/27867978
复制相似问题