Forum: Mikrocontroller und Digitale Elektronik Mindesttaktzahl für I²C?


von Maruu ;. (maruu)


Lesenswert?

Hallo,

ich hab mir ne kleine Testplatine mit einem PIC16F876A mit I²C
gebastelt. Soweit ist alles ok, aber beim senden eines I²C Bytes wird
das erste und das letzte Bit verschluckt, das heisst das ist immer 0.
Ich arbeite im 100KHz I²C Modus und hab einen 4MHz Takt am PIC. Ist das
zu wenig? Im Datenblatt hab ich nichts gefunden ob der Takt höher sein
muss?

Gruß

Hannes

von Benedikt (Gast)


Lesenswert?

I2C hat keine untere Taktfrequenz, man könnte theoretisch mit 0Hz
arbeiten.

von Dummschwätzer (Gast)


Lesenswert?

0 Hz ist aber eine Gleichspannung.
Vielleicht mit 0,001 Hz

von Μαtthias W. (matthias) Benutzerseite


Lesenswert?

Hi

es gibt einige Chips (meist AD-Wandler) die einen Mindesttakt
verlangen. Aber die große Mehrheit verlangt das nicht.

Matthias

von Maruu ;. (maruu)


Lesenswert?

Naja ein gewisser Mindesttakt am PIC muss ja sein, denn wenn ich mit 10
Hz Takte und ich bekomm über den Bus Informationen mit 100Khz kann ich
die ja garnicht verarbeiten. Gibts da nicht ne grobe Richtlinie?

Gruß

Hannes

von Μαtthias W. (matthias) Benutzerseite


Lesenswert?

Hi

na das betrifft die PIC Seite und nicht den Bus. Was dein PIC für einen
Mindesttakt braucht um einen 100kHz I2C bedienen zu können wirst du in
dessen Datenblatt finden. Es wird wohl mindestens ein Faktor 4 zum I2C
Takt sein.

Matthias

von Mark H. (haemi)


Lesenswert?

Vorausgesetzt, der PIC teilt den Takt nicht vor, brauchst Du mindestens
die doppelte SCL-Frequenz (Nyquist).

Mark

von Uwe Bonnes (Gast)


Lesenswert?

I2C mit Mindesttakt ist dann SMBus, wie er im PC verwendet wird.

von Gast (Gast)


Lesenswert?

Unter ca. 1 KHz sollte man nicht gehen, da der Slave evt. einen
"Timeout" fehler unterstellt (bus stalled). Bei 100 KHz sind keine
probleme zu erwarten. Source code veröffenlichen! Und was ist der Slave
(µC code unbekannt, oder doch ein std. bauteil).

von Bernd Rüter (Gast)


Lesenswert?

Du betreibst den PIC als Master in der I2C-Kommunikation ?
Dann gibt er die Geschwindigkeit vor. Da ist es egal, wie schnell (oder
langsam) er ist ! (solange er nicht den maximale Schritttakt der Slaves
übersteigt).

Du hast die I2C-Kommunikation unter Verwendung der Hardware erstellt ?
Gut, da kann nicht viel schief gehen, poste den Code !

Du hast es in C zu Fuß programmiert ? Viel Spaß noch !

Gerne werden die Pullups in SCL und SDA vergessen !

von Dietmar (Gast)


Lesenswert?

Mit zu hohen Pullups (20k) in einer Anwendung mit 100kbit/s, wurde der
I2C-Bus in einer meiner Anwendungen, auf 70 kbit/s ausgebremst
(Flankenverzögerung). Das habe ich jedoch erst am Oszi gesehen,
Störungen am I2C-Bus und Datenfehler traten jedoch nicht auf.

Zur Berechnung der Pullups gibt es ein Papier mit einem Graphen R in
Abhängigkeit der Frequenz, von Philips, irgendwas mit I2C
Spezifikationen, das ist dort downloadbar. Den Link habe ich jedoch
leider an meinem Arbeitsplatz und nicht hier.

Beim µController, bei mir der LPC2129 von Philips, läßt sich die
niedrigste Bitrate etwa ab 1 kbit/s einstellen.

Philips ist einer der I2C-Erfinder. Dort findet man auf jeden Fall noch
Informationen.

Gruß

Dietmar

von Maruu ;. (maruu)


Angehängte Dateien:

Lesenswert?

Hallo,

Ich betreibe meinen PIC eigentlich im Slave Mode. Auf den Master habe
ich keinen Einfluss. Die Überschrift die ich gewählt hab ist
irreführend. Ich meinte nicht welchem minimalen Takt der I²C-Bus haben
muss, sondern welchen minimalen Takt mein Slave-PIC haben muss um auf
einem 100KHz I²C Bus lauschen zu können. Aber wenn das mit 4Mhz kein
Problem sein sollte, dann muss ich den Fehler vo anders suchen.

Im Anhang hab ich mal mein Assembler File angehängt. Nict irritieren
lassen von dem RxBuffer und TxBuffer ich will einfach auf jede Anfrage
255 zurücksenden, nur leider macht er das nicht. Sieht jemand einen
Fehler?

Gruß

Hannes

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.