mikrocontroller.net

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


Autor: Micha (Gast)
Datum:
Angehängte Dateien:

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

Autor: STK500-Besitzer (Gast)
Datum:

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

Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Wie Die Richtung bei einem 2-Draht-Bus erkennen?

geht leider ohne das Protokoll zu kennen nicht!

Klaus

Autor: STK500-Besitzer (Gast)
Datum:

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

Autor: Micha (Gast)
Datum:

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

Autor: crazy horse (Gast)
Datum:

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

Autor: Bensch (Gast)
Datum:

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

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

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

Autor: Bensch (Gast)
Datum:

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

Autor: Micha (Gast)
Datum:
Angehängte Dateien:

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

Autor: spess53 (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Mit zwei von den ICs im Anhang sollte es gehen.

MfG Spess

Autor: Micha (Gast)
Datum:

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

Autor: Micha (Gast)
Datum:
Angehängte Dateien:

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

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

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

Autor: Micha (Gast)
Datum:

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

Autor: Bereits Fort (Firma: D.ade) (bereitsfort)
Datum:

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

Autor: Richtungsdetektor (Gast)
Datum:
Angehängte Dateien:

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

Autor: Gast (Gast)
Datum:

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

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.