-1

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

我的问题是,当物理触发传感器时,我可以看到状态寄存器正确反映了一个中断。但是当我读到我的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]

回答

0

我想你已经安装了GPIO驱动和积极的皮?

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

+0

对于测试,我没有配置引脚来触发Pi上的中断。这只是一个我正在轮询的输入,所以我可以看到它根据传感器中断更改了值。 – Philip

0

我添加了一个10k的外部上拉电阻3.3V,并做了诀窍......不知道为什么Pi上的内部上拉没有这样做,也许我配置了错误。

更新:事实证明,这根本不是问题。我忽略了明确地将传感器设置为自由运行模式。我的代码的一部分有设置该模式的意想不到的副作用,所以在调整测试有时它的工作。 Pi上的拉动效果很好。