mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Frage zum ACK des I2C Protokolls


Autor: Florian P. (eckel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo allerseits,

hab mal ne Frage zum Acknowledge beim I2C-Bus.
Und zwar habe ich zum testen ob ich das mit dem ack verstanden habe ein 
kleines testprogramm geschrieben und mein oszi an scl und sda gehängt.
mein Problem ist nun das beim 9. Takt sda immer auf low-signal ist auch 
wenn ich die adresse des Devices bewusst falsch sende...

Könnt ihr mal drüber schauen ob ich was vergessen habe.

MfG Florian

Autor: Hannes (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja...Du hast vergessen, was anzuhängen

Autor: Florian P. (eckel)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
ok dachte es kommt mit

Autor: hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
geb deinem EEProm eine Chance.

und zwar die zu reagieren.

dein prozesseor läßt die Datenleitung auf Ausgang und somit
auf low oder high je nach letztem bit.

du must die datenleitung auf eingang schalten (ohne Pullup,
der ist ja extern an der Leitung.

dann hat auch das EEprom seine Chance!

gruß hans

Autor: Florian P. (eckel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
also folgende zeilen:

ldi temp,(1<<clock)|(0<<data)
out ddrd,temp
cbi portd,data

Autor: hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ansatz stimmt.

in ack: - datenleitung auf eingang
        - clock auf high
        - kurz warten
        - datenleitung lesen, speichern (für spätere Auswertung!)
        - clock auf low
        - datenleitung wieder auf Ausgang

dann i2c stop oder nächstes byte (oder Fehlerroutine ack-Fehler)

gruß hans

Autor: Florian P. (eckel)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
hab das jetzt mal implementiert und nochmal mit dem oszi aufgenommen, 
jetzt
geht die leitung langsam auf high also keine spur mehr vom ack was is 
jetz falsch hier nochmal die geänderte variante...

Autor: Florian P. (eckel)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
hier die signale

Autor: hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wenn kein ack da sein soll ist das bild fast richtig.

hast du externe Pullups (4k7) an den Leitungen

wenn nein geht notfalls auch der interne (eigentlich zu groß)

ein ack wäre, wenn die Datenleitung unten bleibt.

gruß hans

Autor: Florian P. (eckel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
stimmt es soll aber eins da sein denn die adresse ist ja korrekt.
hab 10k pull-ups aber werds gleich ma mit 4k7 ausprobieren

Autor: hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
schau mal hier

http://www.roboternetz.de/wissen/index.php/I2C

da sind die signale gut dargestellt.

ich muß jetzt schlafen, morgen früh ruft die arbeit

gruß hans

Autor: Florian P. (eckel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
is ok trotzdem vielen dank für die hilfe...

Autor: hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ein letzter tip noch

prüf mal ob dein eeprom 250 KHz mitmacht. evtl noch ein
älteres mit nur 100 KHz

kannst ja einfach mal langsamer werden (evtl. int. Osc runtersetzen)

gruß hans

Autor: Florian P. (eckel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
nee der kann 400khz, hab den fehler aber auch schon gefunden...
Wenn er nich in der Software steckt ist er,....
genau in Hardware und da war doch tatsächlich ein adress-pin nicht 
beschaltet
(draht rausgeflutscht)
aber jetz is alles ok bei richtiger adresse bleibt die sda auf low 
sobald ich sie ändere zieht der eeprom sie auf high...

Gruß Flo

Autor: hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
freut mich :)

gruß hans

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.