www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik I2C Bus: Wie Busteilnehmer anschließen?


Autor: Ulrich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

ich habe einen I2C Bus welcher nur aus AVRs besteht. Der Bus ist so 
aufgebaut:
Jeder Bus-Teilnehmer kann I2C-Slave und I2C-Master sein. Der Bus besteht 
zum einen aus einem aus einer "Zentrale" und ca. 4 - 20 "Slaves".

Als maximale Buslänge sind 5m geplant. (PS ich weiß das I2C für was 
anderes entwickelt wurde)

Vor langer Zeit habe ich irgendwo im WWW von jemandem gelesen dass er 
jedem Busteilnehmer einen Reihenwiderstand in die SCL und SDA gehängt 
hat.
Eventuell hat er auch noch einen Pull-up vor oder hinter den 
Reihenwiderstand gehängt.....

Weiß jemand was über die Hintergründe so eines Reihenwiderstandes?
(Eventuell Reflexionen oder damit der "Sender" den bus leicher 
runterziehen kann?)

Ich habe keine Ahnung wie groß der Serienwiderstand sein muss.

bringt so ein Widerstand überhaupt Vorteile für mich?

Gibt es sonst noch Tipps die die Lage bei mir aufhellen?

reicht ein Pullup auf einer Seite des Busses oder sollte noch irgendein 
Abshclusswiderstand am ende vom Bus hin????

Um viele Tipps wird gebeten.

PS: Oder geht es einfach so:
Jeder AVR hängt direkt am Bus mit aktiviertem Pullupwiderstand und sonst 
gar nix?

Autor: Jens Ziegler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schau mal hier rein:

http://de.wikipedia.org/wiki/I2C

Grundsätzlich ist nur ein Pull-Up (z.B. 1KOhm) für jede Leitung 
notwendig. Die internen Pull-Ups kannst du abschalten (nur diese reichen 
erfahrungsgemäß nicht). Ein Abschlusswiderstand ist nicht vorgesehen. 
Bei 5m Kabellänge ist Vorsicht angebracht (Rauschen, Signal-Degeneration 
usw.). Grundsätzlich ist I2C ein Single-Master-Bus, wenn du mehrere 
Master wünschst, musst du (per Software) für entsprechende 
Kollisionsvermeidung (Stichwort z.B. TDMA) sorgen.

Autor: Fabian B. (fabs)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wo hast du das mit dem Single-Master denn her? Selbst in dem von dir 
genannten Wikipedia Artikel steht:
"Mehrere Master sind möglich (Multimaster-Mode). Die Buszuteilung 
(Arbitrierung) ist dabei per Spezifikation geregelt."
Zu den Fragen: schau dir mal die Spezifiktation an, da stehen auch 
Vorschriften zu Leitungsführung bei längeren Bussen. Du musst halt 
darauf achten, dass die Gesamtkapazität des Busses die Specs nicht 
sprengt (15pF glaub ich), sonst brauchst du u.U. z.B. Strong-Pullups.

Gruß
Fabian

Autor: Jens Ziegler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stimmt, ist selbstverständlich ein Multi-Master-Bus. Der Bus ist 
lediglich als Master-Slave-Bus konzipiert. Hab mich falsch ausgedrückt.

Autor: Metaller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Die internen Pull-Ups kannst du abschalten

Davon kann ich nur abarten! Immer die internen Pull-Up's einschalten, 
gerade wenn man mehr als einen AVR am Bus hängen hat. Wenn sie nicht 
eingeschaltet sind, dann kann der Bus in einen undefinierten Zustand 
fallen und die Leitungen immer auf Low ziehen. Die Erfahrung durfte ich 
leider auch schon machen und hat mich mehrere Stunden Arbeit gekostet. 
Also nie ohne interne Pull-Up's die TWI-Schnittstelle betreiben.

Autor: Ulrich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hat noch jemand einen Tipp was ein Widerstand für jede Datenleitung vor 
jedem Busteilnehmer bringt? Würde dies die Kapazität eventuell 
ernidrigen damit die Flanken besser werden?

Autor: Bernd Rüter (Firma: Promaxx.net) (bigwumpus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ein Widerstand vom uC zum Datenbus bringt "sanftere" Flanken auf dem 
Bus, der dann nicht soviel HF-Störungen ausstrahlt. Die Widerstände 
ergeben zusammen mit der Kapazität des Busses ein RC-Glied, das hohe 
Frequenzen abschwächt.
Dadurch werden auch die Flanken "schwächer".

Autor: Jörg S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was dazu führen wird das man den Bus nicht mehr mit hoher Frequenz 
betreiben kann...

Autor: SiO2 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@metaller, wieso Nie ohene die Internen. Dafür sind ja die Externen 
Pullups da. Wo sollte da das Problem sein?

Autor: Metaller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@SiO2

Da fragst Du mich was :) Ich habe am Anfang auch nur die externen 
Pull-Up's drangehabt und nach der ersten Übertragung ging der Bus nicht 
mehr in den High-Zustand und verblieb immer auf Low. An dem Bus hingen 
zwei Mega8, ein Mega128, ein LCD und ein Schrittmotorcontroller. Nachdem 
ich nur die internen Pull-Up's aktiviert habe, ohne das Programm 
abzuändern, lief alles ohne Probleme.

Keine Ahnung warum das danach lief, da ich nur ein Metaller bin und kein 
Elektroniker. Bei mir laufen manche Versuch nach dem Prinzip "Try & 
Error" ab, da mir leider einige Grundlagen fehlen. Irgendwo hier im 
Forum habe ich ein Beitrag gefunden, wo jemand ein ähnliches Problem 
hatte, aber nachdem er die Internen eingeschaltet hatte, funktionierte 
bei ihm auch alles. Leider finde ich den Thread jetzt nicht mehr.

Autor: Ppp Mmm (sanic)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wo ich noch mit C-Control Systemen und viel I2C gearbeitet habe, kam 
immer ein 330 Ohm Widerstand vor jeden Teilnehmer an jede Leitung.

Grüße,
Patrick

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.