Inkrementalencoder an ATxmega

OP #4099454
Lesenswert?

Hallo,

kenne mich mit den normalen ATmegas einigermaßen aus.
Nun möchte ich in einem neuen Projekt einen ATxmega einsetzen.
Da das Neuland für mich ist bräuchte ich eure Hilfe.
Habe eine Skizze gezeichnet was ich gerne mit dem ATxmega umsetzen 
möchte.
Quadrature Decoder, Event System und jeweils zwei 16 Bit Zähler 
hintereinander die dann einen 32 Bit Zähler ergeben.
Das ganze sollte die CPU wenig belasten. Die beiden zum Einsatz 
kommenden optischen Inkrementalencoder prellen nicht.
Des weiteren die Register Einstellungen. Denke das wird kompliziert. 
Kennt jemand hierzu so eine Art „ATxmega wizard“ für die Register?
Es braucht kein C-Code rauszukommen. Daß als Ergebnis die richtige 
Einstellung für die Register angezeigt wir, würde genügen.
Kann englische Datenblätter lesen und verstehen doch eine gute deutsche 
Literatur ist mir alle mal lieber.
Kennt jemand eine gute ATxmega Beschreibung auf deutsch?
Schaut mal bitte drüber und sagt mir ob das so gehen kann.

Danke

Gruß
    Mathias
Angehängte Dateien:
Gast #4099663
Lesenswert?

Ist das eine Technikerarbeit / Projektarbeit??
Ich kenne den Xmega gut, habe aber mit dem Quadraturencoder noch nix 
gemacht.
Jedoch wird (hoffentlich) niemand deine "Hausaufgabe" für dich machen!

Also sich in das Eventsystem und die Timer/Counter einzulesen und die 
Registerwerte zu bestimmen, solltest du selbst hinbekommen...

Theoretisch könntest du es mit ASF vom A.Studio probieren.
Mit dem ASF sehe ich aber den Wald vor lauter Bäumen (zig Dateien in zig 
Unterordnern)dann nicht mehr, deshalb programmiere ich die Register 
selbst.

PS:
Die Register programmiert man am besten mit den vordefinierten 
Konstanten - in der entsprechenden iox.h
Gast #4099700
Lesenswert?

Mathias H. schrieb:
> Das ganze sollte die CPU wenig belasten. Die beiden zum Einsatz
> kommenden optischen Inkrementalencoder prellen nicht.

Das kommt natürlich auf die (bisher geheime) maximale Zählrate an - ich 
gehe mal davon aus, dass es sich bei 32 bit Zählern um 
Positionserfassung handelt und nicht um manuelle Eingaben. Bei hohen 
Zählraten (=Verfahrgeschwindigkeiten) ist es nicht sinnvoll oder 
unmöglich, die Dekodierung als Software zwischen I/O-Pin und Zähler zu 
realisieren, dann brauchtst du einen Prozessor mit eingebautem Dekoder 
oder du schaltest einen solchen in Logik davor.

Bei 1 µ Auflösung und 1 m/s Geschwindigkeit ergeben sich schon 1 MHz, 
das sind beides keine ungewöhnlichen Werte. 2 Mio Events pro Sekunde 
sind aber schon recht anspruchsvoll.

Georg
OP #4099744
Lesenswert?

Habe im Übersichtsplan 3000 Impulse pro Sek. eingetragen. Also pro A/B 
Signal.
Mehr wird's wahrscheinlich nicht werden. Ein recht verträglicher Wert.
Zunächst werden zwei WPS-1250-MK46 eingesetzt.
http://www.micro-epsilon.com/download/products/_displacement/dax--wireSENSOR-MK46--en-us.html
Vielleicht später ersetzt durch welche mit höherer Auflösung.

Und nein es ist keine Hausaufgabe, bin dafür ein bißchen zu alt ;-)

Mathias
OP #4099859
Lesenswert?

Mir geht es in erster Linie darum, ob das wie in der Skizze gezeichnet 
so funktionieren wird.
Oder wie muß ich es ändern, daß es funktioniert.
Wenn bestätigt wird, daß es so klappt werde ich zuerst eine Platine 
machen.

Während die Platine gefertigt wird habe ich Zeit mich mit den Registern 
und anderen Softwaredingen zu befassen.
Erst wenn die Platine fertig bestückt vor mir liegt beginnt der 
praktische Teil der Software.

Mathias
#4099929
Lesenswert?

>Erst wenn die Platine fertig bestückt vor mir liegt beginnt der
>praktische Teil der Software.

FAIL. Nehm ein Evaluationsboard (xplain oder was auch immer) schließ da 
dein Zeug an und programmier die Software. Wenn alles läuft, baust du 
eine Platine (Prototype)...

Gruß J

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