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
Gast
#1019276
Ja...Du hast vergessen, was anzuhängen
ok dachte es kommt mit
Gast
#1019292
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
also folgende zeilen: ldi temp,(1<<clock)|(0<<data) out ddrd,temp cbi portd,data
Gast
#1019302
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
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...
hier die signale
Gast
#1019314
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
stimmt es soll aber eins da sein denn die adresse ist ja korrekt. hab 10k pull-ups aber werds gleich ma mit 4k7 ausprobieren
Gast
#1019321
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
is ok trotzdem vielen dank für die hilfe...
Gast
#1019331
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
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
Gast
#1020255
freut mich :) gruß hans
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.
