首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ATmega:使用外部RTC唤醒ATmega

ATmega:使用外部RTC唤醒ATmega
EN

Stack Overflow用户
提问于 2015-01-09 19:41:07
回答 1查看 1.5K关注 0票数 0

我正在做一个数据记录器,它应该尽可能的安全电池寿命。因此,记录器(芯片ATmega 328 p)进入睡眠状态,一切正常工作。现在,我想用一个RTC模块(DS3231)扩展设置,以便将时间信息包含到每个度量中。

现在我的问题是:如何通过外部RTC唤醒芯片,还是根本不可能。我发现芯片,即使是在电源下降模式下,也可以被外部事件唤醒。但我没有找到如何使用RTC的方法。可能有趣的是,记录器设置为每小时测量一次。

谢谢你的每一个提示!

(对所有的超级英雄来说,在你开始投票之前

EN

回答 1

Stack Overflow用户

发布于 2015-12-22 16:49:12

正如注释中已经提到的,您可以使用INT/SQW信号定期通过外部中断唤醒您的ATmega。DS3231 RTC模块的INT/SQW信号可以由两个内置的时间/日期警报(DS3231数据表)中的一个触发:

警报可以编程(通过警报启用和控制寄存器的INTCN位)以在警报匹配条件下激活INT/SQW输出。

每一整小时触发are 3231中断信号所需的步骤如下

  • 清除寄存器0x0B (警报2分钟)(包括掩码位A2M2)
  • 设置掩码位A2M3 (0x0C中的位7)
  • 设置掩码位A2M4 (0x0D中的位7)
  • 通过设置A2IE (0x0E中的位1)启用警报2
  • 通过设置DS3231 (0x0E中的第2位)来启用INTCN中断信号。

这将使INT/SQW引脚每隔一小时降低一次。警报1也可以被使用,但需要设置一个额外的寄存器。

将ATmega的中断INT0或INT1配置为在低级别上触发应该可以做到这一点。

来自ATmega 328 p数据表第12节:

异步检测INT0和INT1上的低层中断。这意味着这个中断也可以用来唤醒该部分,而不是从空闲模式中唤醒。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27867978

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档