Forum: Mikrocontroller und Digitale Elektronik I2C-kommunikation geht nicht


von Frank (Gast)


Angehängte Dateien:

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

von Stephan W. (sir_wedeck)


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.

von Frank (Gast)


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.

von Stephan W. (sir_wedeck)


Lesenswert?

Hi
hast du die Master-Lib eingebunden und es zum laufen gebracht???

Stephan

von Frank (Gast)


Angehängte Dateien:

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

von Frank (Gast)


Lesenswert?

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

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.