mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik I2C Subadresse


Autor: Matthias Kölling (poessler)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Michael U. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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


Autor: Matthias Kölling (poessler)
Datum:

Bewertung
0 lesenswert
nicht 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



Autor: Michael U. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Matthias Kölling (poessler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Michael,

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

Gruß Matthias

Autor: Marvin M. (marvin)
Datum:

Bewertung
0 lesenswert
nicht 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 ;-)

Autor: Michael U. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Matthias Kölling (poessler)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.