ich habe das problem 8 drechencoder an einem xmega betreiben zu "müssen" das würde mich 16 portpins kosten wenn ich mir dir einfachen drehencoder als mechanisch verbunden doppelschalter vorstelle sollte doch auch eine matrixschaltung mit dioden möglich sein. oder nicht? hat das jemand schonmal probiert? oder hat jemand andere vorschläge? wäre für anregungen dankbar gruß Robert
Sollte gehen, also ich frage meinen Drehencoder meist in einer Interrupt Routine ab, in der ich auch die Taster abfrage. Zudem denke ich brauchst du keine Dioden, du kannst die Pins einfach hochohmig schalten. mfg Andreas
Soweit mir bekantrixnt ist sind die signalleitungen bei den rastpositionen entweder beide hihg oder beide low ... dioden wären also notwendig da sonst ghosting entstehen würde mach mir ein bisschen gedanken über die performance ... aber bei 8 drehencodern in matrixschaltung bräuchte ich genau einen port ... sollte also ähnlich schnell sein als wenn ich nur zwei pins auswerte
Mad79 schrieb: > Soweit mir bekantrixnt ist sind die signalleitungen bei den > rastpositionen entweder beide hihg oder beide low ... dioden wären also > notwendig da sonst ghosting entstehen würde Also meine sind entweder verbunden oder offen, bei offen ziehe ich per Pullup auf 1, bei geschlossen gegen Massen. Wenn du nun statt masse einen IO Pin Verwendest, und den hochohmig schaltest, sollte da keinen Beinflussung stattfinden. (bzw. keine relevante) > mach mir ein bisschen gedanken über die performance ... aber bei 8 > drehencodern in matrixschaltung bräuchte ich genau einen port ... sollte > also ähnlich schnell sein als wenn ich nur zwei pins auswerte Also wenn du mit 200hz Aptastest reicht das warscheinlich bereits. Aber du müsstest mal einen Konkreten Typen angeben, denn ich weiss ja nicht ob wir vom gleichen Typen reden. mfg Andreas
Handyakku gleich alle und festrechner nicht in reichweite meld mich morgen nochmal ... danke für die anregungen
Zum einsatz kommt warscheinlich dieser typ http://www.alps.com/WebObjects/catalog.woa/E/HTML/Encoder/Incremental/EC09E/EC09E1520406.html ist ewtas kleiner als die üblichen 11mm alps oder bourns encoder der ec11 reihe,technisch aber identisch >Also meine sind entweder verbunden oder offen, bei offen ziehe ich per >Pullup auf 1, bei geschlossen gegen Massen. >Wenn du nun statt masse einen IO Pin Verwendest, und den hochohmig >schaltest, sollte da keinen Beinflussung stattfinden. (bzw. keine >relevante) so kann man das auch sehen und stimmt auch soweit aber wenn ich angenommen drei encoder parallel schalte (signalleitungen)und masse auf jeweils extra io pin wäre es doch möglich das der eine encoder gerade in seiner rastposition die signalleitungen verbindet dann kann ich doch auch keinen anderen mehr auswerten?
@ Mad79 (Gast) >>Wenn du nun statt masse einen IO Pin Verwendest, und den hochohmig >>schaltest, sollte da keinen Beinflussung stattfinden. (bzw. keine >>relevante) Doch. Wenn man eine Matrix von Schalter sicher auslesen will, und mehrere aktive Schalter unterschieden muss, braucht man Dioden. Punkt. >aber wenn ich angenommen drei encoder parallel schalte >(signalleitungen)und masse auf jeweils extra io pin >wäre es doch möglich das der eine encoder gerade in seiner rastposition >die signalleitungen verbindet >dann kann ich doch auch keinen anderen mehr auswerten? Das IST eine Matrix. Für acht Encoder a zwei Kanäle braucht man 16 IOs, in matrix 4+4 Ios = 8 Naja. Dazu ggf. noch acht IOs für die Tastfubnktion. Ich würde zwei oder drei 74HC165 Schieberegister nehmen, braucht nur drei Pins und kann beliebig viele Tasten einlesen, ganz ohne Dioden. Pull-Ups aber nicht vergessen. MFG Falk
@ Falk ja so hab ich mir das auch gedacht. war halt verwundert weil Andreas meinte es ginge auch ohne dioden ??? mach mir halt sorgen um die performance bei meinen bisherigen bastelleien mit einem drehencoder war die auswertung schon tricky ... mit 8? mhh? hat jemand sowas schon mal probiert? ist man mit schieberegistern überhaupt noch schnell genug für (schnell gedrehte) drehencoder? ich muss auch noch einen DA und einen mux bedienen (per festem 1ms timerinterrupt)
@ Mad79 (Gast) >mach mir halt sorgen um die performance Unnötig. Dein xmaega ist damit nur gelangweilt. Das Auslesen dauert eine Handvoll Mikrosekunden, die Verarbeitung der Codes ebenfalls. Gähn >ist man mit schieberegistern überhaupt noch schnell genug für (schnell >gedrehte) drehencoder? Siehe oben. Wenn du da mit 1kHz Abtastrate fahren willst, ist das kein Thema, selbst 10kHz sind problemlos drin. >ich muss auch noch einen DA und einen mux bedienen (per festem 1ms >timerinterrupt) Und was macht die CPU die restlichen 950us?
nun gut das macht mir ja hoffnungen hab noch ein paar drehencoder und ein testboard mit einem mega8 rumliegen werde mal testen und berichte dann erstmal vielen dank MfG Robert
Ich würde die Eingänge mit 2 * 74HC165 realisieren. Der Xmega muß dann nur die 2 Byte per SPI einlesen. Man kann ja den SPI-Takt so wählen, daß sich durch den SPI-Interrupt gerade das gewünschte Abtastintervall ergibt Peter
Mad79 schrieb: >>Also meine sind entweder verbunden oder offen, bei offen ziehe ich per >>Pullup auf 1, bei geschlossen gegen Massen. > >>Wenn du nun statt masse einen IO Pin Verwendest, und den hochohmig >>schaltest, sollte da keinen Beinflussung stattfinden. (bzw. keine >>relevante) > > so kann man das auch sehen und stimmt auch soweit > > aber wenn ich angenommen drei encoder parallel schalte > (signalleitungen)und masse auf jeweils extra io pin > wäre es doch möglich das der eine encoder gerade in seiner rastposition > die signalleitungen verbindet > dann kann ich doch auch keinen anderen mehr auswerten? Sorry, Denkfehler. Natürlich wird bei einem Taster jeder Taster einzel angesteuert, wärend beim Drehencoder immer zwei Kontakte parallel Verbunden sind (also am einen Anschluss). Wäre diese Verbindung nicht würde es funktionieren...;-) mfg Andreas
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.