0

我正在尝试用 python 控制实时时钟模块 PCF8563。我将模块连接到我的树莓派,我可以从模块中读取时钟。我想使用模块的内部警报功能并从 python 控制此功能。

我知道有两个 Python 库,一个 here一个 here

第一个效果很好,但缺乏对警报功能的支持。第二个涵盖了大部分功能,但依赖于我不知道也不想使用的 quick2wire 库。我实际上想改进第一个。

我还发现了与该模块相关的一个很好的文档化操作方法,但遗憾的是它适用于 Arduino。

我当前的问题是,如何从通过 i2c 总线从注册表获得的字节中读取和设置特定位。和:

import smbus

bus = smbus.SMBus(0)
returndata = bus.read_byte_data(0x51, 0x01)

我从注册表 0x01 得到一个字节。我需要将返回值从 bcd 转换为十进制,但是我怎样才能得到这个字节的第三位呢?我该如何改变它。

取自 Arudino how-to:

... 检查 0x01 处寄存器的第 3 位(“AF”警报标志位)。如果是 1,那就是闹钟时间!然后,您可以通过将该位设置为零来关闭警报。使用硬件,首先将寄存器 0x​​01 的第 1 位设置为 1——然后每当发生警报时,电流就会流入 PCF8563 的引脚 3。

4

1 回答 1

1

简短的回答是:学习如何使用位掩码以及位移是如何工作的。德语维基百科网站很有帮助。在检查了 PCF8563 的数据表后,我能够实现一些缺失的功能。有关进一步的进展,请参阅我的 GitHub 存储库

我在Arduino 相关的 How-To中发现可能有错误,我注意到了作者,请参阅链接文章下的评论。

于 2014-12-21T20:58:41.110 回答