Inkremental-Geber --> Up / Down

Gast #92434
Lesenswert?

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
Angehängte Dateien:
Gast #92436
Lesenswert?

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;

}
Gast #92438
Lesenswert?

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:-)
Gast #92443
Lesenswert?

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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren