Drehimpulsgeber auslesen. Im Unterforum Microcontroller - Beschreibung: Hardware - Software - Ideen - Projekte
Autor |
Drehimpulsgeber auslesen. |
|
|
|
|
BID = 86752
Midnight Stammposter
Beiträge: 256
|
|
Hallo,
heute wäre wohl ein Tag an dem ich lieber im Bett geblieben sein sollte.
Ich habe einen Alps Drehimpulsgeber an nem AT89C2051.
Der soll je nach Drehrichtung eine Zählvariable hoch/runter zählen.
Wie der Funktioniert ist klar. Zwei Impulse und je nach Drehrichtung der eine oder der andere zuerst.
Also habe ich in meinem Programm einfach die beiden Ports abgefragt an dem die Impulse liegen (übrigens einfach gegen GND) und je nach dem in zwei Unterprogramme verzweigt. In den Unterprogrammen habe ich dann den zweiten Impuls erwartet, und gewartet bis der vorbei war... Hat der Controller leider nicht immer mitbekommen, da je nach Drehgeschwindigkeit beim "Abwarten" des zweiten Impulses dieser schon da war... Also Essig... Hab ich vorrausgesetzt das das der schon da ist, gut bei einigermaßen Geschwindigkeit gings... langsam wiederum nicht... Hab ich mir also über zwei Interrupts beholfen, in der Interruptroutine sofort die Interrupts aus, und gezählt... leider war der Controller teilweise schon wieder aus der Routine raus und hat gleich wieder zurück gezählt...
Da ich heute noch was laufendes haben wollte habe ich die Interruptvariante einfach behalten, und habe 100mS Verzögerung eingebaut... Nicht elegant aber geht erstmal, denn bei schnellerem Drehen ignoriert er halt einfach...
Da ich heute scheinbar für µC und Elektronik zu doof bin... Wie mache ich das denn am elegantesten?
Gruß
Simon |
|
BID = 86761
Benedikt Inventar
Beiträge: 6241
|
|
Schau mal auf
http://www.mikrocontroller.net
Dort mit der Suchfunktion (oder im Code Forum) müsstest du mehrere Routinen, mit und ohne Interrupts finden. |
|
BID = 86775
Midnight Stammposter
Beiträge: 256
|
@ Benedikt:
Nur ne kleine Verständnisfrage...
Bei Deinem Link durchläuft der Drehimpulsgeber pro Step scheinbar nur eine Änderung, oder sehe ich das falsch?
Gut, auf den Gray Code hätte ich auch selber kommen können, aber der Alps durchläüft pro Step (also eine Raste weiter) nen kompletten Gray-Code....
Und dabei ist die Zeitliche Abfolge ungewiss, denn den bestimmt die Geschwindigkeit des Drehens...
Gruß
Simon
|
BID = 86796
ERDI-Soft Stammposter
Beiträge: 200 Wohnort: Offenburg
|
Die "zeitliche Abfolge" ist egal, da nur Änderungen übernommen werden. Wird also 100 mal der gleiche Wert gelesen, wird 100 mal keine Änderung an der Zählvariablen vorgenommen.
Zudem kannst du den Wert, den du erhälst, ja durch 4 teilen. Dann hast du auch das richtige Ergebnis.
Hab das Ganze in ASM für nen AVR programmiert, falls es dich interessiert. Funktioniert einwandfrei. :D
Und Geschwindigkeit ist auch kein Problem.
_________________
Wie immer gilt: Erst googeln, dann fragen!
(Für ICQ bitte erst Anfrage per PM, da alles andere nicht angenommen wird.)
|
BID = 86806
Midnight Stammposter
Beiträge: 256
|
Gut, jetzt weiß ich langsam wo mein Gedankenfehler lag...
Heute habe ich keine Lust mehr, werde ich aber morgen mal ausprobieren.....
Gruß Simon
|
|
Zum Ersatzteileshop
Bezeichnungen von Produkten, Abbildungen und Logos , die in diesem Forum oder im Shop verwendet werden, sind Eigentum des entsprechenden Herstellers oder Besitzers. Diese dienen lediglich zur Identifikation!
Impressum
Datenschutz
Copyright © Baldur Brock Fernsehtechnik und Versand Ersatzteile in Heilbronn Deutschland
gerechnet auf die letzten 30 Tage haben wir 19 Beiträge im Durchschnitt pro Tag heute wurden bisher 9 Beiträge verfasst © x sparkkelsputz Besucher : 182422723 Heute : 1763 Gestern : 5459 Online : 350 29.11.2024 11:43 4 Besucher in den letzten 60 Sekunden alle 15.00 Sekunden ein neuer Besucher ---- logout ----viewtopic ---- logout ----
|
xcvb
ycvb
0.0182259082794
|