Forum: Mikrocontroller und Digitale Elektronik Wie Die Richtung bei einem 2-Draht-Bus erkennen?


von Micha (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

ich möchte die Kommunikation auf einem 2-Draht-Bus mit 2 Teilnehmern 
"abhören" und dabei die Datenrichtung erkennen um herauszufinden welcher 
Teilnehmer gerade die Leitungen wie beeinflusst.

Kennt jemand eine (einfache) Schaltung, die ich an die zwei Leitungen 
anklemme und an der ich dann einen Logik Analysator anschliessen kann?

Im Anhang ein Bild eines Frames auf diesem Bus.

von STK500-Besitzer (Gast)


Lesenswert?

Sieht nach irgendwas symmetrischen (RS422, RS485 oder CAN) aus.
Den Logik-Analysator kannst du auch so anschliessen.

von Klaus (Gast)


Lesenswert?

>Wie Die Richtung bei einem 2-Draht-Bus erkennen?

geht leider ohne das Protokoll zu kennen nicht!

Klaus

von STK500-Besitzer (Gast)


Lesenswert?

Die Richtung kann man nur feststellen, wenn man den Bus auftrennt, und 
eine Schaltung dazwischen baut, die den Bus nicht weiter beeinflusst...

von Micha (Gast)


Lesenswert?

Erstmal vielen Dank für die Antworten!

> Den Logik-Analysator kannst du auch so anschliessen.
Habe ich schon gemacht - siehe Bild.

> Die Richtung kann man nur feststellen, wenn man den Bus auftrennt, und
> eine Schaltung dazwischen baut, die den Bus nicht weiter beeinflusst...
Die Leitungen lassen sich ohne Probleme auftrennen. Hast du (oder jemand 
anders) zufällig einen Vorschlag für die entsprechende Schaltung?

von crazy horse (Gast)


Lesenswert?

tja, das wird nicht ganz einfach.
Erstmal ist das nix symmetrisches, sondern eine ziemlich einfache 
serielle synchrone Übertragung, a la SPI.
Dann bleibt erstmal die Frage: können beide Seiten überhaupt den Takt 
erzeugen? Üblicherweise kommt der nur von einem (dem master), kann aber 
theoretisch von beiden kommen.
Kommt der Takt nur von einer Seite, wirds einfacher.

von Bensch (Gast)


Lesenswert?

Auf beiden Seiten PullUps und in die Leitung einen Widerstand. Dann kann 
man erkennen, auf welcher Seite der Sender liegt.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Ich mach das immer so:
1) Leitung auftrennen
2) Widerstand z.B. 10-100 Ohm einfügen
3) links und rechts vom Widerstand Oszi anschliessen
   (oder oben und unten, je nachdem wie die Leitung verläuft ;-)
4) An den Spannungen an den beiden Widerstandsanschlüssen
   kannst du sehen, wer "aktiv" am Bus herumzerrt und wer nur hört.

Mit einem Komparator und einem RS-FF könnte man sich eine Art 
"Richtungsanzeiger" basteln.

EDIT: Schon wieder "nur" Zweiter :-(

von Bensch (Gast)


Lesenswert?

Ätsch....
Hatte die Idee schon früher, aber musste zwischendurch mal weg.

von Micha (Gast)


Angehängte Dateien:

Lesenswert?

Ich habe jetzt mal anhängende Schaltung aufgebaut und meinen Logic 
Analyzer an die Ausgänge des LM139 (LM339) angeschlossen, aber leider 
komme ich auf keinen grünen Zweig. Wenn ich die Spannung am Poti so 
eingestellt habe, dass Daten "durchkommen", dann sehe ich die Daten 
immer an beiden Ausgängen...

Ich habe auch schon 2 Dioden in Reihe antiparallel geschaltet aber auch 
das hat leider nichts gebracht...

Ist an meiner Schaltung denn etwas Grundlegendes verkehrt?

@ crazy horse
Ich bin nicht sicher, aber ich denke schon, dass beide Seiten den Takt 
erzeugen können.

von spess53 (Gast)


Angehängte Dateien:

Lesenswert?

Hi

Mit zwei von den ICs im Anhang sollte es gehen.

MfG Spess

von Micha (Gast)


Lesenswert?

Hmm - ich verstehe nicht ganz wie mir das helfen soll - bei "meinem" Bus 
handelt es sich nicht um I²C soweit ich das sagen kann. Ich kenne mich 
aber mit I²C auch nicht aus...

von Micha (Gast)


Angehängte Dateien:

Lesenswert?

Ich habe mir da selber ein Ei gelegt: beim LM339 muss die 
Versorgungsspannung etwa 2V größer sein als die Spannungen, die 
verglichen werden sollen. Und ich wollte mit 5V Versorgungsspannung 
5V-Signale vergleichen...
Ich habe jetzt die Versorgungsspannung auf 12V erhöht und schon sieht es 
wesentlich besser aus.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

> Versorgungsspannung etwa 2V größer sein als die Spannungen,
> die verglichen werden sollen.
Ja, da isser wieder, der Common Mode Voltage Range ;-)
Ein beliebter Fehler, auch bei alten Hasen.

EDIT:
Du kannst statt der Dioden auch Widerstände (oder wenigstens 
Shottky-Dioden BAT48&Co) verwenden, dann ist der Spannungsabfall nicht 
so groß.

von Micha (Gast)


Lesenswert?

> Ja, da isser wieder, der Common Mode Voltage Range ;-)
> Ein beliebter Fehler, auch bei alten Hasen.
Exakt der war es ;) Ich würde mich zwar nicht als alten Hasen 
bezeichnen, aber wissen hätte ich das müssen... Wer lesen kann (und es 
auch tut) ist halt klar im Vorteil...

> EDIT:
> Du kannst statt der Dioden auch Widerstände (oder wenigstens
> Shottky-Dioden BAT48&Co) verwenden, dann ist der Spannungsabfall nicht
> so groß.
Ich weiß. Das war in diesem Fall aber unnötig - im Gegenteil: ich hatte 
sogar noch je 2 Dioden in Reihe (also 4 pro Datenleitung)...

von Bereits F. (Firma: D.ade) (bereitsfort)


Lesenswert?

ein Serienwiderstand (symetrisches Netwerk mit ~) sollte geringfüge 
Spannungsdifferenzen erzeugen.

ein Komperator an beiden Seiten ist dann in der Lage zu erkennen auf 
welcher Seite  eine Leitung down gezogen wird(I²C), oder eine spannung 
generiert wird(RS422 CAN)

somit ließe sich der Aktive (Sendende) Teilnehmer erkennen lassen.

von Richtungsdetektor (Gast)


Angehängte Dateien:

Lesenswert?

Die abgebildete Schaltung war vor über 15 Jahren einmal sehr nützlich, 
das mir damals noch vollkommen unbekannten Format des Datentransfers 
zwischen einem Kartenleser und einer Smartcard (VC ;-)) zu analysieren. 
Im Ruhezustand befindet sich der 1-Draht-Bus zwischen Karte und Leser 
auf High, der jeweilige Sender zieht die Leitung den Daten entsprechend 
auf Low. Bei niedrigen Datenraten um 9600 Baud genügten recht kleine 
Ströme und dementsprechend große Widerstandswerte, so daß die 
Kommunikation zwischen Karte und Leser nicht gestört wurde. Die 
Potentialverschiebungen an der jeweiligen Empfängerseite (Low aufgrund 
der Basis-Emitter-Strecke um ca. 0,6 V angehoben -  High reduziert durch 
den Strom in den Pull-Down-Widerständen) erwies sich ebenfalls als 
unproblematisch. Die Werte der Widerstände kommen aus dem Gedächtnis, 
die Größenordnung müsste aber stimmen. Ob ich die beiden 
Pull-Up-Widerstände, R3 und R4 überhaupt gebraucht habe, kann ich nicht 
mehr genau sagen, evt. reichten auch die Pull-Ups in Karte und Leser, 
bzw. deren Quell-Ströme.

Die Funktionsweise ist schnell beschrieben: Je nach Datenrichtung liegt 
am Collector des einen oder anderen Transistors bei einem active-Low-Bit 
von Karte bzw. Leser ein positives Signal an. Das NOR-Gate kombiniert 
die Signale für beide Richtungen, und liefert wieder ein 
active-Low-Signal. Das sind die Daten (für beide Richtungen).

Das Flip/Flop detektiert und hält die Datenrichtung, bis eine 
Übertragung in der jeweils anderen Richtung erfolgt. Verzögert man die 
Daten noch, (bspw. durch zwei freie HC02-Gatter) sind die Signale 
zeitlich "sauber", d.h. bereits zu Beginn des ersten Datenbits ist das 
Richtungssignal gültig. (Das Übertragungsende in einer Richtung war 
damals unkritisch, das gab es ohnhin eine deutliche Pause.)

Für einen 2-Draht-Bus benötigt man die Schaltung natürlich in doppelter 
Ausführung...

MfG

von Gast (Gast)


Lesenswert?

Hmm, bei rund 5 KHz mag das ja funktionieren. Aber - mit den üblichen 
Streukapazitäten und so geringen Strömen bzw. hohen Wiederstandswerten - 
auch noch mit den 100 oder gar 400 KHz des I²C-Bus?

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.