我正在开发一个ATMega项目,该项目将节省时间,因此我正在尝试使它具有软件时间(基于millis()),DS1307或DS3231(ChronoDot)RTC的选项。
最基本的说,我想做的是提供一个可焊接的ChronoDot头,然后用某种方式在软件中检测是否已连接ChronoDot并切换为使用它。通常,检查DS1307或DS3231是否存在(因为它们使用相同的I2C寄存器)通常很容易,但是在进行最初的检查后,它们之间确实确实有些偏离,并且后者具有更多功能。所以我仍然想确定连接了哪个。通常,我计划直接在板上放置一个作为默认选项的DS1307焊料,而DS3231支持将仅通过双4引脚接头连接器提供完整的ChronoDot。ChronoDot本质上适合DS1307正常运行的地方(在这种情况下不会填充)。我特别关注ChronoDot的主要原因是它 它很流行,易于获取,并且对于最终用户不需要SMD焊接(如果是套件的话)。所以,这就是我在想...
DS1307和DS3231的芯片上都有一条Vbat线,但实际上并不需要任何东西。但是,ChronoDot的分线板上有一个实际的VBat引脚。我可能只能连接ChronoDot接头连接器上的Vbat,而不连接DS1307,并将其连接到我ATMega上的数字输入引脚。但是该输入引脚是否已通过电阻下拉至地(不确定该值是多少……也许是4.7k?)。如果我的EE理论是正确的,那么我可以读取该引脚,如果我的电平低,则没有计时码字;但是如果我的电平高,则存在。
像这样:
模拟此电路 –使用CircuitLab创建的原理图
我的主要问题是,这样做是否会耗尽RTC上的备用电池?通常,在提供5V主电源时,不会从备用电池汲取电流,但是将其连接到数字输入是否会一直从电池获取电能?或者,可以说,有一种我需要在从引脚读取后将其插入以使其“断开连接”的模式吗?我知道我可以将其更改为输出,但是我相信,如果将其设置为输出并且设置为低电平,则基本上可以将电池接地。
无论如何,我的EE课程是很久以前的。在此理论上的任何帮助将不胜感激。