我正在尝试用 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,那就是闹钟时间!然后,您可以通过将该位设置为零来关闭警报。使用硬件,首先将寄存器 0x01 的第 1 位设置为 1——然后每当发生警报时,电流就会流入 PCF8563 的引脚 3。