Hallo. Ich möchte nen Inkrementaldrehimpulsgeber an 'nen AVR hängen (An die 2 Interrupts des AT90S8535). Ich habe jedoch schon als Hilfe nen "Wandler" hier der auch funktioniert! (siehe Anhang). Wenn er aufwärts zählt, wird "Clock" 5V aktiv. So sollte es auch bis jetzt sein. Wenn ich ihn aber in die andere Richtung drehe, zählt er ab: Es sind "Clock" und "UP/\Down" aktiv. Kann man irgendwie das "Clock"-Signal abschalten, wenn "UP/\Down" aktiv sind? Ich dacht mir schon mit Relais aber die ziehen zu langsam an. Also dachte ich an Transistoren. Leider ist mein Wissen über Transistoren beschränkt, sodass ich nicht genau weiß, wie ich die Transistoren anschließen soll. Bzw. Geht das überhaupt mit Transistoren? Vielen Dank McMurkser
Du hast Dir aber schon einen der schier zahllosen Beiträge dazu reingezogen (z.B. über Drehgeber in der Codesammlung) ? Peter
Hallo, ich weiß zwar nicht genau, wie Dein Inkrementalgeber funktioniert. Die Clock-Line sagt Dir doch IMHO das sich irgendwas an dem Geber verändert hat. Du brauchst also nur die Clockline an den Inerrupt anzuschließen und in der Interruptroutine ein Portpin abzufragen, ob er gesetzt ist (downcount) oder nicht (upcount). global { char count; } int main (void) { ... DDRPORTCOUNT = 1; PORTCOUNT = 1; ... } INTERRUPT (SIG_INTERRUPT0) { if (PORTCOUNT == 1) ++count; if (PORTCOUNT == 0) --count; }
Hallo.. @peter: Nein habe ich noch nicht aber werde ich sofort machen. Danke @Marcus: Achja stimmt ja danke (das ich selber nicht draufkam oO) cya McMurkser
bleibt noch anzumerken, dass es natürlich unnötiger Aufwand ist, mit externer Hardware aus den Spursignalen erst mal Takt- und Richtungssignal zu erzeugen. Das kann der Prozessor nebenbei machen, aber wenn du die Beispiele mal durchsiehst, wirst du das ja merken:-)
Hm bis jetzt hab ich nur 1 Sample gefunden (Suchfunktion bezgl. Codesammlung)
Habt ihr vllt. noch ein paar Links bezgl. Auswertung eines Drehgebers und Schaltpläne etc... alles was man über Geber brauchen kann.. thx :)
Suche mal im ganzen Forum. Es gab schon etliche Beiträge dazu, auch mit externen Quellenangaben. Steffen
Hi Murkser, wenns Bascom sein darf hab ich da was für dich. Sag mal Bescheid.
Jo Gerhard danke! Ich habs grad gefunden! :) freu Encoder1: Toggle Mcucr.isc10 If Enc_a <> Enc_b Then Decr Weg Else Incr Weg End If 'Print Weg Return Encoder0: Toggle Mcucr.isc00 If Enc_a = Enc_b Then Decr Weg Else Incr Weg End If ' Print Weg Return Genau das, nach dem ich gesucht habe! Danke McMurkser
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.