python 同步时间 树莓派_如何同步树莓派时钟?

本文探讨了如何在树莓派上进行时间同步,并提供了两种GPIO通信方法:控制信号同步和单线协议。控制信号方法通过额外的控制引脚触发数据读取,而单线协议则通过固定时序的两位传输实现数据交换。
摘要由CSDN通过智能技术生成

您不应该尝试根据时间同步发送方和接收方。你应该在发送方选择发送的频率,让接收方坐在那里等待比特的到来,而不是睡觉。因为睡觉会让你错过东西。在

使用:GPIO.add_event_detect(17, GPIO.BOTH, callback=my_callback)

监听PIN上的更改,并在发生更改时执行my_callaback。

您也可以选择等待上升沿通孔GPIO.RISING或下降通孔GPIO.FALLING。在

例如,这里有一些东西可以开始,没有经过测试或任何东西:

^{pr2}$

这可能还不够,因为你无法检测到不改变状态的位。

要解决这个问题,您有很多选择,我只想提两个最简单的选项:

控制信号

您可以使用另一个管脚作为控制信号,并用它触发接收器上的读数。这样,您就触发了对控制引脚上升沿的读取,并读取数据引脚的值。在

发送人:def send_bit(pin, bit):

GPIO.output(24, GPIO.HIGH) # first send the control bit

GPIO.output(pin, bit): # then the data on another pin

while True:

send_bit(23, GPIO.HIGH)

time.sleep(1)

send_bit(23, GPIO.LOW)

time.sleep(1)

在接收器上:DATA_PIN = 17

CONTROL_PIN = 18 # or whatever

def readbit(channel):

bit = GPIO.input(DATA_PIN)

print bit

GPIO.add_event_detect(CONTROL_PIN, GPIO.RISING, callback=readbit)

单线协议

另一个解决方案,如果你不想使用两根电线,那就是创建一个简单的协议。例如:每次传输由两个位组成:1和X

要传输的数据位是X,而第一位总是1,并充当接收器的触发器

保证X位在第一位上升沿后0.1到0.9秒处于活动状态。在

这可能很复杂,但实际上并非如此,你现在需要做的就是触发上升沿的读数,然后在0.1到0.9秒之间读取数据。我们把时间定在0.5秒,以确保我们在这段时间的中间。在

发送人:def send_bit(pin, bit):

GPIO.output(pin, GPIO.HIGH) # send the control bit first, always HIGH

GPIO.output(pin, bit) # send the actual data bit

while True:

send_bit(23, GPIO.HIGH)

time.sleep(1)

send_bit(23, GPIO.LOW)

time.sleep(1)

# .... some more bits here

在接收器上:def readbit(channel):

time.sleep(0.5) # waiting to be in the safe time for read

bit = GPIO.input(17)

print bit

GPIO.add_event_detect(17, GPIO.RISING, callback=readbit)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值