mikrocontroller.net

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


Autor: Maruu ;-) (maruu)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Benedikt (Gast)
Datum:

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

Autor: Dummschwätzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
0 Hz ist aber eine Gleichspannung.
Vielleicht mit 0,001 Hz

Autor: Μαtthias W. (matthias) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

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

Matthias

Autor: Maruu ;-) (maruu)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Μαtthias W. (matthias) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Mark Hämmerling (haemi)
Datum:

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

Mark

Autor: Uwe Bonnes (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
I2C mit Mindesttakt ist dann SMBus, wie er im PC verwendet wird.

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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).

Autor: Bernd Rüter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 !

Autor: Dietmar (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Maruu ;-) (maruu)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

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.