Hallo zusammen, ich bin gerade dabei eine Drehzahlmessung eines Kurbelwellenrades mit 60-2 Zähnen (2 aufeinanderfolgende Zähne fehlen) in einem Motorola MPC555 zu programmieren. Leider komm ich nicht auf die Lösung. Vielleicht hat jemand von euch ja eine Idee oder erkennt meinen Denkfehler: Ich nutze die TPU Funktion PMM (Period Measurement With Missing Transition Detection). Die Funktion erkennt die Zahnlücke, in dem es die Zeit zwischen aktuellem und nachfolgendem Zahn vergleicht (steigende Flanke) und löst einen Interrupt aus, wenn die nachfolgende Zeit 1,0...1,99x (lässt sich einstellen. Hab es hier auf 1,5x eingestellt) größer ist. Jedesmal wenn zwei Flanken aufgetreten sind, wird die vergangene Zeit in dem Register PERDIO_HWLW abgespeichert. Das heißt ich habe 58x die richtige Zeit und dann kommt die Zahnlücke, wo ich dann eine dreimal größere Zeit messe. Mein Code sieht zur Zeit so aus: -lese permanent das Register PERIOD_HWLW und berechne Drehzahl. - speichere den Wert auch in eine Variable PERDIO_old ab - Bei einem Interrupt benutze den Wert aus PERIOD_old zur Berechnung der Drehzahl. Problem ist hierbei, dass nach Beendigung der Zahnlücke der 3x größere Wert ins Register geschrieben wird und dieser dann auch zur Berechnung verwendet wird. Hat jemand von euch vielleicht eine Idee wie man am besten die Drehzahl bestimmt? Diese Funktion ist die einzige, welche ich verwenden kann. Oder sieht jemand meinen Denkfehler? Ich wäre euch echt dankbar. Im Anhang ist dann noch der aktuelle Code und der Signalverlauf. Vielen Dank schonmal.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.