Forum: Mikrocontroller und Digitale Elektronik I2C Subadresse


von Matthias K. (poessler)


Lesenswert?

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

von Michael U. (Gast)


Lesenswert?

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


von Matthias K. (poessler)


Lesenswert?

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



von Michael U. (Gast)


Lesenswert?

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

von Matthias K. (poessler)


Lesenswert?

Hallo Michael,

die Info hilft mir auf jeden Fall weiter. Ich brauche also keine Fehler 
zu suchen, wo keine sind :).

Gruß Matthias

von Marvin M. (marvin)


Lesenswert?

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 ;-)

von Michael U. (Gast)


Lesenswert?

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

von Matthias K. (poessler)


Lesenswert?

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
Noch kein Account? Hier anmelden.