gridrix Geschrieben March 16, 2012 at 15:10 Share Geschrieben March 16, 2012 at 15:10 Hallo, Ich habe am IO16 bricklet ein paar Taster angeschlossen. Nur leider bekomme ich interrupts manchmal doppelt (mit dem c-code Beispiel), das heisst wenn sich der Zustand ändert (Taster schliessen/öffnen) dann wird manchmal für den alten Zustand noch einmal ein interrupt ausgelöst und sofort danach einer für den neuen Zustand und manchmal wird ein Interrupt sofort doppelt ausgelöst. Die Wiederholer lassen sich im Callback leicht rausfiltern, da value_mask sich bei doppelten interrupts nicht verändert, aber ich denke das ist nicht das Verhalten das eigentlich gewünscht ist. Zitieren Link zu diesem Kommentar Share on other sites More sharing options...
batti Geschrieben March 16, 2012 at 15:20 Share Geschrieben March 16, 2012 at 15:20 Könnte mir vorstellen das deine Schalter prellen (kannste mal nach googeln). Wenn dies ist musst du deine "Debouce period" erhöhen. Siehe API Dokumentation unter set_debounce_period. Zitieren Link zu diesem Kommentar Share on other sites More sharing options...
gridrix Geschrieben March 16, 2012 at 16:47 Autor Share Geschrieben March 16, 2012 at 16:47 Ich hab nicht so richtig Ahnung von elektrotechnik, aber sollte dann nicht auch noch ein Interrupt mit dem jeweils anderen Zustand kommen? Also ich bekomm gerade z.B. folgende 3 Interrupts für den Schalter beim drücken: low, high, high. Wenn der Schalter prellt würde ich doch low, high, low, high erwarten? Zitieren Link zu diesem Kommentar Share on other sites More sharing options...
borg Geschrieben March 16, 2012 at 20:22 Share Geschrieben March 16, 2012 at 20:22 Hab mir mal gerade den IO16 Code kurz angeguckt. Das kann Zustande kommen wenn uns der IO Expander ein Interrupt erzeugt während wir in der debounce Phase sind (low -> high), dann das Interrupt wieder wegnimmt (high -> low) und dann ein neues Interrupt kommt (low -> high) bevor die debounce Phase zuende ist. Ich hab mal eingebaut das der letzte Interrupt gespeichert wird um zu gucken das wir den gleichen nicht nochmal verarbeiten: https://github.com/Tinkerforge/io16-bricklet/commit/147ad1f617c766313edaf5461f9eee5efe498b25 Ob das dein Problem zu 100% löst kann ich nicht sagen, schaden tut es aber nicht. Hier gibts die neue Version: http://download.tinkerforge.com/firmwares/bricklets/io16/bricklet_io16_firmware_1_1_1.bin Zitieren Link zu diesem Kommentar Share on other sites More sharing options...
gridrix Geschrieben March 17, 2012 at 09:42 Autor Share Geschrieben March 17, 2012 at 09:42 Gerade getestet, funktioniert hervorragend! Zitieren Link zu diesem Kommentar Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.