我有一个传感器,中断输出连接到我的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]
答案 0 :(得分:0)
我想你在Pi上安装并激活了gpio驱动程序?
然后你可能永远不会看到从Python级别触发中断,因为内核驱动程序将在后台服务它(并重置标志)。
答案 1 :(得分:0)
我添加了一个10k外部上拉电阻和3.3V电压,但是不知道为什么Pi上的内部上拉没有做同样的事情,也许我把它配置错了。 / p>
更新:事实证明这根本不是问题。我忽略了将传感器明确设置为自由运行模式。我的部分代码有意外的副作用,设置该模式,所以在调整测试的东西有时它的工作。 Pi的上拉工作正常。