Forum: Mikrocontroller und Digitale Elektronik UART-Ring durchschleifen


von Uartig (Gast)


Lesenswert?

Hallo,

wenn ich einen Ring aus mehreren Mikrocontrollern aufbaue und diese per 
UART verbinde, also
uC1 sendet mit TX an RX von uC2 und
uC2 sendet mit TX an RX von uC3 und wo weiter, bis irgendwann
uCn mit TX wieder an RX von uC1 ankommt.

Wieviel Delay ergibt sich durch eine deratige Verschaltung, wenn ein 
Datenpaket von uC1 bis zum letzten der Reihe vordringen soll?

danke und mfg,
Uartig

von (prx) A. K. (prx)


Lesenswert?

42ms

von Bitflüsterer (Gast)


Lesenswert?

Uartig schrieb:
> Hallo,
> ...
> Wieviel Delay ergibt sich durch eine deratige Verschaltung, wenn ein
> Datenpaket von uC1 bis zum letzten der Reihe vordringen soll?

Ich vermute stark, dass man das nicht ad hoc angeben kann, sondern erst 
nach dem man einige Berechnungen angestellt hat. 
http://de.wikipedia.org/wiki/Mathematik

Was meinst Du?

von Herbert (Gast)


Lesenswert?

A. K. schrieb:
> 42ms

Aber für jeden, also n x 42ms mit n = Anzahl uCs.

von (prx) A. K. (prx)


Lesenswert?

Nene, das ist absolut. Immer.

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


Lesenswert?

Uartig schrieb:
> Wieviel Delay ergibt sich durch eine deratige Verschaltung, wenn ein
> Datenpaket von uC1 bis zum letzten der Reihe vordringen soll?
Wie schnell kann deine Software die Datenpakete durchreichen? Mit 
welcher Baudrate überträgst du? Wie groß sind die Datenpakete? Müssen 
die Datenpakete komplett empfangen werden, bevor sie weitergereicht 
werden können, oder dürfen schon die einzelnen Bytes durchgereicht 
werden? Wie wird das "Durchreichen" gesteuert? Welcher uC darf als 
erster senden? Welcher darf überhaupt senden?

von Bitflüsterer (Gast)


Lesenswert?

Sch.. Lothar, kannst Du nicht einfach mal auf die Frage antworten? Immer 
diese Fragerei! :-)

von Achim (Gast)


Lesenswert?

Im ernst, dass kann man nicht einfach beantworten, denn es kommt auf 
deine Baudrate, der Größe des Datenpakets und die Zeit an, mit der die 
uC die Daten verarbeiten kann.

im Prinzip müsste es dann so ein Term sein:
(n-1) * (größe_Datenpacket * 1/baud) + (n-1) * t_Code

t_Code = Zeit, die ein uC braucht um die Datenauszuwerten und ggf. 
weiter zu schicken.

Aber da müsste man doch echt selbst drauf kommen können...
uC1 sendet, uC2 empfängt, uC schaut für wen die Daten sind, uC2 sendet 
ggf. die Daten, wenn weiter gesented ,macht uC3 dann das selbe, ... bis 
uCn

Jetzt alle Vorgänge mit Zeiten versehen und gut ist.

von Uartig (Gast)


Lesenswert?

Also es gibt doch zwei mögliche Antworten, nämlich:

1.
Die TX-Leitung kann so programmiert werden (Echo-Betrieb) dass immer 
genau das wieder gegeben wird, was bei RX reingeht, dann wäre die 
Verzögerungszeit gegenüber einer "direkten" Leitung zum letzten 
Teilnehmer vernachlässigbar bzw. nicht messbar.

2.
Bevor auf TX irgendetwas weitergegeben wird, welches über RX empfangen 
wurde, benötigt der uC immer wenigstens x-Taktzyklen um zu begreifen was 
er zu tun hat und insofern gibt es n-mal x Taktzyklen Verzögerung.

von Uartig (Gast)


Lesenswert?

...also die Frage nochmal konkret:
Kann die TX-Leitung echt durchgeschleift werden, oder benötigt so ein 
Controller immer etwas Intelligenz und damit Delayzeit, bis er die auf 
der RX-Leitung eingegangenen Daten selber auf die TX-Leitung rübersetzt

von (prx) A. K. (prx)


Lesenswert?

Uartig schrieb:
> Kann die TX-Leitung echt durchgeschleift werden,

[ ] ja
[ ] nein
Beim verwendeten Controller zutreffende Antwort bitte selber ankreuzen.

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


Lesenswert?

Bitflüsterer schrieb:
> Sch.. Lothar, kannst Du nicht einfach mal auf die Frage antworten?
Die Frage war doch schon beantwortet. Oder irre ich mich?

von Achim (Gast)


Lesenswert?

1. wird nicht so ohne weiteres Funktionieren, denn wer garantiert dir, 
dass auf dem Bus nicht gerade jemand anders auch senden will?
Der Sender müsste eben die besagte Weiterleitung deaktivieren, sonst 
rennen die Daten permanent im Kreis. Machen das mehrere zur selben Zeit, 
kommen die Daten nicht überall an oder jeder Sender muss die eingehenden 
Daten puffern und vergleichen, ob es seine gesendeten sind und dann ggf. 
diese Daten dran hängen.

Ob dein Controller die Daten direkt durchschleifen kann, steht in diesem 
"Datenblatt", dass die Hersteller aus irgendeinem ominösen Grund dafür 
schreiben. Und dann machen die sich auch noch die mühe und schreiben für 
so einen unwichtigen Misst hunderte von Seiten...

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


Lesenswert?

Achim schrieb:
> 1. wird nicht so ohne weiteres Funktionieren, denn wer garantiert dir,
> dass auf dem Bus nicht gerade jemand anders auch senden will?
> Der Sender müsste eben die besagte Weiterleitung deaktivieren, sonst
> rennen die Daten permanent im Kreis.
Es gibt solche Busse, die die Daten "on the fly" manipulieren: Sercos 
ist einer und EtherCAT...
Aber dafür ist spezielle Hardware nötig, ein normaler UART kann das 
nicht.

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.