Forum: Mikrocontroller und Digitale Elektronik I²C Bus - Kein Ack


von Markus S. (Gast)


Lesenswert?

Hallo

Ich hab folgendes Problem:

Ich versuche ein Eeprom mit einem DSP (56F8322) anzusprechen.
Laut Oszilloskop stimmt die Startbedingung und die Adresse.
Der 9. Takt ist plötzlich aber um einiges länger "high" als bei den 8 
Takten davor. Die SDA-Leitung schaltet von high zu low (was meiner 
Meinung nach doch das "Ack" sein müsste).
Der DSP erkennt das Ack aber nicht und beginnt von vorn. Das liegt doch 
bestimmt am Takt.

Warum ist der 9. Takt länger?

MfG
Markus S.

von ... .. (docean) Benutzerseite


Lesenswert?

weil der länger sein darf...

Der Slave kann clock-stretching machen..

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

von (prx) A. K. (prx)


Lesenswert?

@docean: Bei clock Stretching verlängert sich aber die low Phase, nicht 
die high Phase.

@Markus: Scope-Bild?

von Chris (Gast)


Lesenswert?

Aber nicht alle Master unterstützen das, dann heißt es, mit 
Geschwindigkeit
runter.

von TK (Gast)


Lesenswert?

Hallo Markus,

wenn der Clk auf H ist, dann darf sich die Datenleitung nicht ändern, 
ansonsten ist eine Start oder Stopp Bedingung erfüllt! In dem 
beschriebenen Fall wird eine START-Bedingung vorgegeben (CLK=H und 
DAT=H->L).
Wie lange der Clk auf H liegt (bzw. mit welcher Frequenz übertragen 
wird) bestimmt ja der MASTER. Und es ist nicht außergewöhnlich, wenn der 
Takt mal variiert.

@... (docean) Übrigens geht Clock-Stetching über einen L-Pegel!

Gruß
TK

von Markus S. (Gast)


Lesenswert?

Danke für die Antworten.

Dann bekommt mein DSP kein ACk und beginnt mit einer neuen 
Startbedingung. Deswegen ist der Takt so lang auf "high".
Das hab ich mir doch glatt gedacht. Dann muss ich den Fehler woanders 
suchen.

Danke

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.