Forum: Mikrocontroller und Digitale Elektronik I2C: verschiedene Geschwindigkeit


von Detlev T. (detlevt)


Lesenswert?

Hallo Leute,

bestätigt doch bitte meine Befürchtung: Wenn ich ICs mit Normalmode 
(100kHz) und Fastmode (400kHz) an denselben I2C-Bus hänge, muss ich auch 
die Fastmode-ICs im Normalmode ansprechen, um möglichem Ärger aus dem 
Weg zu gehen, oder? Das Normalmode-IC (es geht hier um einen PCF8574) 
ignoriert nicht einfach einen zu schnellen Takt?

Vielen Dank.

Gruß, DetlevT

von Dieter Werner (Gast)


Lesenswert?

Bei mir klappt es, den PCF8574 mit 100kHz und das am gleichen Bus 
hängendende LCD mit 400khz zu betreiben.

Zum Glück kommt sich da nix ins Gehege, sonst wär das Display 
schnarchlangsam.

von Jörg B. (manos)


Lesenswert?

Detlev T. schrieb:
> Das Normalmode-IC (es geht hier um einen PCF8574)
> ignoriert nicht einfach einen zu schnellen Takt?
Was soll es denn machen? Wenn es keine gültige Adresse bekommt sollte es 
sich auch nicht angesprochen fühlen.

von Detlev T. (detlevt)


Lesenswert?

Hallo Jörg,

denkbar wäre folgendes:
a) Das IC akzeptiert jeden x-ten Takt doch und interpretiert 
irgendwelchen Murks
b) Wie ich gelesen habe, ziehen manche ICs SCL in so einem Fall auf low, 
um den Master zu bremsen. (Nach der Antwort von Dieter gehört das 
PCF8574 offenbar aber nicht dazu)

Gruß, DetlevT

von Detlev T. (detlevt)


Lesenswert?

Hallo Leute,

vielleicht interessiert es eines Tages noch jemanden: Ich habe jetzt 
doch die Specs von Philips (bzw. NXP) herausgesucht 
(http://www.nxp.com/acrobat_download/usermanuals/UM10204_3.pdf) und 
durchgeguckt. Es ist doch so, wie ich befürchtet habe: "As Standard-mode 
devices, however, are not upward compatible; they should not be 
incorporated in a Fast-mode I2C-bus system as they cannot follow the 
higher transfer rate and unpredictable states would occur."

Da ich saubere Implementationen "by the books" bevorzuge, werde ich also 
meine I2C-Routinen so umschreiben, dass der langsamste am Bus die 
Geschwindigkeit für alle bestimmt.

Danke für eure Mühe.

Gruß, DetlevT

von stepp64 (Gast)


Lesenswert?

Es gibt auch den kompatiblen PCA8574 welcher 400kHz kann. Allerdings 
scheint der deutlich schwieriger beschaffbar zu sein.

von Martin J. (bluematrix) Benutzerseite


Lesenswert?

gemessene I2C Takt Erfahrungen mit den atmegas:
16,000MHz - schafft sauber bis zu 700Khz
18,432MHz - schafft sauber bis zu 950Khz

Streckenlänge war 50cm Spiralkabel, verbaut in einem Rennwagen als 
verbindung zwischen Lenkraddiplay und Amaturenbrett...
Probleme gab es keine...
trotz schlechtesten Bedingungen bei fahrten im Regen, Schnee oder 
glühender Sonne bei gefühlten 100C° ;-) auf der Rennstrecke.

gruße Martin

von Detlev T. (detlevt)


Lesenswert?

Hallo step64,

die einfache Beschaffbarkeit (Reichelt) war für mich gerade der Grund, 
diesen Baustein auszuwählen. Ursprünglich wollte ich den MCP23008 
nehmen. Der hätte mir auch sonst besser gefallen, weil ich für den 
PCF8574 noch zusätzliche Pull-Ups brauche (der soll einen ULN2803 
steuern). Aber RS, Fanell & Co sind leider nicht meine Stammdealer.

Gruß, DetlevT

von I2C (Gast)


Lesenswert?

Ich habs jetzt noch nie ausprobiert, aber wäre ein Taktteiler nicht eine 
Idee. Also einfach aus 2 FFs den Takt durch 4 teilen.

von Senf-Dazu-Geber (Gast)


Lesenswert?

Ich bin mir nicht sicher aber der PCA9534 sieht pinkompatibel aus und 
der kann 400kHz.

Gruss

von Jörg S. (joerg-s)


Lesenswert?

Nimm noch den PCA9554, den gibt's auch bei Reichelt. Der hat in einer 
meiner Schaltungen auch den PCF8574 ersetzt :)

von Jörg S. (joerg-s)


Angehängte Dateien:

Lesenswert?

Gibt da auch schöne Übersichten von NXP...

von Detlev T. (detlevt)


Lesenswert?

Hallo Jörg,

der Baustein wäre prima, leider gibt es den bei Reichelt nicht als DIP, 
nur SOIC. Das möchte ich nicht.

Jetzt kommen bestimmt wieder Statements wie "SOIC löten ist doch kein 
Problem". Aber die Zielgruppe des Projektes sind Einsteiger in die 
Mikrocontrollerwelt und da gibt es halt eine gewisse Hemmschwelle.

Ziel ist eine Library (eine Datei mit .a) mit häufig genutzten 
Hardware-Komponenten, die für Bastler leicht verfügbar sind. Ähnlich wie 
bei BASCOM sollen fertige Module den Weg zum schnellen Erfolgserlebnis 
ebnen. Erst einmal sehen, dass es geht und dann die Quelltexte ansehen 
und lernen, wie es geht. Ich weiß noch, wie schwierig damals mein 
Einstieg war, mit den vielen Bits in den vielen Control-Registern, von 
denen immer eins falsch gesetzt war - und wusste nicht welches.

Ich habe die Quelltexte inzwischen angepasst. Jedes Modul, das den 
I2C-Bus nutzt, meldet jetzt die Geschwindigkeit an und der Bus wird nur 
gebremst, wenn es nötig ist.

Hinzu kommt, dass die RTC DS1307 seit heute wieder bei Reichelt 
verfügbar ist, die ich mir ausgeguckt habe. Auch dieser kann leider nur 
I2C-Normal-Mode, das Problem bleibt also. Vielleicht wisst ihr ja dafür 
auch einen Ersatz. Die Anforderungen sind: 5V-Betrieb, I2C-Bus, 
Anschluss für Backup-Batterie, als DIP bei Basteldealern verfügbar. Eine 
echte Kalenderfunktion ist nicht nötig, ein einfacher Zähler ala DS1672 
tut es auch.

Gruß, DetlevT

von Gastino G. (gastino)


Lesenswert?

Detlev T. schrieb:
> Hinzu kommt, dass die RTC DS1307 seit heute wieder bei Reichelt
> verfügbar ist, die ich mir ausgeguckt habe. Auch dieser kann leider nur
> I2C-Normal-Mode, das Problem bleibt also.

Der funktioniert auch mit 400 kHz bei mir fehlerfrei (warum auch immer). 
Habe es eine Weile lang (einige Minuten) getestet. Wie betriebssicher 
das Ganze auf Dauer ist, weiß ich aber nicht und betreibe den 
normalerweise auch nur im 100 kHz-Modus. Ich bevorzuge wie Du saubere 
Implementationen und kein "Geht doch so schon irgendwie"-Gebastel.

Da stellt sich mir eine Frage am Rande: Ist bei Chips ohne Angabe zur 
I2C-Frequenz im Datenblatt einfach anzunehmen, dass die nur für den 
Normalmode geeignet sind (ich finde im Datenblatt des SAA1064 keinerlei 
Hinweis...)?

von (prx) A. K. (prx)


Lesenswert?

Detlev T. schrieb:

> diesen Baustein auszuwählen. Ursprünglich wollte ich den MCP23008
> nehmen. Der hätte mir auch sonst besser gefallen,

Gibts bei TME (verfügbar) und versandkostensparend auch bei modtronix 
(leider grad nicht verfügbar).

von Detlev T. (detlevt)


Lesenswert?

Gastino G. schrieb:
> Da stellt sich mir eine Frage am Rande: Ist bei Chips ohne Angabe zur
> I2C-Frequenz im Datenblatt einfach anzunehmen, dass die nur für den
> Normalmode geeignet sind (ich finde im Datenblatt des SAA1064 keinerlei
> Hinweis...)?

Davon würde ich ausgehen, ohne es wirklich zu wissen. Der Baustein ist 
ja schon etwas älter, gab es da Fastmode überhaupt schon?

Gruß, DetlevT

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.