Hallo, ich versuche einen I2C Baustein mit einem ATMEGA128 über das TWI anzusprechen. Dieser Baustein hat neben seiner Slaveadresse auch eine Subadresse für seine Register. Wird dann diese Subadresse wie ein Datenbyte behandelt? Das Schreiben scheint zu klappen. Wie ist das dann beim Lesen? Das Datenblatt liefert hierzu leider keine Auskunft. Wenn ich die Slaveadresse mit Lesebit schicke, bekomme ich als Status 0x48. Wenn ich das als ok annehme und als nächstes die Subadresse schicke, hängt sich der Controller in der while-Schleife für den Test des INT-Bits auf. Es wird also nicht mehr gesetzt. Könnte vielleicht dieser Satz: "The TDA4886 contains an I2C-bus receiver for several control functions." bedeuten, dass ich den Baustein zwar beschreiben, aber die Registerinhalte nicht auslesen kann? Gruß Matthias
Hallo, warum sollte man von derartigen ICs was lesen sollen? Die haben doch nichts mitzuteilen... Wäre doch nutzloser Aufwand für den Hersteller, da Transmit-Funktionalität einzubauen. Gruß aus Berlin Michael
Hallo, prinzipiell hast Du recht. Ich dachte mir, dass man die Registerinhalte zur Kontrolle oder als aktuellen Status auslesen kann. Ich wollte auf diese Art und Weise sichergehen, dass von der Softwareseite her alles ok ist. Wenn das Zurücklesen nicht geht, werde ich wohl oder übel direkt an der Zielhardware testen müssen, um die Funktion nachzuweisen. Danke für den Hinweis. Gruß Matthias
Hallo, naja, zumindest mir bekannte Audio-Prozessoren (TDAxxx), diverse Tuner-PLL und ähnliches können das nicht. Wenn ich so darüber nachdenke, fällt mir garkein (bisher von mir genutzter) I2C-IC ein, daß das kann. Wenn nötig, kann man nur spezielle Register für Status-Werte oder Parameter usw. lesen, nie jedoch die selbst geschriebenen Daten. Gruß aus Berlin Michael
Hallo Michael, die Info hilft mir auf jeden Fall weiter. Ich brauche also keine Fehler zu suchen, wo keine sind :). Gruß Matthias
Es gibt I2C-ICs die das können, z.B. EEProms oder RTCs. Bei EEproms z.B. ist die Sub-Adresse die Speicherstelle, in die geschrieben / gelesen wird. Dort wird das so realisiert: I2C-Adresse senden (Schreibzugriff), dann Sub-Adresse senden, dann eine repeated Start-Condition auslösen, I2C-Adresse senden (Lesezugriff), ab da kann man dann die Daten lesen (die Subadresse wird automatisch inkrementiert). Ich meinerseits kann behaupten, dass ich noch nie ein I2C-IC verwendet habe, das das nicht kann ;-)
Hallo, @Marvin M.: wäre auch ziemlich unsinnig, wenn man den in einen Speicher geschriebenen Wert nicht wieder lesen könnte, allerdings wurde das FINO-Prinzip (First In - Never Out) schon in einem uralten Aprilscherz erfunden. ;) Wenn Du also nur RTC und EEPROM nutzt, hast Du sicher recht. :) Die Version mit dem Repeat-Start wird auch woanders benutzt (MAS3507 MP3-Decoder fällt mir da gerade ein, die neueren machen es sicher genauso), allerdings liest man dort dann eben nicht unbedingt den Wert, den man in das Register unter der gleichen Subadresse geschrieben hat, sondern ein anderes internes Read-Only-Register. Ich wollte auch nur darauf hinaus, daß man nichts lesen kann, wenn das Datenblatt nicht explizit Lesezugriffe beschreibt, verrät, wie diese ablaufen müssen und was man dabei dann liest. Gilt doch ganz allgemein, auch beim AVR ist bei jedem Register und Bit angegeben, ob es RW, R oder W ist. Gruß aus Berlin Michael
Es wäre halt schön gewesen, wenn im Datenblatt genau stehen würde, was geht und was nicht. Ich habe mir verschiedene Datenblätter von I2C-Ics angesehen. Diverse RTCs, Portexpander und Speicher sind recht gut beschrieben. Im Bereich der Unterhaltungselektronik ist es eine Katastrophe. Die Datenblätter sind wahrscheinlich für Leute geschrieben, die eh schon wissen, wie es funktioniert. So, da werde ich mal mein Adapterkabel löten, es zwischen Navi und Monitor klemmen und schauen, ob ich den Kontrast verstellen kann :) Nur um irgendwelchen Fragen vorzubeugen: Ich kann den Kontrast am Navi Monitor einstellen :) Der TDA4886 ist für mich nur das Tor um später OSD einschleifen zu können. Gruß Matthias
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.