Hallo Gemeinde im Netz gibt es die verschiedensten Vorschläge und Versionen wie man einen Drehgeber (Encoder) mit dem /2C bus auslesen kann. Alle Beiträge haben etwas gemeinsamen. Alle sagen es geht auf dieser oder anderen Art nicht. Es sagt aber keine wie es geht. Dabei muss man "wie es geht" etwas deferieren. Welche Art gibt es, womit kann man es machen, direkt oder indirekt, ISR, extra Prozessor, Geschwindigkeit usw. Gebe einmal die kleinste Lösung vor die mir möglich erscheint: - Auslesen von links, rechts und stop - Auslesen von zusätzlichen Schaltern - Geschwindigkeit egal oder - Geschwindigkeit steigend mit Dauer - Auslesen mit zusätzlichen Prozessor - Auslesen mit USI oder I2C Bus direkt - ständiges Auslesen des Slave (Abruf von Daten) oder auf Abfrage reagieren Wie ist eure Meinung dazu, was ist möglich oder sinnvoll, wie kann oder sollte man es machen. LG Klaus
Klaus schrieb: > Alle sagen es geht auf dieser oder anderen Art > nicht. Gehen tut es. Nur allgemein zu antworten geht nicht. Encoder ist nicht gleich Encoder. Mal Butter bei die Fische.
Klaus schrieb: > Wie ist eure Meinung dazu, was ist möglich oder sinnvoll, wie kann oder > sollte man es machen. Das kommt auf Encoderauflösung, Drehgeschwindigkeit und Sinn&Zweck der Übung an - meine Meinung.
Man wählt einfach ein Encodermodell mit I2C-Schnittstelle aus, das das alles bietet, und verbindet den mit einem Gerät, das das alles auslesen kann. Problem gelöst. Klingt jetzt nicht so schwierig, oder? Oliver
wo ist dein Problem? I2C ist etwas lahm dafür während ich Tasten locker mit 10ms Timer am I2C auslese (PCF8574 o. a) Entprellung nach Dannegger war der Encoder etwas lahm, ich habe sie direkt am Port mit 1ms Timer. OK man kann natürlich mit 400kHz I2C (schafft der PCF8574) auch pollen 2,5µs, das sollte doch reichen, man kann natürlich mit dem /INT auch einen IRQ triggern, aber ich denke das muss man nicht. also alle 1ms im Timer den I2C abfragen sollte klappen, dauert wenige µs, ich hatte es mal gemessen für eine RTC und dann vergessen weil das für micht kein Problem darstellte. Wenn du alle 1ms einige µs im IRQ entbehren kannst ist dein Problem fast gelöst.
Warum setzt man nicht einen kleinen Controller dafür ein? Die kleinen Tiny kosten nur ein paar Cent. Ein größerer Tiny könnte auch mehrere Drehgeber bedienen. Auf dem Tiny ein kleines Programm als I2C Slave. Man könnte Inkremente seit dem letzen Lesevorgang haben oder sogar absolut werte.
Thomas W. schrieb: > Warum setzt man nicht einen kleinen Controller dafür ein? Kann man machen, allerdings muss da ein Programm schreiben (gerade Slave hat da manchmal so blöde Tücken) und man muss den Controller programmieren. Für Hobby egal, in der Fertigung nicht. Ein PCF... leistet das gleiche.
Sorry, mein Nick ist Klaus AS. Im Grunde soll es z.B. ein Display bedienen. Damit meine ich einfach eine Zeile invers darzustellen oder einfach einen "Zeiger" hoch oder runter schieben. Mir ist klar das es nicht so schnell wie ein En. am Port ist. Soll keine Motorsteuerung oder ähnliches sein. Auch wenn einige Bits verschluckt werden ist nicht so tragisch. Muss den einfach weiter drehen. Die Lösung mit dem Attiny als Slave gefällt mir sehr gut. Die Lösung mit einem PCF habe ich noch gar nicht bedacht. Ist nur fürs Hobby. Wie würdet ihr die Abfrage machen? In die ISR packen oder mit Multitasking jede 1 ms oder sogar 0,5ms abfragen? Das mit einem Attiny schaue ich mir jedenfalls genauer an. In dem oberen Artikel wird zwar auch gefragt aber zu ungenau. LG Klaus
Klaus schrieb: > Hallo Gemeinde > im Netz gibt es die verschiedensten Vorschläge und Versionen wie man > einen Drehgeber (Encoder) mit dem /2C bus auslesen kann. Alle Beiträge > haben etwas gemeinsamen. Alle sagen es geht auf dieser oder anderen Art > nicht. Es sagt aber keine wie es geht. Was für Helden 8-0 > Dabei muss man "wie es geht" etwas deferieren. Welche Art gibt es, womit > kann man es machen, direkt oder indirekt, ISR, extra Prozessor, > Geschwindigkeit usw. > Gebe einmal die kleinste Lösung vor die mir möglich erscheint: Das hat mit kleinster Lösung nix zu tun, eher eierlegender Wollmilchsau. > Wie ist eure Meinung dazu, was ist möglich oder sinnvoll, wie kann oder > sollte man es machen. Man kann einen manuell bedienten Drehgeber per I2C einlesen, siehe https://www.mikrocontroller.net/articles/Port-Expander_PCF8574 Für sowas reichen ca. 300-1000 Hz Abtastrate. Dieser IC braucht nur 2 Bytes + 2x ACK zum Auslesen, das dauert bei 100kbit/s ~200us. Das kann man in eine ISR packen, auch wenn das nicht optimal ist (200us sind bei 1kHz ISR-Rate schon 20% CPU-Last!). Dann unterscheidet sich das logisch praktisch kaum von einem Drehgeber, welcher direkt an IOs angeschlossen ist. Ein paar Taster kann man da auch noch anschließen, die kosten keine zusätzliche Zeit, der IC hat ja 8 IOs. Bei höheren Drehgeschwindigkeiten und höheren Auflösungen wird das irgendwann mal Unsinn, selbst wenn man einen schnelleren Portexpander findet.
Klaus schrieb: > Im Grunde soll es z.B. ein Display bedienen. Damit meine ich einfach > Motorsteuerung oder ähnliches sein. Auch wenn einige Bits verschluckt Unsinn, man geht nicht schon mit Schrott ins Rennen. > einem PCF habe ich noch gar nicht bedacht. Ist nur fürs Hobby. Dann vergiß I2C und nimm einen Controller mit ausreichend Pins. Fertig. > Das mit einem Attiny schaue ich mir jedenfalls genauer an. Völliger Quark.
Hallo Falk den genannten PCF kenne ich und habe bereits damit gearbeitet. Habe ihn aber noch nicht mit einem Drehgeber verwendet. Hast du ein Beispiel dazu? Was ist bei dir Schrott. Das LCD was ich verwende möchte, der I2C Bus. Mein Controller (128) hat genug Pins, ist leider am falschen Ort. Die Bedienung soll ca. 3m entfernt gemacht werden. Wenn das alles Quark ist, hast du bestimmt bessere Lösung für mich.
Klaus schrieb: > Hallo Falk > den genannten PCF kenne ich und habe bereits damit gearbeitet. Habe ihn > aber noch nicht mit einem Drehgeber verwendet. Hast du ein Beispiel > dazu? Nö, aber das ist trivial. Encoder anschließen, ggf. externe Pull-Ups anklemmen, fertig. > Was ist bei dir Schrott. Da fehlt ein Fragezeichen. Mit Schrott meinte ich deinen Ansatz " Auch wenn einige Bits verschluckt werden ist nicht so tragisch." > Das LCD was ich verwende möchte, der I2C Bus. Dein LCD kenne ich nicht. > Mein Controller (128) Soso, 128. Ach DER 128er!!! > hat genug Pins, ist leider am falschen Ort. Die > Bedienung soll ca. 3m entfernt gemacht werden. Ja und? Dann pack die paar Leitungen in ein Steuerkabel und gut. Wenn dir das nicht gefällt, mach ein Blockschaltbild und wir können drüber reden. > Wenn das alles Quark ist, hast du bestimmt bessere Lösung für mich. Immer ;-)
Klaus schrieb: > Mein Controller (128) hat genug Pins, ist leider am falschen Ort. Hast Du einen ATtin25 zur Hand? Hier gibt es ein Programm nebst Beschreibung (2. Schaltung): http://mino-elektronik.de/mt12_iic/mt12_iic.htm
Harald schrieb: > Thomas W. schrieb: >> Warum setzt man nicht einen kleinen Controller dafür ein? > > Kann man machen, allerdings muss da ein Programm schreiben (gerade Slave > hat da manchmal so blöde Tücken) und man muss den Controller > programmieren. ...oder man kann was Fertiges nehmen - ich hatte mir mal hiervon https://github.com/Fattoresaimon/I2CEncoderV2 eine Handvoll bei https://www.kickstarter.com/projects/1351830006/i2c-encoder-v2 bestellt. Funktioniert.
m.n. schrieb: > Hast Du einen ATtin25 zur Hand? Hier gibt es ein Programm nebst > Beschreibung (2. Schaltung): > http://mino-elektronik.de/mt12_iic/mt12_iic.htm Dein Vorschlag sieht sehr gut aus. Hardware ok. Software bekomme ich eine Reihe wilder zeichen. Was kaputt?
Klaus schrieb: > Software bekomme ich > eine Reihe wilder zeichen. Was kaputt? Das ist die .hex-Datei: http://mino-elektronik.de/progs/avr/qcnt25/qcnt25_twi.hex Nicht wild und nicht kaputt.
ok. Hast du das auch in C? Kann leider nicht hex oder ASM. So wie es aussieht muss ich bestimmt was an den Pins ändern.
An den Pins mußt Du nichts ändern. Die sind beim ATTiny25 fest vorgegben und voll belegt. .hex ist die fertige Code-Datei, die in den µC geschrieben wird. Mit welcher Hardware programmierst Du denn Deine AVRs? Hast Du das denn schon einmal gemacht oder ist es Neuland?
Benutze AVR Studio mit ICE Programmer. Verwende meistens den 128 und Aty 2313. Schaue gerade den Atty 816 als neuen Typ an. Möchte erst mal bei 8 Bit bleiben. 32 Bit ist natürlich besser aber auch komplizierter.
Hi > Verwende meistens den 128 und Aty >2313. Schaue gerade den Atty 816 als neuen Typ an. Was sind 128, Aty oder Atty? MfG Spess
spess53 schrieb: > Was sind 128, Aty oder Atty? Vermutlich irgendwelche Schreibfaulheiten, weil "Atmega128" oder "Attiny816" eindeutig zu viele Zeichen sind, als daß man sie hinschreiben könnte.
Rufus Τ. F. schrieb: > Vermutlich irgendwelche Schreibfaulheiten, weil "Atmega128" oder > "Attiny816" eindeutig zu viele Zeichen sind, als daß man sie > hinschreiben könnte. Ach was, das ist iSteno, Abkürzen bist der Arzt kommt. Wahrscheinlich um Energie zu sparen, Klimawandel und so ;-)
Ist wieder erstaunlich wie freundlich manche Menschen sind. Egal. Letzte Frage dazu: Welcher Prozessor hat ISP, TWI(I2C) Master oder Slave, ca 14 Pins (kein USI) Habe versucht in den Datenblättern was zu finden. Danach gibt es Prozessoren die Haben beides ???
Hi
>Ist wieder erstaunlich wie freundlich manche Menschen sind. Egal.
Nö. Nicht egal. Was soll z.B. ein 128 sein: ATMega128, AT90CAN128 oder
einer der vielen ATXMega128 oder doch was anderes?
MfG Spess
Kann Dein Programmer denn nicht UPDI? Dann wäre der ATtiny814 z.B. geeignet. Oder Du gönnst Dir ein paar Pins mehr und verwendest den ATmega48.
es soll ein Atmega 128 sein. Arbeite mit dem ICE Programmer. Kann der UPDI? Sorry hatte mit dem UPDI keine Erfahrung
Also ich würde nen ICE40LP384 oder 640 dafür nehmen. Die Teile sind echt winzig und man ist sehr flexibel. Man hat wahrscheinlich noch genug Resourcen für andere Spielerreien frei.
Sigint 1. schrieb: > Also ich würde nen ICE40LP384 oder 640 Sorry den kenne ich gar nicht. Wollte eigentlich bei AVR bleiben. Bei den genannten Start ups wird ein PIC verwendet. Mit PIC habe ich auch keine Erfahrung
Klaus schrieb: > Mit PIC habe ich auch keine Erfahrung Erfahrung kommt nicht vom Haben, sondern vom Machen.
Hast du noch mehr dieser Sprüche. Teile sie unbedingt der Welt mit
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.