Hallo Gemeinde In einem Projekt von mir verwende ich einen Atmega 128 als Master im I2C Bus. Als Slave verwende ich mehrere Attiny 841 mit verschiedenen Aufgaben. Möchte unter anderem ein Display mit 4x16 und dem PCF betreiben. Kann ich das Display durch ein Slave ansteuern oder muss ich immer über den Master gehen? LG Klaus
D.h. das Display hängt über einem PCF am Bus? Dann brauchst du Multimasterbetrieb, aber TWI des Tiny841 kann keinen master spielen.
Klaus schrieb: > Kann ich das Display durch ein Slave ansteuern oder muss ich immer über > den Master gehen? Wenn der Master so lange "seine Klappe hält", bis der Slave mit seinem Zugriff aus das Display fertig ist, dann geht das. Aber du merkst schon: je mehr "Rechnerkerne" im System sind, umso schwieriger wird das Handling. Und dann wird das gemeinsame Interface gern mal zum Nadelöhr. Denn man kann zwar beliebig viele Dörfer oder auch Städte an eine Straße bauen, aber wenn die Straße zu klein ist, dann klemmts trotzdem recht schnell... H.Joachim S. schrieb: > aber TWI des Tiny841 kann keinen master spielen. I2C kann man auf der "Masterseite" leicht per Software auskaspern.
Es bleibt dann wohl nur die Möglichkeit den Atti 841 als Slave zu betreiben und das Display an den Pin/Port anzuschliessen. Kommt das alte Problem der freien Pins ob die Ausreichen ein Display zu betreiben. LG Klaus
H.Joachim S. schrieb: > aber TWI des Tiny841 kann keinen master spielen. Aber man könnte sich ja einen zweiten I2C Port kreieren der dann Master zum Display sein könnte. Ich würde das so machen denn meine Soft-I2C-Implementierung lässt ein praktisch beliebige Auswahl von Pins dafür zu. "Paar" Bytes Mehraufwand ....
Noch eine Frage zum Problem. Wenn ich den Attiny 841 nehme und Display mit 4 Bit anschliesse, könnten mit den anderen so um die 7 Pins sein. Wie kann ich das Display vernünftig über den I2C Bus ansteuern. Auf dem Atti 841 habe ich doch ein Programm drauf, was sit dabei zu beachten? Jemand eine Idee dazu?
Klaus schrieb: > Wie kann ich das Display vernünftig über den I2C Bus ansteuern. Du brauchst einen I2C Port Expander und dafür nur 2 Leitungen: SCL und SDA. https://www.ebay.de/itm/PCF8574-I2C-PortExpander-Shield-Modul-fur-Arduino-Raspberry-Pi-und-sonstige-uC/291971347592?hash=item43fad93488:g:g64AAOSwPOhaXman
Da bin ich genauso weit wie vorher. Möchte diesen PCF nicht verwenden. Habe ihn bereits mit einem anderen LCD Display 4x16 verwendet. Möchte ein Oled Display von EA mit einem Attiny 841 über I2C ansteuern. Die übertragung in beide Richtungen geht schon. Bleibt nur noch die eigentliche Ansteuerung mit dem 841 im 4 Bit Modus
Klaus schrieb: > Keiner eine Idee dazu? Wenn du irgendwie, irgendwann mal technisch darstellen könntest, was du eigentlich willst, dann könnte man vielleicht auf Ideen kommen. Aber so, wenn schon die Frage absolut hirnloses Gesülze ist, welches von einem so derart tiefen Nichtwissen dessen spricht, was man tut, da wird das schon echt schwierig mit den Ideen...
Hatte eigentlich auf Hilfe und Unterstützung gehofft. Das scheint aber irgendwie nicht vorhanden zu sein, Ausgangslage: 1. Attiny 841 2. Display EA W204 Oled mit 4x20 Zeichen Betriebsart Display: 4 Bit Betrieb am Atti 841 Betriebsart Attiny 841: - als I2C Slave zur Ansteuerung des Displays Master: Atmega 128 Was bereits funktioniert : Die Verbindung mit dem I2C Bus vom Master und Slave mit Austausch von Werten Was ich suche: Wie steuere ich den Attiny 841 als Slave zur Darstellung von Zeichen auf dem Display an Ist das klarer?
Klaus schrieb: > Ist das klarer? Ja, ich weiß jetzt immerhin, was du willst und brauchst. Ich könnte das auch programmieren. Aber: es ist nicht mein Problem, warum also sollte ich das tun? Es ist aber offensichtlich dein Problem, du hättest also eine Motivation, es zu tun. Das einzige, was dich davon abhalten könnte: du kannst nicht Programmieren. Das wäre aber böse, ein echter Showstopper. Wenn man Programme bauen will, sollte man Programmieren können. Echt! Wenn du es nicht kannst: Lernen hilft.
c-hater schrieb: > Wenn du es nicht kannst: Lernen hilft. Ich will aber dass mir gebratene Tauben in den Mund fliegen. Und zwar ganz von alleine!
Na kommt, ich glaube, da fehlt nur ne Idee, wie er das anfangen soll. -Initialisierung macht der Tiny ganz allein, ohne Zutun des masters. Jetzt musst du entscheiden - wieviel Funktionalität willst du von aussen steuerbar machen? Im allereinfachsten Fall beschränkst du dich erst mal darauf, nur Zeichen aus dem character-ROM darzustellen. Verzichtest auf den CG-RAM und auch aufs Lesen des Displays. Du reservierst einen Speicherbereich von 80 Byte, auf den du vom master aus schreibend zugreifen kannst start write dev adr write byte adr write datenbytes (n) stop bei stop schmeisst du alle 80 Byte aufs Display, fertig in der einfachsten Form. Jetzt kannst du dich nach Beleiben weiter austoben.
Das mit der Idee stimmt. Erwarte das mir keine gebratene Tauben so einfach zufliegen. Habe bisher am Atm 128 das LCD initialisiert und konnte die gewünschten Ausgaben am Display anzeigen lasse. Am Display habe ich einen PCF 8574 in Betrieb, der die Darstellung im 4 Bit Modus macht. Das sind die 4 Datenleitungen und 3 Steuerleitungen. Am Atti 841 mache ich wieder ein init des Displays, soweit ist alles klar. Kann ich den Ausgabe am Display genauso vornehmen wie beim PCF oder gibt es was zu beachten? Sorry für die Fragen, aber es scheint kaum etwas an Wissen für diesen Fall zu geben
Klaus schrieb: > Kann ich den Ausgabe am Display genauso vornehmen wie beim PCF Eher nicht. Ich denke mal, du hast bisher eine lib für Display+PCF-Kombi benutzt? Also fertige Funktionen wie lcd_gotoxy(), lcd_clr() etc? Wenn ja: das ist dann der Fluch der libraries :-), du hast es erfolgreich benutzt, aber gar nicht verstanden wie es funktioniert. Ich weiss immer noch nicht genau, was du eigentlich willst. Soll nur der PCF durch den Tiny ersetzt werden und der master sozusagen mit der PCF-Software das Display betreiben kann?
Der Master kann nicht mit der Lib vom LCD betrieben werden, das ist klar. Die Lib für die LCD liegt auf dem Atti 841 und muss es neu schreiben. Da auch der EA W204 etwas eigen ist. Nach Datenblatt soll er fast identisch zum HD sein, aber eben nur fast. Das Ziel ist eigentlich den Attiny 841 als Slave für viele verschiedene Anwendungen zu nutzen, z.B. als Encoder, Joystick, Display, Messung Helligkeit und Farbe usw. Soll immer als Slave am Bus hängen und seine Intellegenz geteilt zum Master zu verwenden oder eben Teilaufgaben selbstständig auszuführen.
Hm, immer noch nicht alles verstanden... Du könntest die Funktion des PCF85 doch im Tiny841 nachbauen, ist ja lächerlich wenig was der macht. Dann bleibt die Software im master wie sie ist.
H.Joachim S. schrieb: > Hm, immer noch nicht alles verstanden... > Du könntest die Funktion des PCF85 doch im Tiny841 nachbauen, ist ja > lächerlich wenig was der macht. Dann bleibt die Software im master wie > sie ist. Geht das überhaupt? Auf diese Idee bin ich gar nicht gekommen. Ist natürlich toll wenn der Rest so bleiben kann. Null Ahnung ob das so geht. Wie mach ich das?
Das Ding hat doch nur ein einziges 8-bit-Register, welches man Schreiben oder Lesen kann. Die Originalpins sind open-drain mit pullup. Also musst du beim Schreiben mit DDRx und PORTx arbeiten, Lesen von PINx. Ganz einfach wirds, wenn du PortA benutzt, da du dann einen kompletten 8bit-Port hast und damit die Bitschubserei nicht braucht. Kannst natürlich auch auf PortA und B verteilen.
Werde es mir ansehen. Problem könnte der 841 sein. Ob er an der richtigen Stelle die Pins frei hat. Mal sehen. Das andere ist wenn er autak läuft ohne Anbindung an den Bus. Komme nicht drum rum ein passendes Lib zu schreiben. Danke für die Infos LG Klaus
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.