www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik I2C-kommunikation geht nicht


Autor: Frank (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
hallo zusammen,
ich versuche Daten von µC an einen I2C DAC-Converter zu senden.Das 
Programm ist vom Beitrag von Manni: AVR TWIMaster und Slave Funktionen 
in C basiert.
Meine Einstellungen:
F_CPU=10Mhz
SCL_ckl=250Khz
DAC5574 adresse for read 0x9F
DAC5574 adresse for write 0x9E

Wenn ich das Programm ausführe , es passiert gar nichts,*TWI_ResonseType 
und TWSR gleich 0xF8, die Funktion TWIS_Write wird nie aufgerufen.
Kann jemanden mir sagen, was ich falsch mache.Gibt es zusätliche 
Einstellungen zu machen?
Anbei das Programm und der Schalplan der Platine.

danke

Autor: Stephan W. (sir_wedeck)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

erst mal scheinen die I2C Adressen falsch zu sein.

Basis Adresse ist: 0x98
ist eigentlich FALSCH aber laut DB ok! ( richtig -> 0x4C da 7 Bit Adr.)
IC UDAC1 -> 0x9A -> A0 = 1 / A1 = 0
IC UDAC2 -> 0x98 -> A0 = 0 / A1 = 0

des weiteren scheinst du den Code für einen I2C -Slave eingebunden zu 
haben und nicht für einen Master.

Dein MC ist der Master auf dem Bus und will die Daten von den DACs 
lesen!!!

mfg
Stephan

PS: Deine Slave-Adr im Programm ist ebenfalls zu groß!!!
Im I2C Protokoll für den AVR gehen glaub ich nur 7 Bit Adressen!!!!
aber das nur am Rande.

Autor: Frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
danke zuesrt für die Antwort.

Ja du hast ganz recht für die Adresse ich habe nicht gesehen, dass A1 
für beide Bauteile an der Masse verbunden ist.
Der name der Funktion stimmt nicht ganz.Aber de µC soll der Master und 
DAC der Slave sein.Ich versuche Daten vom µc an den DAC zu senden.
Ich dachte die Slave-Adresse wäre die Adresse von UDAC1 oder UDAC2.

Autor: Stephan W. (sir_wedeck)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi
hast du die Master-Lib eingebunden und es zum laufen gebracht???

Stephan

Autor: Frank (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
hallo zusammen,
ich komme wieder mit einem anderem Problem.
zuesrt hatte ich die falsche Datei benutzt statt Master habe ich Slave 
benutzt.
Jetzt versuche ich 1 volt auszulesen durch den channel C.
Vdd=3.3v, standard mode.
Die I2c kommunikation läuft schon. Wenn ich im main die Variable 
Data_to_sent benutzt, es wird getriggert aber ich lese 3.3v am 
Ausgang.Falls ich die Variable Command_to_sent benutzt es passiert gar 
nichts.
bitte kann jemanden mir helfen. vielleich stimmt nicht die 
Konfigurationen im control byte.
Danke im vorraus

Autor: Frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo,
ich habe schon einen Fehler gefunden.In main für die Funktion write 
hatte ich kein Index benutzt.

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.