-1

Ich habe einen Sensor mit dem Interrupt-Ausgang mit einem Eingang Pin auf meinem RaspberryPi verbunden. Mein Ziel ist es, ein Ereignis vom Sensorinterrupt auszulösen. Das Datenblatt für meinen Sensor sagt, dass, sobald ein Interrupt auf dem Sensor ausgelöst wird, das Unterbrechungsstatusregister das entsprechende Bit auf 1 gesetzt hat und so bleibt, bis es gelöscht wird; während das Statusregister ein Statusbit von 1 hat, wird das Unterbrechungsfeld auf dem Sensor heruntergezogen.Raspberry Pi, wie Ereignis auf Pull-down-Interrupt-Pin auslösen

Mein Problem ist, dass ich sehen kann, dass das Statusregister einen Interrupt korrekt widerspiegelt, wenn ich den Sensor physisch auslöst. Aber wenn ich den Stift von meinem Pi lese, sehe ich keine Veränderung, die sich spiegelt. Hier ist der Kern meines Codes:

Der erste Druck ändert sich entsprechend meiner Interaktion mit dem Sensor wie erwartet. Der zweite Ausdruck zeigt, dass der Stift 1 oder 0 hält, je nachdem, ob er auf Hochziehen oder Herunterziehen eingestellt ist.

Es scheint so, als ob das Problem darin liegt, dass der Sensor immer dann, wenn der Interrupt ausgelöst wird, den Pin herunterzieht und der Pi ihn hochzieht ... Wie soll ich damit umgehen?

Der Sensor die VCNL4010 ist [https://www.adafruit.com/products/466]

Antwort

0

Ich nehme an, Sie haben die GPIO-Treiber installiert und aktiv auf dem Pi?

Dann werden Sie die Interrupt-Triggerung wahrscheinlich nie von der Python-Ebene sehen, da der Kernel-Treiber sie bereits im Hintergrund wartet (und die Flagge zurücksetzt).

+0

Zum Testen habe ich den Pin nicht konfiguriert, um einen Interrupt auf dem Pi auszulösen. Es ist nur eine Eingabe, die ich abrufe, damit ich sehen kann, wie sich die Werte aufgrund des Sensorinterrupts ändern. – Philip

0

Ich fügte einen 10k externen Pull-up-Widerstand mit 3,3V und das hat den Trick ... nicht sicher, warum das interne Pull-up auf dem Pi nicht das gleiche getan, vielleicht habe ich es falsch konfiguriert.

UPDATE: Das war nicht das Problem überhaupt. Ich habe es vernachlässigt, den Sensor explizit auf den Freilaufmodus zu setzen. Ein Teil meines Codes hatte den unbeabsichtigten Nebeneffekt, diesen Modus so einzustellen, dass die Tests manchmal funktionierten. Der Pull-up auf dem Pi funktioniert gut.