树莓派如何在下拉中断引脚上触发事件



我有一个传感器,中断输出连接到我的RaspberryPi上的输入引脚。我的目标是从传感器中断触发事件。我的传感器的数据手册说,一旦在传感器上触发中断,中断状态寄存器将有适当的位设置为1并保持这种状态,直到它被清除;当状态寄存器的状态位为 1 时,传感器上的中断板将被下拉。

我的问题是,当我物理触发传感器时,我可以看到状态寄存器正确反映了中断。但是当我从Pi上读取引脚时,我从未看到任何变化。这是我的代码要点:

import Sensor
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BOARD)
GPIO.setup(11, GPIO.IN, pull_up_down = GPIO.PUD_UP)
s = Sensor.start()
while True:
    print 'sensor int reg: ', s.readIntReg() # I do not clear interrupt
    print 'pin value: ', GPIO.input(11)

第一次打印将根据我与传感器的交互而改变。第二个打印显示引脚保持 1 或 0,具体取决于它分别设置为向上还是向下拉。

似乎问题在于,每当中断触发时,传感器都会向下拉销,而 Pi 会将其向上拉......我应该如何处理?

传感器是VCNL4010 [https://www.adafruit.com/products/466]

我想你已经在 Pi 上安装并激活了 gpio 驱动程序?

然后,您可能永远不会看到从 Python 级别触发的中断,因为内核驱动程序将在后台为其提供服务(并重置标志)。

我添加了一个 10k 的 3.3V 外部上拉电阻,这起到了作用......不知道为什么 Pi 上的内部上拉没有做同样的事情,也许我配置错了。

更新:事实证明,这根本不是问题所在。我忽略了将传感器显式设置为自由运行模式。我的部分代码具有设置该模式的意外副作用,因此在调整测试内容时有时会起作用。Pi 上的引体向上工作正常。

最新更新