Forum: Mikrocontroller und Digitale Elektronik AVR Beeinflussung der Nachbarpins


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Christian (dragony)


Lesenswert?

AVR ATtiny84A

Folgendes Problem:

PA7 und PA6 sind über einen externen 1k Pull-Up auf HIGH gezogen. Leite 
ich jetzt den Strom des PA7 über den AVR ab (DDRA Bit 7 = 1, PORTA Bit 7 
= 0), stürzt die Spannung von PA7 wie erwartet ab, aber die Spannung von 
PA6 bricht auch um 1V ein und es dauert knapp 150ns, bis sie durch den 
PullUp wieder auf 5V stabil ist.

Mit einem Kondensator würde das Problem natürlich erledigt sein, jedoch 
sind das HF Datenleitungen, die sowas nicht mögen.

Hat jemand eine Ahnung, woran das liegt? Danke.

PS: Tippfehler bei DDRA und PORTA korrigiert.

: Bearbeitet durch User
von MWS (Gast)


Lesenswert?

Christian S. schrieb:
> PA7 und PA6 sind über einen externen 1k Pull-Up auf HIGH gezogen.
> Leite
> ich jetzt den Strom des PA7 über den AVR ab (DDRA Bit 7 = 0, PORTA
> Bit 7 > = 1)

Da leitet gar nichts ab, das konfiguriert Pin7 auf Eingang und schaltet 
den internen Pullup ein.

von Bernd K. (prof7bit)


Lesenswert?

Christian S. schrieb:
> aber die Spannung von
> PA6 bricht auch um 1V ein

1V? Glaub ich nicht. Zumindest nicht nach der Rekonstruktion Deiner 
(übrigens widersprüchlichen¹ und wahrscheinlich unvollständigen) 
Beschreibung vor meinem geistigen Auge (denn ein Bild oder Pläne hast Du 
ja leider nicht gepostet²)

Also:
    * Schaltplan
    * Relevante Orginalcodezeilen mit denen Du DDR und PORT schaltest.
    * Foto(s) des Aufbaus von allen relevanten Seiten
    * Oszillogramm des Phänomens
    * Beschreibung (oder Foto) wo und wie Du das gemessen hast.



__
¹ Siehe hierzu auch die Erläuterung meines Vorposters

² Bisschen Mithilfe Deinerseits ist schon angebracht. Vielleicht findest 
Du den Fehler ja bei der systematischen Zusammenstellung und Sichtung 
der oben geforderten Unterlagen schon selbst, aber auch dann wäre es 
immer noch nett die Auflösung zu posten.

: Bearbeitet durch User
von Thomas (kosmos)


Lesenswert?

verwende doch für jeden Pin einen eigenen Pullup-Widerstand anstatt 
eines gemeinsamen.

von Christian (dragony)


Angehängte Dateien:

Lesenswert?

Es ist einfach ein 1 Meter Kabel, welches frei in der Luft hängt. Die 
beiden Adern laufen da drin natürlich sehr enganliegend, von daher tippe 
ich auf Übersprechen? Ich weiss es aber nicht. Da habe ich zu wenig 
Ahnung.

Beide Pins haben einen getrennten PullUp.

Anbei auch das Oszillogramm. Gemessen habe ich direkt 2mm neben den AVR 
Pins. OSC Masse ist direkt am Massepin des AVR angeschlossen.

Blau wird vom AVR auf Masse gezogen. 2ns später sinkt die Nachbarader ab 
und nach 40ns ist sie wieder normal.

PS: Der SINN eines frei hängenden Kabels ist natürlich nicht gegeben und 
dient in diesem Fall auch nur der Fehlersuche.

: Bearbeitet durch User
von Peter D. (peda)


Lesenswert?

Christian S. schrieb:
> Es ist einfach ein 1 Meter Kabel, welches frei in der Luft hängt. Die
> beiden Adern laufen da drin natürlich sehr enganliegend

Gratuliere, Du hast einen Kondensator gebaut.

von Christian (dragony)


Lesenswert?

Peter D. schrieb:
> Christian S. schrieb:
>> Es ist einfach ein 1 Meter Kabel, welches frei in der Luft hängt. Die
>> beiden Adern laufen da drin natürlich sehr enganliegend
>
> Gratuliere, Du hast einen Kondensator gebaut.

Danke. Und jetzt sag mir bitte auch, wie ich bei angeschlossenen Kabel 
(am Ende sind zwei hochohmige Eingänge) dieses Problem beseitigen kann, 
ohne den 1k PullUp zu verändern.

Und bist du sicher, dass es nicht eher ein induktiver Effekt ist?
Wenn das Problem nicht beim ATtiny zu suchen ist, dann sollte dieses 
Thema in den Bereich Analogtechnik verschoben werden.

: Bearbeitet durch User
von Peter D. (peda)


Lesenswert?

Nimm ein Kabel mit einzeln geschirmten Adern.
Oder nimm ein Kabel mit paarig verdrilleten Adern und übertrage 
differentiell (RS-485-Transceiver-ICs).

von Oldie (Gast)


Lesenswert?

Ach, ist das schön!

Heutzutage hat ein unbedarfter Bastler tolle Messinstrumente,
verdrahtet irgendwas gegen alle Regeln der Technik und kann
die restliche Welt per Internet mit WARUM KOMMT DABEI SOWAS RAUS
nerven...

Ob damit der Lernerfolg steigt, wage ich zu bezweifeln.

Da das Hirn noch genau so, wie vor 1000 Jahren funktioniert,
treten Lernerfolge auch heute nur ein, wenn man was Vorgegebenes
VERSTANDEN hat, oder was Ausgedachtes AUSPROBIERT hat.

=> TROLL

von Bastler (Gast)


Lesenswert?

"Unbedarft", also ohne Bedarf, z.B. für 500MS/s, wenn man rätselt, warum 
eine 1m lange, nicht abgeschlossene Leitung einen 40MHz Burst einfängt, 
wenn daneben eine ebensolche 2. Leitung mit einem Puls beaufschlagt 
wird, dessen Anstieggeschwindigkeit zu den 40MHz paßt. Ich hab's da 
leichter. Mein 20MHz Hameg, in den frühen 80ern gekauft, würde mir das 
kaum anzeigen. Nur wüsste ich, was ich nur fast sehe.
Lustig dann auch: dieser HF-Trafo soll nur zur Fehlersuche dienen.
Er ist der Fehler!

von Oldie (Gast)


Lesenswert?

Genau - jetzt muss die Analogwelt endlich mal ran, um das
WARUM-FÜHRT-SCHLECHTER-SCHALTUNGSAUFBAU-BESONDERS-IM-100-NS-
BEREICH-ZU-SCH...-ERGEBNISSEN-PROBLEM zu lösen.

Die µC-und-Elektronik-Pappnasen wissen überhaupt nix und
hangeln sich nur an Design-Regeln durch ihr kümmerliches
Leben!

von Christian (dragony)


Lesenswert?

Wie gesagt, ist der Impuls auch vorhanden, wenn ein ATtiny Eingang an 
der anderen Seite existiert und ein Abschlusswiderstand ist wegen der 
Pullups nicht möglich.

Auf die kindische Klugscheisserei gehe ich mal nicht ein.

: Bearbeitet durch User
von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Christian S. schrieb:
> und ein Abschlusswiderstand ist wegen der
> Pullups nicht möglich.

Da stimmt was an deinem Konzept aber wirklich nicht. Entweder machst du 
die Eingangsleitung so niederohmig wie möglich und fängst dir damit 
keine Störungen mehr ein oder du bereitest das Signal für den Eingang 
schon auf, bevor du es auf das Kabel schickst, oder du nimmst zwei 
getrennte oder wenigstens einzeln geschirmte Kabel.
Niederohmig kann übrigens auch niederohmige Pullups bedeuten.

von Bestromer (Gast)


Lesenswert?

@Oldie
Schön das Du dieses Forum gefunden hast, hier gibt es viele Menschen die 
Deine Erfahrung sicher schätzen würden wenn Du sie teilst und die 
Einsamkeit in Deinem Leben hätte mit einem Schlag ein Ende :)

von Malte S. (maltest)


Lesenswert?

> Wie gesagt, ist der Impuls auch vorhanden, wenn ein ATtiny Eingang an
> der anderen Seite existiert

Du kommst nicht trocken durch den überfluteten Uferweg, egal ob am 
anderen Ende eine Sackgasse oder eine Autobahnauffahrt ist.

> und ein Abschlusswiderstand ist wegen der
> Pullups nicht möglich.

Warum willst du mit dem Kopf durch die Wand einen miesen Aufbau durch 
weitere Flickereien gerade biegen? Warum verwirfst du alle Vorschläge zu 
geschirmten Leitungen oder differenzieller Übertragung?

: Bearbeitet durch User
von Bernd K. (prof7bit)


Lesenswert?

Du musst das Thema der Frage ändern. Statt

    "AVR Beeinflussung der Nachbarpins"

beschäftigt Dich eher:

    "Kabel Beeinflussung der Nachbaradern"

Denk doch mal nach: Du hast 2 parallele Adern im langen Kabel, es ist 
kein Geheimnis daß das eine nicht unerhebliche Kapazität zwischen zwei 
Leitern in einem Kabel gibt, was bringt Dich nun also dazu anzunehmen 
die winzige Kapazität zwischen den Pins des AVR würde die doch recht 
beachtliche Kapazität zwischen den Adern im Kabel bei weitem überwiegen 
so daß Du noch nicht mal ansatzweise auf die Idee kommst das Kabel 
könnte einen Einfluss haben?

Du musst mit der Zeit eine gewisse Intuition entwickeln was die 
ungefähren Größenordnungen von Kapazitäten, Induktivitäten, 
Widerständen, Strömen angeht mit denen Du es zu tun hast oder die durch 
einen bestimmten Aufbau zustande kommen würden um spontan wenigstens 
grob abschätzen zu können (ohne zu messen) welche davon vermutlich eine 
Rolle spielen könnten und welche man vernachlässigen kann. Das kommt mit 
der Zeit. Bis dahin versuche mal zu messen (oder zu errechnen) mit was 
für Kapazitäten Du es überhaupt zu tun hast (sind es nur wenige pF oder 
sind es hunderte pF), vergleich das mal mit anderen Kapazitäten die Du 
bereits kennst um das im Kopf richtig einzuordnen, rechne auch mal ein 
paar Zeitkonstanten von daraus resultierenden RC-Gliedern aus (z.B. mit 
deinem 1k Pullup) um auch hier mal ne grobe Idee zu bekommen (und 
irgendwann später auch einfach spontan abschätzen zu können) in welchem 
Hausnummernbereich Du dich da überhaut bewegst.

: Bearbeitet durch User
von Thomas E. (picalic)


Lesenswert?

Was stört Dich überhaupt an diesem (nebenbei: angesichts des 
geschilderten Aufbaus erstaunlich kleinen) Spannungseinbruch? Bekommst 
Du echte Übertragungsfehler in Deiner Applikation (was das auch immer 
werden soll...) oder stört Dich nur optisch, was Du auf dem Schirm 
siehst?
Wenn's um digitale Pegel geht, ist ein Einbruch um 1V hier schließlich 
immer noch weit weg vom minimalen High-Pegel, also alles im grünen 
Bereich! Also, wo ist das Problem?

von Dietrich L. (dietrichl)


Lesenswert?

Christian S. schrieb:
> AVR ATtiny84A

Unabhängig von der schon genannten und wahrscheinlichen Ursache 
"Übersprechen im Kabel":
- Hast Du auch Stützkondensator(en) nahe am µC? Wenn das nicht der Fall 
ist, kann zumindest ein Teil des Spannungseinbruchs daher kommen.
- War die Messung "ordentlich" (ordentliches GND-System, Tastkopf mit 
kurzen Leitung am naheliegenden GND angeschlossen)? Denn das kann 
"Geister-"Spikes auf dem Bildschirm erzeugen.

Gruß Dietrich

von Achim S. (Gast)


Lesenswert?

Wenn PA6 nur über den 1k Pullup auf High-Pegel gehalten wird, dann muss 
die kapazitive Kopplung im Kabel (Flachbandkabel?) zu einem 
Signaleinbruch von einigen 100ns Dauer führen. Da wundert mich schon 
eher, wieso der Einbruch nur 1V tief sein soll. Hast du die Messung 
evtl. mit einen 1:1 Tastkopf aufgenommen? Dann sei dir bewusst, dass 
ohne Tastkopf (geringere Kapazität gegen GND) bzw. mit einem 10:1 
Tastkopf der Einbruch noch tiefer wäre.

Was für mich nicht so ganz zusammenpasst sind die Aussagen, dass 
einerseits ein Kabel mit min. einigen 10pF Kapazität über einen lahmen 
1kOhm Widerstand getrieben wird, andererseits aber von "HF 
Datenleitungen" die Rede ist. Das passt nicht zusammen, die steigende 
Flanke des Signals wird lahm sein.

Wenn die lahmen Flanken dich nicht stören, kannst du jeder Leitung noch 
einen Längswiderstand von z.B 200Ohm verpassen. Bei der steigenden 
Flanke macht das keinen Unterschied, die fallende Flanke wird um eine 
Größenordnung gestreckt und damit der Einbruch durch das kapazitive 
Übersprechen um eine Größenordnung geringer.

Wenn die Leitungen wirklich schnelle Signale sehen sollen, dann muss der 
High-Pegel nicht durch den Pullup sondern durch den Highside-Treiber des 
µC getrieben werden. Dann sind beide Flanken schnell, dann nimmt aber 
der aktive Treiber den Strom der Koppelkapazität auf und der Einbruch 
wird wesentlich kleiner. Wirklich schnelle Signale über 1m Leitung ohne 
rechtes Konzept für Wellenwiderstand und Terminierung sind aber auch 
nicht ohne.

Ansonsten wäre die einfachste (und trotzdem wirkungsvolle) 
Schirmmaßnahme, zwischen die beiden Signaladern eine Ader mit GND zu 
legen.

von Christian (dragony)


Lesenswert?

Achim S. schrieb:
> Wenn PA6 nur über den 1k Pullup auf High-Pegel gehalten wird, dann muss
> die kapazitive Kopplung im Kabel (Flachbandkabel?) zu einem
> Signaleinbruch von einigen 100ns Dauer führen. Da wundert mich schon
> eher, wieso der Einbruch nur 1V tief sein soll. Hast du die Messung
> evtl. mit einen 1:1 Tastkopf aufgenommen? Dann sei dir bewusst, dass
> ohne Tastkopf (geringere Kapazität gegen GND) bzw. mit einem 10:1
> Tastkopf der Einbruch noch tiefer wäre.

Ich habe nochmal nachgeschaut und gesehen, dass ich im Rahmen der 
Fehlersuche schon den Pullup auf 330 Ohm abgesenkt habe. Leider habe ich 
das wohl beim verfassen des Posts vergessen gehabt. Ich verwende einen 
10:1 Tastkopf.

> Was für mich nicht so ganz zusammenpasst sind die Aussagen, dass
> einerseits ein Kabel mit min. einigen 10pF Kapazität über einen lahmen
> 1kOhm Widerstand getrieben wird, andererseits aber von "HF
> Datenleitungen" die Rede ist. Das passt nicht zusammen, die steigende
> Flanke des Signals wird lahm sein.

Naja, gibts denn eine feste Definiton, ab wann etwas HF ist? Ich 
versuche einen i2c-Bus über ein maximal 3 Meter langes Kabel zu leiten. 
Ich weiss, dass der Bus dafür nicht gemacht ist, aber der Empfängerchip 
hat leider nur einen i2c Eingang. Ich möchte gerne 1us pro Bit 
erreichen, also 500ns Flankenabstand.

Ich muss sagen, dass es derzeit ja auch funktioniert, aber es ist halt 
sehr grenzwertig und ich versuche es halt so sauber wie möglich 
hinzubekommen, bevor ich anfange, Kabel mit einzeln geschirmten Adern zu 
verwenden.

Es ist für mich als Hobbybastler auch ein guter Lerneffekt und zugegeben 
habe ich mich bisher nie mit Leitungsparametern beschäftigt.

> Wenn die lahmen Flanken dich nicht stören, kannst du jeder Leitung noch
> einen Längswiderstand von z.B 200Ohm verpassen. Bei der steigenden
> Flanke macht das keinen Unterschied, die fallende Flanke wird um eine
> Größenordnung gestreckt und damit der Einbruch durch das kapazitive
> Übersprechen um eine Größenordnung geringer.

Hmm probier ich mal aus.

> Ansonsten wäre die einfachste (und trotzdem wirkungsvolle)
> Schirmmaßnahme, zwischen die beiden Signaladern eine Ader mit GND zu
> legen.

Muss es zwingend Masse sein, oder würde auch 5V gehen? Das habe ich 
nämlich schon probiert, jedoch ohne wirkliche Unterschiede 
festzustellen.

PS: Ein Stützkondensator mit 220nF ist vorhanden und direkt am AVR VCC 
Pin und dem AVR GND Pin angeschlossen.

: Bearbeitet durch User
von Christian (dragony)


Lesenswert?

Thomas E. schrieb:
> Was stört Dich überhaupt an diesem (nebenbei: angesichts des
> geschilderten Aufbaus erstaunlich kleinen) Spannungseinbruch? Bekommst
> Du echte Übertragungsfehler in Deiner Applikation (was das auch immer
> werden soll...) oder stört Dich nur optisch, was Du auf dem Schirm
> siehst?
> Wenn's um digitale Pegel geht, ist ein Einbruch um 1V hier schließlich
> immer noch weit weg vom minimalen High-Pegel, also alles im grünen
> Bereich! Also, wo ist das Problem?

Das Problem ist, dass ich nicht verstanden habe, woher der Einbruch 
kommt und das hat mich genervt. So langsam lichtet sich jedoch der 
Schleier der Unwissenheit ;)

: Bearbeitet durch User
von Kurt B. (kurt-b)


Lesenswert?

Christian S. schrieb:
> Thomas E. schrieb:
>> Was stört Dich überhaupt an diesem (nebenbei: angesichts des
>> geschilderten Aufbaus erstaunlich kleinen) Spannungseinbruch? Bekommst
>
> Das Problem ist, dass ich nicht verstanden habe, woher der Einbruch
> kommt und das hat mich genervt. So langsam lichtet sich jedoch der
> Schleier der Unwissenheit ;)

Du kannst leicht feststellen obs die Kabelkapazität ist oder eine andere 
Ursachen, klemm die Leiung einfach mal weg und erzeuge den Puls.
Dann ists gleich sichtbar obs die Koppelkapazität der Leitung ist oder 
was anderes.

 Kurt

von spess53 (Gast)


Lesenswert?

Hi

>Ich möchte gerne 1us pro Bit erreichen, also 500ns Flankenabstand.

Bist du sicher, das der Empfängerchip dafür ausgelegt ist?

MfG spess

von Christian (dragony)


Lesenswert?

spess53 schrieb:
> Hi
>
>>Ich möchte gerne 1us pro Bit erreichen, also 500ns Flankenabstand.
>
> Bist du sicher, das der Empfängerchip dafür ausgelegt ist?
>
> MfG spess

Ja. Funktioniert auch. Es ist der MCP23008.

Ich habe mal versucht ein bissl zu rechnen, obwohl ich Bastler bin ;)

Ob ich wirklich richtig lieg, sagt mir wenn ein Licht angeht?

Also wenn ich ein C mit 1k Ohm lade, ist die Ladekurve identisch mit dem 
Ladevorgang eines C mit der 1000fachen Kapazität bei 1 Ohm.

Da ein Ethernetkabel im Schnitt laut Google 100 pF/m hat, der PullUp 
aber sagen wir 1k hat, entspricht das einer Ladekurve eines Kabels von 
100nF/m bei einer 1 Ohm Verbindung. Ist es also korrekt, dass ich hier 
quasi einen 100nF Kondensator sehe, der nur durch einzeln geschirmte 
Kabel wegzukriegen ist?

von Georg G. (df2au)


Lesenswert?

Über welche Sorte Kabel reden wir hier eigentlich?
Muss das Kabel flexibel sein oder darf es starr sein?

Nur mal überschlägig: Der Kapazitätsbelag sei 50pF/m (Sternvierer, UTP). 
Das sind dann 150pF für die 3m, die umgeladen werden müssen. 1kOhm 
Pullup ist schon sportlich, das kann nicht jeder I2C Chip. Aber dann 
sind wir schon bei 150ns Zeitkonstante und kollidieren fast mit den 
verlangten 500ns zwischen den Bits.

Also: Passendes Kabel aussuchen und die Geschwindigkeit anpassen.

von Joachim B. (jar)


Lesenswert?

Christian S. schrieb:
> Danke. Und jetzt sag mir bitte auch, wie ich bei angeschlossenen Kabel
> (am Ende sind zwei hochohmige Eingänge) dieses Problem beseitigen kann,
> ohne den 1k PullUp zu verändern.

wer baut den pullups bei I2C an den Anfang?

die I2C pullup gehören IMMER ans Kabelende.
http://www.roboternetz.de/bilder/i2cbeitrag1.gif
ich hoffe das hilft

Christian S. schrieb:
> Das Problem ist, dass ich nicht verstanden habe, woher der Einbruch
> kommt und das hat mich genervt.

da musst du noch lernen:
http://www.vias.org/mikroelektronik/line_termination.html
http://www.elektronik-kompendium.de/sites/kom/1303261.htm

: Bearbeitet durch User
von holger (Gast)


Lesenswert?

>die I2C pullup gehören IMMER ans Kabelende.

Ach, wo ist denn bei der bidirektionalen Datenleitung
das Kabelende?

von Achim S. (Gast)


Lesenswert?

Joachim B. schrieb:
> wer baut den pullups bei I2C an den Anfang?
>
> die I2C pullup gehören IMMER ans Kabelende.
> http://www.roboternetz.de/bilder/i2cbeitrag1.gif
> ich hoffe das hilft

Wie unterscheidet man bei einer bidirektionalen Leitung zwischen 
Kabelanfang und Kabelende?

Christian S. schrieb:
> Da ein Ethernetkabel im Schnitt laut Google 100 pF/m hat, der PullUp
> aber sagen wir 1k hat, entspricht das einer Ladekurve eines Kabels von
> 100nF/m bei einer 1 Ohm Verbindung. Ist es also korrekt, dass ich hier
> quasi einen 100nF Kondensator sehe, der nur durch einzeln geschirmte
> Kabel wegzukriegen ist?

Hä? Ich kapiere die Rumrechnerei nicht. Das Kabel hat die Kapazität, die 
es hat (z.B. 100pF). Wenn du es mit 1kOhm umlädst, bekommst du eine 
Ladekurve mit 100ns Zeitkonstante. Wenn du es mit einem anderen 
Widerstand umlädst, dann ändert sich deswegen nicht die Kapazität des 
Kabels sondern die Zeitkonstante, mit der es geladen wird.

Christian S. schrieb:
> Naja, gibts denn eine feste Definiton, ab wann etwas HF ist? Ich
> versuche einen i2c-Bus über ein maximal 3 Meter langes Kabel zu leiten.
> Ich weiss, dass der Bus dafür nicht gemacht ist, aber der Empfängerchip
> hat leider nur einen i2c Eingang. Ich möchte gerne 1us pro Bit
> erreichen, also 500ns Flankenabstand.

Wahrscheinlich gibt es sogar mehrere Definitionen, ab wann etwas als HF 
gilt. Aber I2C zählt bei meinen Definitionen nicht zu HF. Wenn du I2C 
über 3m schicken willst, dann fang mit etwas bescheideneren Taktraten an 
um es sicher zum Laufen zu kriegen.

Christian S. schrieb:
> Muss es zwingend Masse sein, oder würde auch 5V gehen?

Jedes niederohmige stabile Potential ist gleich gut als Schirm. Wenn es 
keinen Unterschied, ob du eine "Schirmader" zwischen deinen beiden 
Signalen hast oder nicht, dann ist das in der Tat seltsam. Da würde ich 
anfangen zu hinterfragen, wie der konkrete Messaufbau ausschaut. Und 
eine
Klarstellung wäre nett, um welches Kabel es sich konkret handelt. Falls 
Ethernet: Welche Anschlüsse hast du verwendet, was ist mit den Schirmen 
der twisted pairs passiert?

von Joachim B. (jar)


Lesenswert?

holger schrieb:
> Ach, wo ist denn bei der bidirektionalen Datenleitung
> das Kabelende?

vielleicht überlegst du mal wo der Master sitzt der z.B. den Clock 
VORGIBT, dann kommst du darauf.

von spess53 (Gast)


Lesenswert?

Hi

>vielleicht überlegst du mal wo der Master sitzt der z.B. den Clock
>VORGIBT, dann kommst du darauf.

Das ist Sch..egal. Zeig mir mal in der

UM10204 (I2C-bus specification and user manual)

wo das so festgelegt ist.

MfG Spess

von Georg G. (df2au)


Lesenswert?

Joachim B. schrieb:
> vielleicht überlegst du mal

Schau dir doch mal Timing Diagramme des I2C Bus an. Dann wirst du sehen, 
dass sowohl Master als auch Slave an SDA und SCL zupfen. Insofern gibt 
es wirklich keinen Anfang und kein Ende des Busses. Deshalb sind Stern 
Topologien durchaus üblich. Wenn du es besonders hübsch machen willst, 
kannst du jedem Teilnehmer einen (hochohmigeren) Pullup spendieren. Das 
ist aber eine Maßnahme für die Galerie und hilft elektrisch weniger.

von Bastler (Gast)


Lesenswert?

Kann es sein, daß es darum geht den MCP23008 in Highspeed I2C 
anzubinden? Wegen der 1μs pro Bit. Ich denke das geht nicht, denn die 
TWI Hardware des AVR kann max den 400kBit Mode und BitBanging mit 1MBit 
ist falls überhaupt möglich, nicht trivial. Eventuell kann man bei den 
diversen USB-Libs für AVR was abschauen, aber da werden viele 
Eigenheiten von USB bis an und über die Grenze des erlaubten ausgereizt.

von Bastler (Gast)


Lesenswert?

Nicht Highspeed, sondern FastMode+, d.h. Protokoll wie 100k-/400k-Mode, 
aber bis 1MBit.

von spess53 (Gast)


Lesenswert?

Hi

>Ich denke das geht nicht, denn die
>TWI Hardware des AVR kann max den 400kBit Mode

Wo steht das? Sieh dir die Formel im Datenblatt an. In alten 
ATMEL-Dokumenten gab es mal die Einschränkung, das TWBR nicht nicht 
kleiner als 10 sein soll/darf. Das stammt aber aus dem letzten 
Jahrtausend und ist obsolet.

MfG Spess

von Christian (dragony)


Lesenswert?

Bastler schrieb:
> Kann es sein, daß es darum geht den MCP23008 in Highspeed I2C
> anzubinden? Wegen der 1μs pro Bit. Ich denke das geht nicht, denn die
> TWI Hardware des AVR kann max den 400kBit Mode und BitBanging mit 1MBit
> ist falls überhaupt möglich, nicht trivial. Eventuell kann man bei den
> diversen USB-Libs für AVR was abschauen, aber da werden viele
> Eigenheiten von USB bis an und über die Grenze des erlaubten ausgereizt.

Tja, so hat jeder seine Stärken und Schwächen. 1 MBit via Bitbanging war 
für mich kein Problem. Ich musste sogar noch ein bissl noppen, um auf 
die 500ns zu kommen. Der Systemtakt liegt bei 10 MHz. Externe Libs sind 
doch langweilig. Da schreib ich das in ASM schneller als ich durch die 
C-Libs steige. Verstehen muss man das ganze nämlich so oder so, wenn mal 
was nicht so läuft, wie es soll.

Nur bin ich halt seit 20 Jahren Programmierer, aber Elektronik mache ich 
hobbymäßig erst seit einem halben Jahr.

von Christian (dragony)


Lesenswert?

Achim S. schrieb:
> Jedes niederohmige stabile Potential ist gleich gut als Schirm. Wenn es
> keinen Unterschied, ob du eine "Schirmader" zwischen deinen beiden
> Signalen hast oder nicht, dann ist das in der Tat seltsam. Da würde ich
> anfangen zu hinterfragen, wie der konkrete Messaufbau ausschaut. Und
> eine
> Klarstellung wäre nett, um welches Kabel es sich konkret handelt. Falls
> Ethernet: Welche Anschlüsse hast du verwendet, was ist mit den Schirmen
> der twisted pairs passiert?

Es liegt nicht am Messaufbau. Wenn ich das Ethernetkabel abziehe, ist 
der Fehler nämlich weg. Also muss es am Kabel liegen.

Es ist dieses Kabel: 
https://www.brack.ch/wirewin-cat-6-utp-2m-schwarz-114269 (davon teste 
ich mit der 1, 2 und 10 Meter Version rum und schaue, was passiert)

Ich habe die Pins so belegt:
1 und 2: CLOCK
3 und 4: 5V
5 und 6: DATA
7 und 8: GND

Einen Schirm hat das Dingen also nichtmal.

: Bearbeitet durch User
von Kurt B. (kurt-b)


Lesenswert?

Christian S. schrieb:
> Ich habe die Pins so belegt:
> 1 und 2: CLOCK
> 3 und 4: 5V
> 5 und 6: DATA
> 7 und 8: GND
>
> Einen Schirm hat das Dingen also nichtmal.

Mit Schirm hätte es noch mehr Kapazität gegen irgendwas.
Sind die Drähte einzeln geschirmt dann fällt zwar das Übersprechen auf 
einen anderen Draht weg, die Kapazität ist aber trotzdem noch da und 
wirksam.
Und zwar nicht gegenüber dem Nachbarpin, sondern gegenüber dem Pin der 
da treibt.

Ob das Parr-schalten von Leitungen gut ist!?
Ich meine eher nicht.
Denn du hast mehr Kapazität und ausserdem erzwingst du geradezu ein 
Übersprechen zwischen den einzelnen Aderpärchen.
Und das ist nicht gut!!
Besser wäre es wenn jedes Pärchen ein Signal und einen Bezug dazu führen 
würde.
Ob der Bezug nun Masse heisst oder 5V das wiederum dürfte ziemlich egal 
sein.

Versuche mal festzustellen, oder schau nach, welche Pinnummern zu einem 
Aderpärchen gehören, ev. wirst du dann deine Belegung ändern.

 Kurt

von c-hater (Gast)


Lesenswert?

Christian S. schrieb:

> https://www.brack.ch/wirewin-cat-6-utp-2m-schwarz-114269 (davon teste
> ich mit der 1, 2 und 10 Meter Version rum und schaue, was passiert)
>
> Ich habe die Pins so belegt:
> 1 und 2: CLOCK
> 3 und 4: 5V
> 5 und 6: DATA
> 7 und 8: GND
>
> Einen Schirm hat das Dingen also nichtmal.

Allein die Bezeichnung im Link lies das bereits erahnen. Das u in 
"cat-6-utp" steht nämlich für "unshielded", also ungeschirmt.

Das mit diesem Kabel bestmögliche Ergebnis für dein Problem sollte sich 
ergeben, wenn du es folgendermaßen belegst (die Variante, die der 
Ausgangssituation am nächsten kommt):

1: Clock

von c-hater (Gast)


Lesenswert?

c-hater schrieb:

...verdammt, verklickt.

So sollte es eigentlich weiter gehen:

1: Clock
3 und 6: 5V
5: Data

Alles andere: GND.

von Kurt B. (kurt-b)


Lesenswert?

c-hater schrieb:

>
> Das mit diesem Kabel bestmögliche Ergebnis für dein Problem sollte sich
> ergeben, wenn du es folgendermaßen belegst (die Variante, die der
> Ausgangssituation am nächsten kommt):
>
> 1: Clock


Sein Problem dürfte nicht die Kapazität der Leitungen zueinander 
sein/werden, sondern Übersprechen, denn er verwendet keine Pärchen die 
einen definierten Scheinwiderstand haben, sondern hat einfach nur 
"Drähte im Kabel.
Und das geht für Gleichspannung, nicht für eine Leitung in der Signale 
schnell sein sollen.
Er produziert "Stehwellen" an mass.

 Kurt

von Achim S. (Gast)


Lesenswert?

Christian S. schrieb:
> Es liegt nicht am Messaufbau. Wenn ich das Ethernetkabel abziehe, ist
> der Fehler nämlich weg. Also muss es am Kabel liegen.

Das heißt, dass sich durch das Kabel ein Effekt ergibt. Wenn man aber 
verstehen will, was genau das Oszibild sagt, ist der Messaufbau trotzdem 
relevant.

Christian S. schrieb:
> Einen Schirm hat das Dingen also nichtmal.

ok, mit UTP-Kabel geht schirmen tatsächlich nicht. Und mit single ended 
Signalen nutzen auch die verdrillten Adernpaar nichts, da würde meines 
Erachtens Flachbandkabel noch mehr Möglichkeiten bieten.

Wenn es dir wichtig genug ist, kannst du ja auf STP umsteigen. Damit 
solltest du die kapazitive Kopplung zwischen den Signalen deutlich 
reduzieren können.

von Kurt B. (kurt-b)


Lesenswert?

Achim S. schrieb:

> ok, mit UTP-Kabel geht schirmen tatsächlich nicht. Und mit single ended
> Signalen nutzen auch die verdrillten Adernpaar nichts, da würde meines
> Erachtens Flachbandkabel noch mehr Möglichkeiten bieten.
>
> Wenn es dir wichtig genug ist, kannst du ja auf STP umsteigen. Damit
> solltest du die kapazitive Kopplung zwischen den Signalen deutlich
> reduzieren können.

Sein "kapazitives" Problem ist wohl eher ein "Stehwellenproblem", also 
ein nicht abgeschlossene Signaltransport.

 Kurt

von Joachim B. (jar)


Lesenswert?

Kurt B. schrieb:
> Sein "kapazitives" Problem ist wohl eher ein "Stehwellenproblem", also
> ein nicht abgeschlossene Signaltransport.

sehe ich auch so, trotz vieler Kritiker.

Ich würde die Pullup trotzdem am letzten Slave hängen oder an jeden 
Slave aber den Strom (R || min nicht unterschreiten) nicht übertreiben, 
der richtet sich nach dem schwächsten I2C Teilnehmer

Georg G. schrieb:
> Dann wirst du sehen,
> dass sowohl Master als auch Slave an SDA und SCL zupfen.
Achim S. schrieb:
> Wie unterscheidet man bei einer bidirektionalen Leitung zwischen
> Kabelanfang und Kabelende?

von Christian (dragony)


Lesenswert?

Treten Stehwellen nicht nur bei Reflexionen auf? Es ist doch der 
Nachbarpin betroffen und ausserdem tritt das Phänomen schon nach 2ns 
auf. In der Zeit kann gar nichts zurück gekommen sein.... ?

von Joachim B. (jar)


Lesenswert?

Christian S. schrieb:
> Treten Stehwellen nicht nur bei Reflexionen auf?

ja, und am Ende vom Kabel ohne nennswerte Last, R bzw. Abschluß, was 
denkst du?

Christian S. schrieb:
> ausserdem tritt das Phänomen schon nach 2ns
> auf.

3,33ns für 1m bei c scheint zu passen
https://de.wikipedia.org/wiki/Lichtgeschwindigkeit

von Kurt B. (kurt-b)


Lesenswert?

Christian S. schrieb:
> Treten Stehwellen nicht nur bei Reflexionen auf?

Selbstverständlich! (es sind dann keine Stehwellen!), denn das 
Sendesignal ist ja quasi erstmal direkt am zweiten Pin, bzw. erst wenige 
cm in der Leitung, da wirkt die Kapazität des (kurzen) Kabelstückes.

Kommt es zu Reflektion am Kabelende dann kommt das auch noch dazu und 
wirkt sich aus.
Je nach Leitungslänge ergibt das mehrere Spannungszustände am 
betroffenem Pin.

Soll es eine schnelle Übertragung werden dann muss er die Reflektion 
abstellen, die Nahbeeinflussung (wenige cm des Kabels) kann er nicht, 
das ist mit und ohne Kabelabschluss vorhanden.

 Kurt

von Achim S. (Gast)


Lesenswert?

Kurt B. schrieb:
> Sein "kapazitives" Problem ist wohl eher ein "Stehwellenproblem", also
> ein nicht abgeschlossene Signaltransport.

er hat das "Problem" auf einer Leitung, die mit konstanten Pegel 
getrieben wird. Wie soll sich das ein "Stehwellenproblem" aufbauen? Und 
wie soll auf einer Leitungslänge von 1m nach 100ns noch etwas von einer 
Reflektion übrig sein? 20 mal hin und her gelaufen und dann plötzlich 
verschwunden?

Mag sein, dass auf der schnell fallenden Flanke ein Reflektionseffekt 
erkennbar ist (um es wirklich bewerten zu können müsste man aber den 
Messaufbau genau kennen, schneller abtasten und z.B. die 
sin(x)/x-Interpolation ausschalten). Auch dagegen würde ein 
Serienwiderstand helfen, den ich oben empfohlen habe.

Aber das, was Christian eigentlich stört, ist simples kapazitives 
Übersprechen, das sich bei seinem Aufbau zwangsläufig ergeben muss.

von Kurt B. (kurt-b)


Lesenswert?

Achim S. schrieb:

>
> Aber das, was Christian eigentlich stört, ist simples kapazitives
> Übersprechen, das sich bei seinem Aufbau zwangsläufig ergeben muss.

Eben, und darum muss er verstehen wie ein Kondensator funktioniert und 
wie eine Reflektion.
Erst dann kann er das was er am Schirm sieht richtig einordnen und dann 
auch schnell übertragen (auch über längere Strecken, denn da ist die 
Signalamplitude am Kabelende das Kriterium).


 Kurt

von Christian (dragony)


Lesenswert?

Joachim B. schrieb:
> Christian S. schrieb:
>> Treten Stehwellen nicht nur bei Reflexionen auf?
>
> ja, und am Ende vom Kabel ohne nennswerte Last, R bzw. Abschluß, was
> denkst du?
>
> Christian S. schrieb:
>> ausserdem tritt das Phänomen schon nach 2ns
>> auf.
>
> 3,33ns für 1m bei c scheint zu passen
> https://de.wikipedia.org/wiki/Lichtgeschwindigkeit

Leider stimmt das so nicht. Im Kupfer ist die Signalgeschwindigkeit 
nämlich nicht c, sondern ca. 5ns/s. Nur im Vakuum gilt v = c. Ausserdem 
brauchst du auch noch den Rückweg. Macht 10 ns.

Wenn ich da also nichts übersehen habe, KANN es keine Reflexion sein, da 
die erst nach 10ns zu sehen wäre.

Also MUSS es was anderes sein. Was ist eigentlich mit der Impedanz? Die 
wurde ja getrost ignoriert. Wenn ich ein Pin auf Masse ziehe, zerstöre 
ich damit ja brutal das Magnetfeld. Habe ich damit nicht eine Art 
Minitrafo?

Es wurde ja auch öfter nach dem Messaufbau gefragt. Ich weiss ehrlich 
gesagt nicht, was damit genau gemeint ist. Ich habe ein Osc (Rigol 
MSO1074), die beiden mitgelieferten 10:1 Standardtaster genommen, 10 cm 
Schaltdraht dran, damit ich ein Drahtende für das Breadboard habe und 
das dann direkt neben die ATtiny Pins reingesteckt. GND der Messfühler 
ist nach dem gleichen Prinzip direkt neben dem GND Pin des ATtiny 
eingesteckt.

: Bearbeitet durch User
von Achim S. (Gast)


Lesenswert?

Christian S. schrieb:
> Also MUSS es was anderes sein. Was ist eigentlich mit der Impedanz? Die
> wurde ja getrost ignoriert. Wenn ich ein Pin auf Masse ziehe, zerstöre
> ich damit ja brutal das Magnetfeld. Habe ich damit nicht eine Art
> Minitrafo?

Ach komm, jetzt fängts an wehzutun.

Du siehst eine simple kapazitive Kopplung und es wurde dir auch schon 
beschrieben, was du dagegen tun kannst, wenn es dich stört. Alternativ 
kannst du natürlich auch noch darüber spekulieren, ob Außerirdische an 
dem Signal schuld sind.

von Christian (dragony)


Lesenswert?

Es wäre nett, wenn du mir noch sagen würdest, warum das hier nichts mit 
dem Magnetfeld zu tun haben kann, anstatt meine These mit 
"Ausserirdischen" ins Lächerliche zu ziehen.

von Kurt B. (kurt-b)


Lesenswert?

Christian S. schrieb:

> Wenn ich ein Pin auf Masse ziehe, zerstöre
> ich damit ja brutal das Magnetfeld.

Etwas Gedachtes das nicht existiert lässt sich nicht zerstören.

 Kurt

von Christian (dragony)


Lesenswert?

Kurt B. schrieb:
> Christian S. schrieb:
>
>> Wenn ich ein Pin auf Masse ziehe, zerstöre
>> ich damit ja brutal das Magnetfeld.
>
> Etwas Gedachtes das nicht existiert lässt sich nicht zerstören.
>
>  Kurt

Hmmm existieren Magnetfelder nur bei stromDURCHFLOSSENEN Leitern und 
nicht.... äääh ok alles klar... Danke :)

von Achim S. (Gast)


Lesenswert?

wenn ich eine These gesehen hätte, hätte ich die gerne kommentiert. Ich 
kann aber nur eine Aneinandereihung von Begriffen erkennen, die meinem 
Eindruck nach bestenfalls halbverstanden sind. Vielleicht erklärst du 
mal konkret, was du vermutest.

Falls du von induktiver Kopplung redest: in dem Fall würde die Spannung 
am hochohmigen Ende der Leitung abfallen, an dem deutlich 
niederohmigeren 1kOhm Widerstand siehst du davon nichts.

Warum suchst du zwanghaft nach anderen Eklärungen, wenn du die richtige 
Erklärung schon lange bekommen hast?

von Christian (dragony)


Lesenswert?

Achim S. schrieb:
> Warum suchst du zwanghaft nach anderen Eklärungen, wenn du die richtige
> Erklärung schon lange bekommen hast?

Ich akzeptiere ja die Erklärung, dass es sehr wahrscheinlich die 
Kapazität ist. Ist es deshalb denn verboten, zu fragen, warum es die 
Induktion NICHT sein kann?

Ja, ich habe mit euren Fachbegriffen so meine Probleme. Ich lerns schon 
noch.

von Klaus (Gast)


Lesenswert?

Christian S. schrieb:
> Ich akzeptiere ja die Erklärung, dass es sehr wahrscheinlich die
> Kapazität ist.

Es ist nicht wahrscheinlich die Kapazität, es ist bestimmt die 
Kapazität, ganz gewöhnliches Übersprechen. Nimm einfach Vcc und SDA in 
ein Paar und GND und SCL in ein anderes Paar (oder auch umgekehrt) und 
schon gehts. 1 Meter und falsche Kabelbelegung geht nicht, gleiche 
Schaltung aber richtige Belegung geht auch mit 5 Meter.

BTDT

Und mit den mikrigen mA von I2C bekommst du irgendeine messbare 
Indukdion nicht gebacken.

MfG Klaus

von Christian (dragony)


Lesenswert?

So, ich habe jetzt nochmal verschiedene Kombinationen ausprobiert und 
den Effekt gemessen. Am meisten hat es gebracht, nur eine Ader für die 
Daten zu nehmen. Ist mir jetzt auch klar, dass das Umladen von zwei 
Adern doppelt so lange braucht wie von nur einer Ader.

Wegen der Abschirmung habe ich verschiedene Positionen durch, aber nur 
zwei gefunden, die sich signifikant unterscheiden.

Variante 1:
1 DATA
2 5V
3 NC
4 NC
5 NC
6 NC
7 GND
8 CLOCK

Das bricht mir den Vorteil, das die DATA nicht einbricht, wenn CLOCK auf 
Masse geht. Allerdings ist die Anstiegszeit beider Datenleitungen 
gestiegen. Das liegt dann wohl daran, das ich jetzt einen Kondensator 
gebaut habe ;)

Variante 2:
1 DATA
2 NC
3 NC
4 5V
5 GND
6 NC
7 NC
8 CLOCK

Hier habe ich zwar steile Flanken, aber dafür immernoch den Einbruch. 
Meine Erklärung ist, dass ich den Kondensator quasi "in sich isoliere" 
und er keine Ladungen abgeben kann.

Eine Pinbelegung, wie ich gleichzeitig den Einbruch vermeide und dennoch 
starke Flanken habe, habe ich noch nicht gefunden. Ist damit das 
Potential der Pinbelegungen ausgereizt? Mehrere Adern auf GND oder 5V 
parallel zu beschalten zeigte keinen signifikanten Effekt.

von Kurt B. (kurt-b)


Lesenswert?

Christian S. schrieb:
>
> Hier habe ich zwar steile Flanken, aber dafür immernoch den Einbruch.
> Meine Erklärung ist, dass ich den Kondensator quasi "in sich isoliere"
> und er keine Ladungen abgeben kann.
>

Versuchs mal mit Kabel das einzeln abgeschirmte Pärchen hat, eins nimmst 
du für den Takt, eins für Daten.

Eine Ader eines Pärchens wird auf Masse gelegt, der Schirm kommt 
ebenfalls an Masse.

Somit hast du kein Übersprechen zwischen den einzelnen Signalen mehr und 
zugleich einen sauberen Wellenwiderstand, heisst du bekommst eine hohe 
Datenrate hin (wenn der Abschluss am Kabelende (und Kabelanfang) passt).

Für die 5V ist es egal was du nimmst.


 Kurt

(sag und bitte mal was du unter "Pärchen" verstehst, was das bewirkt, da 
scheint noch eine Lücke zu sein)

.

von Stefan F. (Gast)


Lesenswert?

Die beiden Leitungen bilden einen Kondensator. Das Signal der einen Ader 
beeinflusst auch die andere.

Abschirmung ist nur die halbe Lösung. Dann beeinflussen sie sich nicht 
mehr, aber die Signale sind immer noch verzerrt.

Du musst die Leitungen an beiden Enden richtig abschließen, damit das 
Signal weitgehend unverändert hinten raus kommt.

Außerdem musst du die Signal-Flanken abflachen. Denn Rechtecksignale 
haben unendlich viele Oberwellen. Normale Kabel können keine 
Rechteckigen Signale übertragen.

Die Frequenz deiner Signale spielt dabei nur eine untergeordnete Rolle. 
Jedes Rechtecksignal hat unendlich viele Oberwellen, auch wenn es nur 
ein 1Hz Frequenz hat. Und sobald eine Leitung länger als 15cm ist, 
sollte man sich darüber gedanken machen.

Bei niedrigen Frequenzen (unter 1Mhz) genügt es meistens, zwischen 
Sender und Kabel einen Tiefpass zu schalten (100 Ohm + 1nF), und dem 
Empfänger einen Schmitt-Trigger vorzusetzen, um die Signalflanken wieder 
steil zu machen.

Siehe:

http://www.elektronik-kompendium.de/sites/grd/0212261.htm
http://www.vias.org/mikroelektronik/line_termination.html

von Christian (dragony)


Lesenswert?

Hmmm bei der AC-Terminierung braucht es ja auch einen Widerstand. Spielt 
es eine Rolle, ob erst der Kondensator und dann der Widerstand kommt, 
oder kann man auch die Sache umdrehen, also erst R und dann C? Ist eine 
Verständnisfrage.

o-----------------------o
                 |
                 R
                 |
                 C
                 |
                 =

o-----------------------o
                 |
                 C
                 |
                 R
                 |
                 =

: Bearbeitet durch User
von Kurt B. (kurt-b)


Lesenswert?

Christian S. schrieb:
> Hmmm bei der AC-Terminierung braucht es ja auch einen Widerstand. Spielt
> es eine Rolle, ob erst der Kondensator und dann der Widerstand kommt,
> oder kann man auch die Sache umdrehen, also erst R und dann C? Ist eine
> Verständnisfrage.
>
> o-----------------------o
>                  |
>                  R
>                  |
>                  C
>                  |
>                  =
>
> o-----------------------o
>                  |
>                  C
>                  |
>                  R
>                  |
>                  =


Das spielt keine Rolle, es ist ja eine Reihenschaltung (der Strom der 
durch beide durchgeht ist in jedem Bauteil, egal welches es ist, 
gleich).

Das Entscheidende ist dass die Leistung die ankommt komplett vernichtet 
wird, das macht der Widerstand, an ihm fällt die Spannung ab.

Wird sie komplett vernichtet ist keine mehr da die zurücklaufen könnte.


 Kurt

von Christian (dragony)


Angehängte Dateien:

Lesenswert?

Hallo Kurt,

du wolltest ja noch wissen, was es mit den Pärchen auf sich hat. Ich 
habe darunter die einzeln verdrillten Aderpärchen verstanden und ich 
hoffe einfach mal, dass die Reihenfolge des RJ-45 Steckers auch intuitiv 
auf die Adern übertragen werden kann, also das jeweils Pin 1 und 2 ein 
Pärchen bilden und Pin 3 und 4 ein zweites Pärchen etc.

Was damit bewirkt werden soll, ist mir in der Tat nicht klar, denn laut 
Wikipedia dient das zur Reduzierung der INDUZIERTEN Störspannung. Jedoch 
wurde mir ja gesagt, dass bei diesen kleinen Strömen eh keine Induktion 
statt findet.

Ich habe mal den Spannungsverlauf von CLOCK an beiden Enden des Kabels 
gemessen, wenn der AVR die Spannung auf Masse zieht. Gelb=AVR Ausgang 
Blau=MCP Eingang nach knapp 3 Meter Kabel. Warum sinkt die Spannung da 
in den negativen Bereich? Ich hätte jetzt ja auf Selbstinduktion 
getippt, aber das kann es ja angeblich nicht sein....

: Bearbeitet durch User
von Physiologist (Gast)


Lesenswert?

Christian S. schrieb:
> ich hoffe einfach mal, dass die Reihenfolge des RJ-45 Steckers auch intuitiv
> auf die Adern übertragen werden kann, also das jeweils Pin 1 und 2 ein
> Pärchen bilden und Pin 3 und 4 ein zweites Pärchen etc.

Ohne mir alles durchgelesen zu haben: Bei Belegung nach  EIA/TIA-568 
("Netzwerkkabel") ist das zumindest NICHT der Fall. Für (Fast) Ethernet 
waren die Pärchen 1-2 und 3-6; ab Gigabit dann auch 4-5 und 7-8.

von Achim S. (Gast)


Lesenswert?

Kurt B. schrieb:
> Das Entscheidende ist dass die Leistung die ankommt komplett vernichtet
> wird,

wirklich entscheidend wäre, dass der IIC-Bus funktioniert. Das wird er 
mit einer AC-Terminierung aus 100Ohm und 1nF  sicher nicht bei 1MHz, 
weil die steigende Flanke damit mehrere µs lang sein wird - der Pullup 
braucht viel zu lange, um den Kondensator zu laden.

Parallelterminierung hat bei IIC generell nichts zu suchen. Die einzige 
Möglichkeit für Parallelterminierung wäre, den Bus zu quälen und den 
Pullup entsprechend der Leitungsimpedanz zu wählen.

Das macht niemand, der funktionierende I2C-Verbindungen bauen will. 
Selbst bei Ultrafast I2C arbeitet man nicht mit terminierten Bussen 
sondern nutzt Treiber, deren Flankenzeit nicht zu kurz ist. Wenn man 
keinen solchen Treiber zur Verfügung hat (weil man z.B. direkt aus einem 
schnelleren µC-Pin treibt), dann schaltet man dem einen Serienwiderstand 
nach (wie schon vorgeschlagen). Wenn man unbedingt Termnierung 
eingesetzt haben mag, kann man den als Serienterminierung betrachten.

Christian S. schrieb:
> Warum sinkt die Spannung da
> in den negativen Bereich?

das ist die Reflektion der negativen Flanke am offenen Ende. Nochmal 
20ns später kommt die Reflektion wieder am Treiber an und die gelbe 
Kurve macht einen Sprung nach unten. Hänge einen 200 Ohm 
Serienwiderstand hinter den Treiber und die Reflexion ist weg.

Christian S. schrieb:
> also das jeweils Pin 1 und 2 ein
> Pärchen bilden und Pin 3 und 4 ein zweites Pärchen etc.
>
> Was damit bewirkt werden soll, ist mir in der Tat nicht klar,

Die Adernpärchen reduzieren Störungen bei differentieller 
Datenübertragung. Signale werden dort als Differenzsignale übertragen, 
Störungen machen sich als Gleichtaktstörungen bemerkbar, die fürs 
Differenzsignal keine Rolle spielen.

Für deine nicht-differentielle Datenübertragung spielen die Pärchen fast 
keine Rolle und das UTP-Kabel (unshielded twisted pair) ist so ziemlich 
die ungünstigste Kabelvariante, um saubere Signale zu erreichen. Aber 
mit dem vorgeschlagenen Serienwiderstand hinter dem Treiber wird auch 
das funktionieren.

von Kurt B. (kurt-b)


Lesenswert?

Christian S. schrieb:
> Hallo Kurt,
>
> du wolltest ja noch wissen, was es mit den Pärchen auf sich hat.


Ja, ich wollte wissen ob du Bescheid weisst warum in der Telephontechnik 
(und deren Nachfolgern) immer ein Adernpaar (hier Pärchen genannt) 
verwendet wird.


> Ich
> habe darunter die einzeln verdrillten Aderpärchen verstanden und ich
> hoffe einfach mal, dass die Reihenfolge des RJ-45 Steckers auch intuitiv
> auf die Adern übertragen werden kann, also das jeweils Pin 1 und 2 ein
> Pärchen bilden und Pin 3 und 4 ein zweites Pärchen etc.
>

Gehen wir mal davon aus dass es so ist.


> Was damit bewirkt werden soll, ist mir in der Tat nicht klar,

Das ist ganz einfach, "jedem sein Pärchen, jedem seine Leitung, jedem 
seine Telephonverbindung", und zwar möglichst unabhängig.
Es geht um das unabhängig, also darum dass der andere Teilnehmen nicht 
hört was er eine gerade über seine Schwiegermutter erzählt.



> denn laut
> Wikipedia dient das zur Reduzierung der INDUZIERTEN Störspannung. Jedoch
> wurde mir ja gesagt, dass bei diesen kleinen Strömen eh keine Induktion
> statt findet.
>

INDUZIERT heisst ja nicht dass es induktiv ist, es steht für jede Art 
der Beeinflussung/Übertragung (Hineinbringen/hineininduzieren)zum 
Nachbarpärchen.

Es kann induktiv, es kann kapazitiv, es kann xy sein, hier ist mehreres 
möglich.

Das was dir hier gesagt wurde bezieht sich einzig auf die kapazitive 
Kopplung zwischen den einzelnen Pins ala Kondensator.
Induktive Kopplung bedarf des Trafos (dabei ist auch eine Kabel ev.! ein 
Trafo).



> Ich habe mal den Spannungsverlauf von CLOCK an beiden Enden des Kabels
> gemessen, wenn der AVR die Spannung auf Masse zieht. Gelb=AVR Ausgang
> Blau=MCP Eingang nach knapp 3 Meter Kabel. Warum sinkt die Spannung da
> in den negativen Bereich? Ich hätte jetzt ja auf Selbstinduktion
> getippt, aber das kann es ja angeblich nicht sein....

Was nach dem Kabel sein kann ist eine ganz andere Baustelle als vor dem 
Kabel, vor dem Kabel hast du keine induktive Kopplung vorliegen, nach 
dem Kabel sehr wohl, denn das Kabel kann ja der Transformator sein.

Einer der Sinne des Pärchens ist es die vom Stromfluss im Leiter a 
erzeugte "Magnetfeld" durch den Stromfluss im Leiter b zu kompensieren.
(a und b sind die beiden Drähte des Pärchens)

Sin beide "Felder" gleich gross, aber entgegengesetzt (ein "Strom" läuft 
hin, einer entgegen) kompensieren sie sich aus, es wird also nicht an 
die Umgebung, und damit ins Nachbarpärchen eingestreut.

Hier gilt 1+ (-1) = 0

Wenn also aus irgendeinem Grund der hinfliessende Strom nicht dem 
zurückfliessendem entspricht dann bleibt ein Ungleichgewicht bestehen 
und es kommt zum sog. "Übersprechen", das ist die Beeinflussung der 
Nachbarleitungen.

Am leichteten kann man das eben durch "Pärchen" erlangen.

 Kurt

von Christian (dragony)


Angehängte Dateien:

Lesenswert?

Ich habe jetzt mal wie vorgeschlagen einen Serienwiderstand eingefügt. 
Anbei 3 Oszillogramme. Einmal ohne, einmal mit 67 Ohm und einmal mit 100 
Ohm. Der 100 Ohm Widerstand scheint genau richtig zu sein. Um da den 
richtigen Widerstand zu nehmen, reicht es, den Wellenwiderstand zu 
verwenden, oder hängt es auch stark von der Frequenz, also der 
Flankensteilheit ab?

Und auch vielen Dank für all die konstruktiven Antworten. Das hat mir 
alles sehr geholfen und hat mir eine ganze Menge an Wissen vermittelt. 
:)

von Stefan F. (Gast)


Lesenswert?

Die Anschlüsse von I²C Chips sind nicht symmetrisch. Du hast nur drei 
wirksame Anschlüsse: GND, Clock und Data.

Für eine Symmetrische Übertragung bräuchtest du (wie Ethernet und USB) 
Clock A, Clock B, Data A, Data B und optional GND.

Solange du keine symmetrischen Bustreiber einsetzt, kannst Dir das mit 
den verdrillten Adern sparen.

Und bei Ethernet Kabeln sind die Paare: 1+2, 3+6, 4+5, 7+8.

Ich empfahl oben einen Tiefpass aus 100 Ohm und 100nF. Diese Bauteile 
hast du jedoch als Serienterminierung verwendet. Ich glaube ich muss mal 
erklären, wie man einen Tiefpass aufbaut:
1
Clk o-----[===]---+------Kabel----+---[===]-----o CLK
2
                  |               |
3
                 ===             ===
4
                  |               |
5
GND o-------------+------Kabel----+-------------o GND
6
                  |               |
7
                 ===             ===
8
                  |               |
9
Clk o-----[===]---+------Kabel----+---[===]-----o CLK
10
11
4x 100 Ohm, 4x 1nF

Diese Tiefpässe bewirken, dass die Signale nicht mehr Recheckige Form 
haben, ihre Flanken werden abgeflacht. Du brauchst vier Stück davon,
weil beide Leitungen bidirektional sind.

Aus diesem Signal:
1
      ________          ________
2
     |        |        |        |
3
_____|        |________|        |_______
Wird ungefähr dieses:
1
       _______         _________
2
      /       \       /         \
3
_____/         \_____/           \________

Nun ist noch die Frage, ob deine IC's solche abgeflachten Signale 
empfangen können. Normalerweise würde man ihnen Schmitt-Trigger 
vorschalten, aber das geht nicht bei bidirektionalen Leitungen.

I²C ist einfach nicht für so lange Leitungen gedacht. Mit SPI oder UART 
wäre es wesentlich simpler, passende Leitungstreiber zu bauen. Die 
gibt's sogar für wenige Cent fertig als IC.

von Achim S. (Gast)


Lesenswert?

Christian S. schrieb:
> Um da den
> richtigen Widerstand zu nehmen, reicht es, den Wellenwiderstand zu
> verwenden, oder hängt es auch stark von der Frequenz, also der
> Flankensteilheit ab?

Wenn man wirklich terminieren wollte, dann müsste der Widerstand zum 
Wellenwiderstand der Leitung passen. Aber I2C arbeitet nicht mit 
terminierten Leitungen sondern mit langsamen Flanken. Deshalb muss der 
Serienwiderstand nur groß genug sein, um ein zu schnelles Ansteigen des 
Signals zu verhindern. Ob 100 Ohm oder 200 Ohm ist da egal - für eine 
Terminierung wäre es nicht egal.

Stefan U. schrieb:
> Diese Bauteile
> hast du jedoch als Serienterminierung verwendet.

aus guten Grund: mit den 2x1nF (oder 2x100nF) am Kabel bekäme er nie die 
gewünschte Bitrate hin. Denn der Highside-Treiber bei I2C ist ein 
simpler Widerstand. 1,1kOhm*2nF ergibt 2,2µs - die steigende Flanke 
würde viel zu langsam.

von Stefan F. (Gast)


Lesenswert?

> Um da den richtigen Widerstand zu nehmen, reicht es, den
> Wellenwiderstand zu verwenden

Ja. Typische Werte liegen im Bereich zwischen 50 und 200 Ohm.


Aber deine Pull-Up Widerstände machen die Rechnung zunichte. Die Leitung 
muss über 100 Ohm nach Low und nach High gezogen werden. Und die Last am 
Ende muss auch für beide Richtungen 100 Ohm sein.

Das ist bei I²C gar nicht korrekt realisierbar. Deswegen würde ich es 
mal mit Tiefpässen versuchen in kombination mit niedrigen 
Übertragungsraten (unter 1Mhz) versuchen. Denn wenn die Signalflanken 
flach genug sind, wirken sich Reflexionen und Kapazitives Übersprechen 
viel geringer aus, als bei Rechteckigen Signalen.

von SPI (Gast)


Lesenswert?

Und der MCP23S08 würde oberhalb der Bits das gleiche Protokoll 
verstehen. Aber wie war oben zu lesen "... Ich programmiere schon seit 
20 Jahren ..." und ich ergänze: deshalb weiß der TO Bescheid.
PS: als SPI-Variant kann der Baustein bis zu 10MBit.

von Stefan F. (Gast)


Lesenswert?

> mit den 2x1nF (oder 2x100nF) am Kabel bekäme er nie die
> gewünschte Bitrate hin

Ganz richtig. I²C in Kombination mit langen Leitungen ist von Grundsatz 
her schon Käse. Der Zwang, mit Pull-ups arbeiten zu müssen steht allen 
vernünftigen Lösungen entgegen.

Ich würd's ja aus der Not heruas gerne so empfehlen:
1
         VCC
2
         o
3
         |
4
        |~| 100 Ohm
5
        |_|
6
         |      100 Ohm
7
IC o-----+------[====]--+----- Kabel
8
         |              |
9
         +------|<|-----+

Aber das wird wohl an den nicht idealen Eigenschaften der Diode 
scheitern, sowie unzureichende Strom-Fähigkeit der IC's.

von Stefan F. (Gast)


Lesenswert?


von (prx) A. K. (prx)


Lesenswert?

Stefan U. schrieb:
> Ganz richtig. I²C in Kombination mit langen Leitungen ist von Grundsatz
> her schon Käse. Der Zwang, mit Pull-ups arbeiten zu müssen steht allen
> vernünftigen Lösungen entgegen.

Wobei ein entsprechend betriebenes 1-Wire Netz auch mit 100m zurecht 
kommt. Elektrisch ist der Unterschied zu I2C nicht arg gross. 
Übersprechen freilich ist da weniger relevant.

von Christian (dragony)


Lesenswert?

Hallo Stefan,

ich hab auch die Sache mit dem Tiefpass ausprobiert, aber der 
Kondensator entlädt sich ja erst schnell und dann langsam. Deshalb habe 
ich ja dennoch eine starken Absturz, der sich dann langsam abflacht. 
Gibt es keine Möglichkeit, einen perfekten "Halbkreis" zu erzeugen? Die 
Ladekurve ist ja kein Problem, die ist ja schon ein schneller Anstieg, 
der sich langsam abflacht. Nur die andere Seite, als die Entladeseite 
bekomme ich nicht hin.

von neuer PIC Freund (Gast)


Lesenswert?

Für ungewöhnliche IIC-Lösungen kann man die PullUps verbessern. Ich 
setze hierbei Stromspiegel mit BCV62 ein. Eingestellt auf 2 - 2.5 mA 
bügeln die einiges glatt, schnelleres Umladen der Leitungskapazitäten 
inklusive. Die Nachrichtentechniker wissen: Frequenz ist nichts, 
Flankensteilheit alles. Darum benutze, wenn es geht die TWI-Peripherie. 
Die starken Flanken des AVR werden so von <20ns auf 200ns ausgedehnt. 
Habe damit schon aus nichtfunktional funktional gemacht.

von Stefan F. (Gast)


Lesenswert?

Tja Christian, da beschreibt du genau den Haken. Das ist ja gerade das 
Problem, dass man ohne komplexere Treiber nicht gelöst bekommt. Mit so 
einfachen passiven Bauteilen (Widerstände, Kondensatoren) kommst du da 
nicht weiter. Schau Dir mal die oben genannte Application Note von NXP 
an, da wird ein Chip vorgestellt, der zur Lösung deines Problems 
geschaffen wurde.

von Christian (dragony)


Lesenswert?

Ach das ist eine wichtige Information, dass es nicht EINFACH möglich 
ist. Es hätte ja sein können, dass ich einen Tiefpassfilter 2. Ordnung 
bauen hätte können. Da wäre halt noch eine Induktivität verbaut worden.

Ich möchte nochmals betonen, das es nicht darum geht, I2C zum Laufen zu 
bekommen. Das tut es nämlich bereits mehr als genug. Das Problem war 
zuletzt, ob es möglich ist, es mit einfachen Bauteilen (also Diode, R, 
C, L, etc) zu verschönern. Schöner heisst ja auch, dass längere Kabel 
möglich sind. Andere Chips zu nehmen heisst das Problem zu umgehen. Ich 
will ja auch was lernen ;)

von Paul B. (paul_baumann)


Lesenswert?

Christian S. schrieb:
> Andere Chips zu nehmen heisst das Problem zu umgehen. Ich
> will ja auch was lernen ;)

Die Leute beim Hersteller NXP sind wahrscheinlich auf das gleiche 
Problem wie Du gestossen und haben daraufhin den o.g. Schaltkreis 
entwickelt. Damit wollten sie sicher das Problem nicht umgehen, 
sondern lösen.

Manchmal ist es einfacher, einen fertigen Schaltkreis zu kaufen, als das 
ganze Wochende damit zu verbringen, LAN-Kabel auseinanderzudröseln und 
alle Kombinationen der Adern auszuprobieren.

Mit der gewonnenen Zeit könnte man mit Kurt baden gehen und auf dem 
Teich Stehwellen erzeugen.
;-)

MfG Paul

von Bernd K. (prof7bit)


Lesenswert?

Euch ist aber schon allen klar dass I²C nicht dafür designed ist 
irgendwelche Entfernungen zu überbrücken (auf Übertragungsleitungen 
übertragen) zu werden? Sowohl im Protokoll als auch im Design der 
physikalischen Schicht wurde davon ausgegangen daß niemals jemand auf so 
eine Idee kommen würde. Und als man sich dann sicher war daß das auch 
garantiert nicht vorkommen wird konnte man es so entwerfen wie es nun 
ist.

Was soll also der Unfug mit Kabeln und Terminierungen der hier 
diskutiert wird?

von Christian (dragony)


Lesenswert?

Ja, das ist uns klar. Danke, bitte weitergehen.

von Kurt B. (kurt-b)


Lesenswert?

Bernd K. schrieb:

>
> Was soll also der Unfug mit Kabeln und Terminierungen der hier
> diskutiert wird?

Was soll denn das für eine Antwort sein?
Ich bin echt dankbar für diesen Faden hier, er ist sehr 
lehrreich/hilfreich.

 Kurt

von Klaus (Gast)


Lesenswert?

Bernd K. schrieb:
> Euch ist aber schon allen klar dass I²C nicht dafür designed ist
> irgendwelche Entfernungen zu überbrücken (auf Übertragungsleitungen
> übertragen) zu werden?

Es ist aber auch klar, daß in jedem DVI/HDMI Kabel ein I2C Bus werkelt, 
um den Typ des Monitors zu erkennen. Und das funktioniert auch 
millionenfach über 5m lange Kabel ohne irgendwelche Tricks.

> Was soll also der Unfug mit Kabeln und Terminierungen der hier
> diskutiert wird?

Cross Talk in einem Kabel zu vermeiden gehört doch wohl zum kleinen 1 
mal 1 der Elektronikentwicklung.

MfG Klaus

von Stefan F. (Gast)


Lesenswert?

> Und das funktioniert auch millionenfach über 5m lange Kabel ohne
> irgendwelche Tricks.

Ja, mit niedrigen Bitraten und Chips, deren Empfänger höher frequente 
Signale raus filtern.

Das Problem in diesem Thread war, I²C mit hoher Bitrate über Kabel zu 
betrieben.

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.