我正在尝试使用python控制实时时钟模块PCF8563。我将模块连接到我的Raspberry Pi,我能够从模块中读取时钟。我想使用模块的内部报警功能,并从python控制此功能。
我知道有两个Python库,one here和one here。
第一个效果很好,但缺乏对报警功能的支持。第二个功能涵盖了大多数功能,但依赖于我不知道也不想使用的quick2wire库。我其实想改进第一个。
我发现了与此模块相关的good documented how-to,但遗憾的是它适用于Arduino。
我目前的问题是,如何通过i2c总线从注册表中获取的字节读取和设置特定位。用:
import smbus
bus = smbus.SMBus(0)
returndata = bus.read_byte_data(0x51, 0x01)
我从注册表0x01获取一个字节。我需要将返回值从bcd转换为十进制,但是如何获得该字节的第三位?我怎样才能改变它。
取自Arudino的方法:
...检查寄存器的第3位为0x01(“AF”报警标志位)。如果它是1 - 它是闹钟时间!然后,您可以通过将该位设置为零来关闭警报。使用硬件,首先将寄存器0x01的第1位设置为1 - 然后每当发生报警时,电流就会流入PCF8563的引脚3。
答案 0 :(得分:1)
简短的回答是:学习如何使用位掩码以及位移如何工作。 German Wikipedia site非常有帮助。在检查了PCF8563的数据表之后,我能够实现一些缺少的功能。进一步的进展see my GitHub repository。
我发现Arduino related How-To中可能有错误,我注意到了作者,请看链接文章下的评论。