www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik I2C Problem mit ATmega


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

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich habe ein Problem mit dem I2C Bus:
Meistens endet die Übertragung bereits nach dem Senden der Adresse.
Ich erhalte noch die Statuscodes, dass Start und Adresse gesendet 
wurden, danach steht die Übertragung.

Im Anhang ist ein Screenshot von der Situation.
Was passiert denn da nach dem ACK der Adresse? Daraus, dass SCL low ist, 
schließe ich, dass der Slave die Übertragung anhält, richtig?

Warum tut er das? Ich muss doch lediglich das TWINT Flag nach Empfang 
immer wieder rücksetzen, oder?
Oder gibt es da noch etwas zu beachten?

Und warum geht nach einiger Zeit auf Daten auf low, sodass beide 
Leitungen dann low sind?

Danke und Gruß
Jan

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Welchen I2C-Baustein versuchst Du denn dort gerade anzusteuern?

Autor: winne (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich schließe daraus das der Master keinen Takt erzeugt und so der Slave 
keine Daten liefern kann.

Da z.B ein speicherchip wie der 24c65 keinen taktgenerator sein eigen 
nenen kann, ist er auf einen externen Takt angewiesen um seine Daten 
seriell zu senden. Diese liefert der Master über SCL. und zwar 
unabhängig davon ob der slave eine eigenetaktquelle besitzt oder nicht.


benutzt du die TWI oder generierst du I²C perbitbanging ?

Autor: Jan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das sind zwei Megas, die miteinander reden sollen.
Und zwar über die interne TWI.

Der Master erzeugt ja einen TAkt; die Adresse wird übertragen. Das ACK 
des Slaves erfolgt ja auch noch.

Aber dann geht SDA wieder auf high, während der Takt auf low bleibt.

Hält der Slave die Taktleitung auf low? Warum tut er das? :)

Gruß
Mr.Green

Autor: winne (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
sorry hatte einen Absturz
hier habe  ich mal einiges zur TWI übersetzt

http://de.geocities.com/postboxelektronik/box/Seri...
http://de.geocities.com/postboxelektronik/box/I2C_...

Der Master gibt auch beim lesen eines Bytes den Takt aus.
Du musst also die TWI veranlassen ein Byte auf dem Bus zu lesen um 
Antwort vom Slave zu erhalten.

Beachte bitte, dass beim lesen des letzten Bytes das das Aknowledge 
nicht angefordert werden darf, da sich sonst die TWI aufhängt!

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.