Suche µC (bevorzugt Atmel) mit Zähler welcher "Takt und Richtung"-Eingang hat.

OP #2397970
Hallo zusammen,

ja im Prinzip stehts schon im Titel. Ich hab nen (Drehencoder-)Sensor 
mit clk/dir-Ausgang und würde diesen gerne an einen µc anschließen. Da 
ich allerdings Taktfrequenzen bis zu 100kHz erwarte fällt mir keine 
sinnvolle Softwarelösung ein, welche den µC nicht blockieren würde. Eine 
Hardwarelösung wäre also fein. Kennt da jemand was?

Vielen Dank
Gast
> Eine Hardwarelösung wäre also fein.

Vergiss es.

100kHz wären bei einem mit 15 MHz getakteten AVR immerhin 150 Befehle, 
davon 10 in der Interruptroutine sollten ja wohl Hinderungsgrund sein, 
und wenn doch, nimmst du einfach einen 16MHz Quartz :-)
Gast
Schau mal nach Quadraturencoder Bausteinen...die gibts glaub ich extern 
oder bei manchen uC auch intern.

Definitiv wissen tue ich es vom Lpc1769.

Grüße
@MaWin
Da fehlt wohl ein "kein" ??
Machbar sollte es noch sein, aber kann schnell eng werden, wenn noch 
anderes zu tun ist.
Bei 100kHz sollte es dann schon eine signed-long-Variable sein, 
wahrscheinlich noch grösser, kommt drauf an, wie lange der in eine 
Richtung zählen können soll
Das heisst dann: Interrupteinsprung + Sicherung , in Abhängigkeit eines 
weiteren Eingangs diese Variable incrementieren oder decrementieren, 
Register+SREG wiederherstellen und reti.
Damit bist du meilenweit weg von deinen 10 Takten. Schätz ich eher auf 
60-80.
Dazu die fehlende Interruptpriorisierung, d.h. man muss bei allen 
anderen ints wirklich aufpasssen.

Beim M16C hab ich glaub ich mal recht flexible Timer/Counter gesehen. 
Können als up/down-counter extern getaktet arbeiten. Da bleibt dann nur 
noch, die Zählrichtung umzuschalten und die Über/Unterläufe zu zählen.
Gast
Vielleicht geht es ja mit zwei internen Timer/Counter Einheiten:


                 .---.     .------.
Clk -------o-----¦ & ¦     ¦      ¦
           ¦  .--¦   ¦-----¦Tx    ¦
           ¦  ¦  '---'     ¦      ¦
Dir--------+--o            ¦ uC   ¦    DG = Tx - Ty
           ¦  ¦  .---.     ¦      ¦
           ¦  '-O¦ & ¦-----¦Ty    ¦
           '-----¦   ¦     ¦      ¦
                 '---'     '------'


Somit würde ein Counter nur die CW-Richtung und der andere nur die 
CCW-Richtung zählen. Die richtige Drehgeberposition erhält man dann 
durch Differenzbildung der beiden (gleichzeitig ;-) gelesenen 
Counterwerte.
Einen evtl. COunterüberlauf muss man natürlich geeignet beachten.
@  Leo B. (luigi)

>mit clk/dir-Ausgang und würde diesen gerne an einen µc anschließen. Da

>Hardwarelösung wäre also fein. Kennt da jemand was?

Nix fertiges, muss man sich halt stricken. Ein Zähler mit clk und u/d 
Eingang. Der zählt halt Up/Down. Der uC muss den periodisch auslesen. 
Doch Vorsicht, das Ganze läuft mit verschiedenen Takten, also asynchron. 
Da muss man beim synchronisieren aufpassen. Z.B. indem ein zweiter 
Zähler periodisch, z.B. nach 256 Takten den Zähler auf ein 
Zwischenregister kopiert und den Zähler zurück setzt. Dann hat der uC 
256 Takte Zeit, den Zähler auszulesen.

Wenn man einen uC mit Zäherleingang UND up/down Eingang in hardware hat, 
ist das natürlich ideal. Der AVR hat es leider nicht. Man könnte aber 
einen kleinen Tiny AVR eben nur mit dieser Funktion programmieren, 
100kHz bekommt man dabei locker in den Griff. Die Daten kann man dann 
per UART, SPI oder IO-Pins ausgeben.

MFG
Falk
Leg den "dir" auf einen Interrupt-Eingang. Den "clk" auf einen 
Zähler-Eingang.
Den Interrupt lässt du bei Flankenwechsel auslösen. In jedem Interrupt 
holst du dir den Zählerstand vom Hardware-Zähler und setzt den 
Hardware-Zähler zurück.
Den abgeholten Wert addierst- oder subtrahierst du von einer Variable im 
Controller je nach Zustand des "dir" Pins.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 15 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.