Hallo in einem Prospekt zu einem Display vom Typ edip128 habe das Bild mit den Adressen gefunden. Leider verstehe ich nicht, welche I2C Adresse gemeint bzw. welcher Bereich. Kennt sich jemand damit aus? achim
je nach Verdrahtung der Pins 11,7,6 wird die Adresse des Chip eingestellt. Mit dem Befehl (rechte Seite auf dem Bild) sprichst du den Chip an.
Hallo Frank Nach Angabe des Herstellers hat das Display 8 Basisadressen (BA0 - BA2) und 8 Slaveadressen (SA0 - SA2) an den Pins 6,7,11 und 8,9,10. Komme mit der schreibweise $10 nicht klar. Schreibe meine Adressen immer so z.B. 0x40 achim
$10 oder 0x10 oder 10h meint das gleiche. Quelle: https://de.wikipedia.org/wiki/Hexadezimalsystem#Darstellung_von_Hexadezimalzahlen
Da stimmt was nicht Beispiel dazu: (am realen Display ermittelt) BA0 - BA2 - Brücken auf offen - alle Pins auf H - Adresse ist $DE BA0 - BA2 - alle Brücken geschlossen - alle Pins auf L - Adresse ist $40 alle Slave Anschlüsse sind dabei offen auf H Nach der Tabelle ist bei BA0 - BA2 auf H die Adresse $D0 Das verstehe ich nicht achim
Sorry, was verwechselt. 0x40 ist ok, weil ich mein Display zur Kontrolle dran habe, zählt also nicht
Mensch Achim, wo ist denn schon wieder das Problem? Das LCD hat halt 3 Bits für die Basisadresse und 3 für die Slaveadresse. Das ist zwar ungewöhlich, aber OK. Stell die Pins ein wie du willst, daraus ergibt sich die I2C Adresse des LCDs. Fertig! Schon mal den kleinen Satz unter der Tabelle gesehen? "alle Pins offen: Schreiben $DE Lesen $DF"
Also ich sehe da auch kein Problem. Links wählst Du deine Wunschadresse die rechts daneben steht.
Achim S. schrieb: > Kann mir keiner helfen? Vergiss BA2-BA0, die sind in der Tat unlogisch. Nimm nur die BaseAdress für HighNibble, SA2-SA0 für D3-D1, D0 = R/W und gut ist es.
Hallo Falk das habe ich gelesen und am Display ausprobiert. Bei allen Pins offen (alle Pins auf H) ist die Adresse DE und das display antwortet. Soweit ok. Setze ich BA0 auf H müsste es die Adresse $20 sein. Gebe die Adresse ein, also 0x20, das Display meldet sich nicht. Wieso? achim
Achim S. schrieb: > Adresse DE und das display antwortet. Achim S. schrieb: > also 0x20, das Display meldet sich nicht. Wieso? Versuch mal 0x2E
Achim S. schrieb: > Setze ich BA0 auf H müsste es die Adresse $20 sein. Aber nicht wenn BA1 und BA2 offen bleiben.
Die Basisadresse wird an den Pins 6,7,11 verdrahtet. Die Slaveadresse wird an den Pins 8,9,10 verdrahtet. Um das Display anzusprechen wird in einem Befehl nach deiner geposteten Tabelle die Basisadresse in den Datenbits D7,D6,D5,D4 angegeben und die Slaveadresse in D3,D2,D1. D0 für Lese- oder Schreibbefehl. Schau dir auch das "Pinout eDIP128-6: I2C mode" in einem Datenblatt an. Da stehen die Pins für die Slaveadresse, die in deiner geposteten Tabelle nicht aufgeführt sind.
hp-freund schrieb: > Versuch mal 0x2E kommt auf die Betrachtungsweise an, die einen gucken nur 7-Bit 00-7F (ohne I2C Erweiterung) die anderen shiften mit dem R/W Bit weil Bit0 R/W ist Das wäre dann 01-FE (oder so ähnlich)
:
Bearbeitet durch User
@ Marc Vesely (Firma: Vescomp) (logarithmus)
> Vergiss BA2-BA0, die sind in der Tat unlogisch.
Das einzige was hier immer wieder unlogisch ist, bist du.
Eine Tabelle hat den Sinn, einen Zusammenhang von Eingangsvariablen zu
Ausgangsvariablen darzustellen. Der muss nicht linear und auf 1. Klasse
Niveau sein. Im allgemeinen ist er das nämlich nicht, sonst würde man
keine Tabelle brauchen.
Wie ich das verstehe werden dur Pin 11,7,6 einfach nur die oberen 4bit gewählt/getauscht. Die unteren sind unabhängig davon.
@Achim Seeger (achims) >das habe ich gelesen und am Display ausprobiert. Bei allen Pins offen >(alle Pins auf H) ist die Adresse DE und das display antwortet. Soweit >ok. Und warum bleibst du nicht dabei? Oder willst du 64 LCDs an deinen Bus anschließen? >Setze ich BA0 auf H müsste es die Adresse $20 sein. Nö, du musst ja noch die Slaveadresse berücksichtigen. Ausserdem sind alle offenen Pins automatisch H (interner Pull-Up). Also, wie stehen ALLE deine Pins BA2-0 und SA2-0?
@ langer (Gast) >Schau dir auch das "Pinout eDIP128-6: I2C mode" in einem Datenblatt an. >Da stehen die Pins für die Slaveadresse, die in deiner geposteten >Tabelle nicht aufgeführt sind. Nö, das ist EXAKT die Tabelle aus dem Datenblatt. Und eigentlich (tm) nicht allzu schwer zu verstehen.
langer schrieb: > Schau dir auch das "Pinout eDIP128-6: I2C mode" in einem Datenblatt an. > Da stehen die Pins für die Slaveadresse, die in deiner geposteten > Tabelle nicht aufgeführt sind. Was meinst du mit der Satz. Der PIN 12 liegt auf GND und damit ist der I2CMode eingestellt. Beim Begriff Basisadresse gehe ich da von aus, das man damit die Grunddaten einstellen kann. Falls das nicht reicht kann man wahrscheinlich mit Slaveadressen noch was verändern. Finde in der Tabeklle aber keine Logik Falls jemand eine Vorschlag hat, habe das Display angeschlossen und kann sofort alles testen. Noch was dazu. Gerade Zahl (Adresse) schreiben, ungerade lesen. Dann müsste z.B. 2,4,6,8,10 usw die schreibadresse sein. Könnte man ja auch testen? achim
Falk B. schrieb: > Das einzige was hier immer wieder unlogisch ist, bist du. Dass du mit Logik auf Kriegsfuss steht, wird mir mittlerweile klar. Dass jemand an einem Beitrag nur seinen Author zu bemängeln hat, dann aber dessen Beitrag praktisch wiederholt, spricht für sich.
Achim S. schrieb: > Alle Pins sind offen und damit stehen sie auf H Richtig. Damit kannst Du dann mit 0xDE auf das Display zugreifen, stimmts?
stimmt genau, wenn alle Pins (B und S)offen sind, also auf H liegen bekomme 0xDE. Welche Adresse muss den kommen wenn ich BA0 auf GND stecke?
Habe es sofort getestet, es stimmt genau. Was für Logig ist das? BA1 auf GND oder BA2 auf GND? Welchen einfluss haben die Slave? achim
@Achim Seeger (achims)
>Welche Adresse muss den kommen wenn ich BA0 auf GND stecke?
Du Plinse! Oben schriebst du noch was von H!!!!
Achim S. schrieb: > BA1 auf GND oder BA2 auf GND? Und BA0 auf H bzw. offen? Dann: 0x2E > Welchen einfluss haben die Slave? Betrachte einfach die oberen und die unteren 4 Bit getrennt.
Nach Angabe im Datenblatt sind die offenen Pins automatisch auf H, mit der Brücke lege ich sie auf GND
Achim S. schrieb: > langer schrieb: >> Schau dir auch das "Pinout eDIP128-6: I2C mode" in einem Datenblatt an. >> Da stehen die Pins für die Slaveadresse, die in deiner geposteten >> Tabelle nicht aufgeführt sind. > > Was meinst du mit der Satz. Der PIN 12 liegt auf GND und damit ist der > I2CMode eingestellt. OK. Ich meinte die angehangene Tabelle. Die Pins für die Slaveadresse sind bei dir vermutlich offen und liegen damit auf high. Die mußt du natürlich in deinem Adressbyte berücksichtigen. Wenn du BA0 auf high setzt (ist ja sowieso auf high wenn offen, also BA1, BA2 auf GND verdrahtest) sind alle Slaveadressen wenn offen auch noch auf high. Adresse müßte also 2E zum Schreiben oder 2F zum Lesen sein. Basis 0010 + Slaveaddr. 111x (x Lesen/schreiben) = 0010111x
@ Achim Seeger (achims) >Habe es sofort getestet, es stimmt genau. >Was für Logig ist das? Die LogiK der Tabelle! >BA1 auf GND oder BA2 auf GND? Quark! >Welchen einfluss haben die Slave? TABELLE!! Wenn BA2=H BA1=H BA0=L dann gilt die vorletzte Zeile. D.h. Bit D7 D6 D5 D4 D3 D2 D1 D0 binär 1 0 1 1 1 1 1 R/_W hex B E D3-D1 müssen den gleichen Wert haben wie SA2-0, hier also 1!!! Oder um es anders zu sagen. Den Wert der Adressbits D7-D4 muss man aus der Tabelle ablesen, abhängig von BA2-0. SA2-0 trägt man direkt in der Adresse ein. Für die Leute, die das überfordert, müsste der Hersteller eine Tabelle mit 64 Zeilen angeben. Dazu hatte er wohl keine Lust. Oder er nahm an, daß die Tabelle verständlich sei.
Jetzt habe ich BA1 auf GND und BA0 und BA2 auf H. Die adresse 0x2e geht nicht
Ich hau mich weg. Genau das richtige für einen launigen Freitag Abend. Dankeschön!
Achim S. schrieb: > BA0 auf H, BA1 auf H, BA2 auf L ergibt 4e Aber nur wenn SA0..SA2 nicht verdrahtet sind Beitrag "Re: I2C Bus - welche Adresse ist das?"
Wenn ich das richtig verstanden habe, besteht eine Adresse z.B. aus 0xDE das sind D für die Basisadresse und E für die Slave Adresse, jeweils 3 Pins ergibt 8 mögliche Adressen für Basis und Slave. Wenn ich das von Falk ansehe Falk B. schrieb: > Wenn > > BA2=H > BA1=H > BA0=L > > dann gilt die vorletzte Zeile. D.h. > > Bit D7 D6 D5 D4 D3 D2 D1 D0 > binär 1 0 1 1 1 1 1 R/_W > hex B E > > D3-D1 müssen den gleichen Wert haben wie SA2-0, hier also 1!!! > > Oder um es anders zu sagen. Den Wert der Adressbits D7-D4 muss man aus > der Tabelle ablesen, abhängig von BA2-0. SA2-0 trägt man direkt in der > Adresse ein. ist es klar. Ist bloss sehr kompliziert erklärt oder gar nicht. Denke, habe es begriffen Danke für eure Hilfe achim
Achim S. schrieb: > Wenn ich das richtig verstanden habe, besteht eine Adresse z.B. aus > > 0xDE das sind D für die Basisadresse und E für die Slave Adresse, > jeweils 3 Pins ergibt 8 mögliche Adressen für Basis und Slave. Im Prinzip ja. Aber das E von DE beinhaltet als D0 (Datenbit 0) auch noch das R/W Bit. Die gleiche Adresse/Device wird also auch mit DF angesprochen, abhängig ob geschrieben oder gelesen werden soll. Wenn man sich deine gepostete Tabelle anschaut, ist sie eigentlich eine Verdrahtungsanweisung für die Basisadressen. So ausführlich, wohl weil es die Basisadressen nicht fortlaufend gibt. 0x50 fehlt zum Beispiel. Ist die Basisadresse HW-mäßig festgelegt, wird sie im Adressbyte in D7..D4 mit 4 Bits binär codiert. Bei den Slaveadressen stimmt die Beschreibung mit den 3 Pins für 8 mögliche Adressen.
langer schrieb: > D7..D4 mit 4 Bits binär codiert. Bei den Slaveadressen stimmt die > Beschreibung mit den 3 Pins für 8 mögliche Adressen. ... fortlaufend codiert in 3 Bits meinte ich eigentlich. Eine von 8 Basisadressen wird natürlich auch mit 3 HW Pins festgelegt - die Adressen sind aber nicht fortlaufend.
Man sollte sich nicht durch das Datenblatt verwirren lassen. In dem Zeitdiagramm wird richtig eine 7-Bit I2C Adresse gezeigt und in der Tabelle werden 8-Bit Baseaddressen (z.B. $D0) angegeben. Das passt nicht zusammen. So schwer ist es doch eigentlich gar nicht, die 7-Bit I2C Adresse von den 8 Bit des als erstes übertragenen Adress-Bytes zu unterscheiden, dass sich eben aus besagter 7-Bit Adresse und dem R/W-Bit zusammen setzt - so wie in dem Zeitdiagramm gezeigt ...
Vergiss die Spalte 'BaseAddress'. Die sorgt nur für Verwirrung. Diese ist nämlich in D7:D4 von I²C-Address schon enthalten. Dazu kommen eben noch Deine 3 SA-Bits und R/W. Gruß Jobst
:
Bearbeitet durch User
langer schrieb: > Ist die Basisadresse HW-mäßig festgelegt, wird sie im Adressbyte in > D7..D4 mit 4 Bits binär codiert. Basisadresse | "binär codiert" HW-verdrahtet| im Adressbyte -------------+---------------- $10 | 0001xxxx $20 | 0010xxxx $30 | 0011xxxx $40 | 0100xxxx $70 | 0111xxxx $90 | 1101xxxx . $1 = b0001 . $9 = b1101 .
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.