-> Hier kostenlos registrieren
Zu 1.: "Im Prinzip ja". Ich habe mich durch den Begriff "Event" verleiten lassen, zu denken, dass vielleicht der RasPi (und nicht Dein Programm) auf eine positive Flanke prüft und dann einen Interrupt auslöst bzw. eine Task startet. Falls das so wäre, aber der RasPi dasgleiche nicht für negative Flanken könnte, dann ...
Zu 2.: Ja, das ist der Plan. Wobei aber ausnahmsweise die Mitkopplung auf optischem (Um-)Wege wirkt.
Zu 3.: Rat mal, wer noch.Kann immerhin recht knifflig werden. Aber das Prinzip hast Du offensichtlich durchschaut.
Thomas' Vorschlag mit dem Oszilloskop lag mir schon länger auf der Zunge, hab's irgendwie immer wieder verdrängt ...
Seinen Ansatz, die Störungen per SW zu unterdrücken, halte ich nicht für aussichtslos. Das hängt sehr stark von der Art und der Ursache der Störungen ab.
Ich vermute die Ursache darin, dass wir eigentlich ein analoges Signal in ein digitales wandeln: das am FotoTransistor einfallende Licht dürfte zwischen 2 Pegeln wechseln mit an- und absteigenden Rampen. Und die Rampen sind ein Problem, erst recht, wenn der Motor mitten in so einer Rampe steht und das ausgegebene Signal irgendwo zwischen Hi und Lo steht.
Bei A/B-Signalen von "richtigen" Gebern bin ich übrigens weniger skeptisch. Dort sind die StörImpulse entweder so kurz, dass sie vom der SW gar nicht erst wahrgenommen werden, oder sie sind lang genug und führen dann zu einem Hin- und Her-Zählen, so dass die Störungen sich nicht nur in einer einzigen ZählRichtung auswirken, sondern "gegenseitig kompensieren".
Zu 1.: Ok, dann hab ich dich schon richtig verstanden und ich kann definitiv steigende, fallende oder auch beide Flanken überwachen.
Was den Vorschlag von Thomas mit dem Oszilloskop angeht: ich würde wirklich gerne die Signale mal oszilloskopieren, aber ich hab leider keins...
Und Ja, ich würde es ja auch gerne Softwaretechnisch lösen. Ich hab nur keine Idee mehr wie. Die einzige Möglichkeit die vielen Impulse nach dem gültigen Impuls zu „ignorieren“, besteht doch darin, zu prellen - also letztendlich die bouncetime setzen. Aber dabei muss ich die Drehzahl beachten und zusätzlich bleibt es weiterhin mehr ein Annähern, als eine Berechnung, da die Drehzahl ja nicht sofort zu 100% da ist und die bouncetime beim Hochfahren der Drehzahl somit erstmal einen falschen Wert hat.
@Thomas: Wenn du irgendeine Idee hast, wie ich das sonst angehen könnte, dann probiere ich es gerne.
Übrigens hat mir der Support des Herstellers noch eine kleine Skizze geschickt. Auch wenn das jetzt keine bahnbrechenden Neuigkeiten sind:

Zuletzt bearbeitet: