-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上的拉動效果很好。