Forum: Mikrocontroller und Digitale Elektronik AVR: TWI / I2C / 2-Leiter Interface


von Olaf (Gast)


Lesenswert?

Hallo,

in den Datenblättern der ATMEL AVR Reihe findet sich eine 
Beispielschaltung zur Kopplung mehrerer "devices" (was ich für diese 
Betrachtung als mindestens zwei Microcontroller verstehen möchte) 
mittels TWI (bzw. der bei Drucklegung gerade aktuellen Abkürzung für 
diesen 2-Draht-Bus). Dort werden die Module direkt miteinander verbunden 
und die Verbindungsleitungen mit Pullup-Widerständen versehen. Soweit, 
so gut. Funktioniert auch.

Aber: Selbst wenn man davon ausgeht, durch umfangreiche Tests der 
Software sichergestellt zu haben, dass niemals zwei Ausgänge zur 
gleichen Zeit auf einander treffen, gibt es dafür 1. im Regelfall keinen 
Beweis und 2. immer noch Murphy. Daraus ergibt sich die Frage, ob die 
AVR solche Belastungen (also ein Ausgang liefert HIGH, sein 
Gegenüber-Ausgang gleichzeitig LOW) im Ernstfall auch ohne 
Serienwiderstände klaglos wegstecken können? Oder ist das AVR-Datenblatt 
hier einfach nur etwas lässig geschrieben? Die elektrischen 
Spezifikationen sind da eigentlich eindeutig (max. 40 mA pro Pin, bevor 
es qualmt) und widersprechen IMHO der Beispielschaltung.

Wie handhabt Ihr das? TWI mit Schutzwiderständen in den Leitungen oder 
ohne? Ab welcher Datenrate können ca. 1kOhm Serienwiderstände überhaupt 
zu Problemen führen?

Grüsse
Olaf

von Falk B. (falk)


Lesenswert?

@ Olaf (Gast)

>mittels TWI (bzw. der bei Drucklegung gerade aktuellen Abkürzung für
diesen 2-Draht-Bus). Dort werden die Module direkt miteinander verbunden

>AVR solche Belastungen (also ein Ausgang liefert HIGH, sein
>Gegenüber-Ausgang gleichzeitig LOW) im Ernstfall auch ohne

Kann nicht passieren, da TWI mit Open Collector Ausgängen arbeitet 
Ausgangsstufen Logik-ICs.

>Wie handhabt Ihr das? TWI mit Schutzwiderständen in den Leitungen oder
>ohne?

Ohne.

> Ab welcher Datenrate können ca. 1kOhm Serienwiderstände überhaupt
>zu Problemen führen?

tau = R*C

MFg
Falk

von Jörg B. (manos)


Lesenswert?

Wie Falk Brunner schon schrieb sind die TWI-Anschlüsse Open Collector.

Aus diesem Grund sind auch die Pull-Up Widerstände drin da nur diese die 
Leitung auf High ziehen. Die Ausgänge ziehen den Pegel dann auf Low 
runter wodurch es zu keinen Problemen elektrischer Art kommen kann (nur 
logistisch).

von Olaf (Gast)


Lesenswert?

Hi Falk,

danke, dass Du mich in die richtige Richtung geschubst hast! Daraufhin 
habe ich im Datenblatt auch die passende Stelle gefunden:

"When the TWEN bit in TWCR is set (one) to enable the 2-wire Serial 
Interface, pin PD0 is disconnected from the port and becomes the Serial 
Clock I/O pin for the 2-wire Serial Interface. In this mode, there is a 
spike filter on the pin to suppress spikes shorter than 50 ns on the 
input signal, and the pin is driven by an open drain driver with 
slew-rate limitation."

Sorry, hatte ich glatt überlesen. Also sind Serienwiderstände generell 
Pflicht, nur bei TWI geht es - wegen der dann umgeschalteten Hardware - 
ohne.

Womit ein gewisses Restrisiko bleibt, falls die Software irrtümlich die 
TWI-Pins als normale Ausgänge schaltet oder sich die Chips durch äußere 
Einflüsse ins Nirwana verabschieden (z.B. Einstrahlprobleme).

Danke für die Formel. Wie leicht sich manche "Probleme" doch in Luft 
auflösen. ;-)

Grüsse
Olaf

von Falk B. (falk)


Lesenswert?

@ Olaf (Gast)

>Also sind Serienwiderstände generell Pflicht

Nein, keineswegs. Warum?

>Womit ein gewisses Restrisiko bleibt, falls die Software irrtümlich die
>TWI-Pins als normale Ausgänge schaltet oder sich die Chips durch äußere
>Einflüsse ins Nirwana verabschieden (z.B. Einstrahlprobleme).

Naja, und morgen fällt der Mond vom Himmel.

MfG
Falk

von Olaf (Gast)


Lesenswert?

Hi Falk,

>Nein, keineswegs. Warum?

Nun, wenn zwei AVR direkt über andere (non-TWI) Portpins kommunizieren, 
kann doch recht leicht der Fall eintreten, dass ein Pin VCC und der 
andere GND liefert. Oder blicke ich hier noch etwas nicht?

>Naja, und morgen fällt der Mond vom Himmel.

Nun, wie wahrscheinlich das Einstrahlproblem ist, kann ich nicht 
einschätzen; das ist wohl stark von der Einsatzumgebung abhängig. Aber 
ein Register ist schnell mal falsch gesetzt.

Grüsse
Olaf

von Falk B. (falk)


Lesenswert?

@ Olaf (Gast)

>Nun, wenn zwei AVR direkt über andere (non-TWI) Portpins kommunizieren,
>kann doch recht leicht der Fall eintreten, dass ein Pin VCC und der
>andere GND liefert. Oder blicke ich hier noch etwas nicht?

Ja, und zwar dass im Normalfall ein Programm ordentlich getestet wird. 
Damit sind solche Hardwarefehler durch Programmierfehler sehr selten, 
bzw. sie sollten beim sorgfältigen Testen auffallen. Schau dir die 
diversen Schaltungen an, sind dort überall solche Panikwidertände drin? 
Nein.

>einschätzen; das ist wohl stark von der Einsatzumgebung abhängig. Aber
>ein Register ist schnell mal falsch gesetzt.

Das ist ein Programmierfehler, der meistens beim Debuggen entdeckt wird.

MFG
Falk

von Olaf (Gast)


Lesenswert?

Hi Falk,

okay, jetzt reden wir nur noch über Wahrscheinlichkeiten, 
Risikobereitschaft und Entwicklungsprozesse, wobei wir unterschiedliche 
Meinungen vertreten. Fakt ist, ohne Serienwiderstand könnte etwas 
kaputt gehen, was im idealen Entwicklungsprozess aber nicht vorkommen 
sollte. Danke für Deine Antworten!

Grüsse
Olaf

von Matthias L. (Gast)


Lesenswert?

>morgen fällt der Mond vom Himmel.

Wohl eher nicht, der Mond entfernt sich permanent von der Erde, pro Jahr 
etwa um einen Zentimeter! Deshalb wird ja unser Tag (Sterntag) auch 
immer länger...

;-/

von Stefan W. (wswbln)


Lesenswert?

Olaf wrote:

> okay, jetzt reden wir nur noch über Wahrscheinlichkeiten,
> Risikobereitschaft und Entwicklungsprozesse, wobei wir unterschiedliche
> Meinungen vertreten. Fakt ist, ohne Serienwiderstand könnte etwas
> kaputt gehen,...


Jetzt bin ich aber auf Deine Stromversorgungsschaltung gespannt - was da 
alles passieren könnte....

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.