3 Mikrocontroller, 1 UART

Gast #2424971
Lesenswert?

Falk Brunner schrieb:
> Nennt sich Bus, gibt es in Dutzenden Varianten, z.B. RS485. Wenn
> die uCs auf einer Platine oder nah beieinander sitzen, reicht auch was
> mit CMOS-Pegel ohne Treiber.

Ist mir bekannt. Aber ich will die UARTs direkt verbinden, ohne 
Umsetzung der Physik. Und Unabhängig von der Halbleitertechnik, habe ich 
CMOS wie auch TTL Kurzschlüsse, wenn ich die Datenleitung einfach 
zusammenschließe.

uartlover schrieb:
> Eine möglichkeit wäre auch daisychain... Das du Daten in uc 1 schickst
> und der an u2 weitersendet usw. Alle in serie..

Technisch leider nicht Umsetzbar und zweitens erhöht das die Latenz.

Chris R. schrieb:
> Du kannst alle RX miteinander verbinden und die TX-Leitungen per
> Vorwiderstand an den "Bus" ankoppeln.

Was für ein Wert ist da geeignet? 10k?
#2424997
Lesenswert?

Max schrieb:
> Chris R. schrieb:
>> Du kannst alle RX miteinander verbinden und die TX-Leitungen per
>> Vorwiderstand an den "Bus" ankoppeln.
>
> Was für ein Wert ist da geeignet? 10k?

Dann hängt der Pegel aber von der Anzahl der Teilnehmer und deren 
Ausgangspegel ab. Ich würde hier eher die Entkopplung über Dioden (mit 
einem Pulldown-Widerstand) ansetzen:
1
TX1 ---|>|--+----- TX-Out
2
            |
3
TX2 ---|>|--+
4
            |
5
TX3 ---|>|--+
6
            |
7
            -
8
           | |
9
           | |
10
            -
11
            |
12
           GND

Oder halt über handelsübliche OR-Gatter...
#2425057
Lesenswert?

@  Max (Gast)

>Umsetzung der Physik. Und Unabhängig von der Halbleitertechnik, habe ich
>CMOS wie auch TTL Kurzschlüsse, wenn ich die Datenleitung einfach
>zusammenschließe.

Für sowas gibt es Open Drain Ausgänge ala I2C. Oder halt mit Dioden 
und Widerstand. Wobei die Schaltung vom Volkmar bei RS232 nicht 
funktioniert. Das STOP-Bit ist HIGH, muss aber rezessiv sein. Dioden 
drehen und Widerstand gegen VCC statt GND, dann passt es, logisches UND.

MfG
Falk
Gast #2425095
Lesenswert?

Max schrieb:
> 3 Mikrocontroller über 1 UART
> miteinander kommunizieren zu lassen?

Definiere erstmal, was du genau willst: 3 Mikrokontroller irgenwohin 
senden lassen, oder jeweils einen an die anderen beiden? Das ist 
schliesslich ein Unterschied, auch wenn dir das offensichtlich nicht 
klar ist.

Gruss Reinhard
#2427942
Lesenswert?

Falk Brunner schrieb:
> Wobei die Schaltung vom Volkmar bei RS232 nicht
> funktioniert. Das STOP-Bit ist HIGH, muss aber rezessiv sein.

A. K. schrieb:
> Im Prinzip richtig, aber genau andersrum. Die Dioden umdrehen und den
> Widerstand nach Vcc schalten. Denn Rx/Tx sind im Ruhezustand "high".

Ja, Ihr habt Recht, ich hatte das Start- und Stop-Bit von den Pegeln her 
vertauscht. Danke fürs Korrigieren.
#5963180
Lesenswert?

Volkmar D. schrieb:
> Max schrieb:
>> Chris R. schrieb:
>>> Du kannst alle RX miteinander verbinden und die TX-Leitungen per
>>> Vorwiderstand an den "Bus" ankoppeln.
>>
>> Was für ein Wert ist da geeignet? 10k?
>
> Dann hängt der Pegel aber von der Anzahl der Teilnehmer und deren
> Ausgangspegel ab. Ich würde hier eher die Entkopplung über Dioden (mit
> einem Pulldown-Widerstand) ansetzen:
> TX1 ---|>|--+----- TX-Out
>             |
> TX2 ---|>|--+
>             |
> TX3 ---|>|--+
>             |
>             -
>            | |
>            | |
>             -
>             |
>            GND
> Oder halt über handelsübliche OR-Gatter...

Mir ist klar, dass der Beitrag alt ist. Aber könnte mir bitte jemand 
erklären welche Funktion die Dioden an der Stelle erfüllen. Finde den 
Aufbau sehr interessant, nur verstehe leider nicht warum man die Dioden 
braucht.

Vielen Dank
#5963190
Lesenswert?

Markus E. schrieb:
> Mir ist klar, dass der Beitrag alt ist. Aber könnte mir bitte jemand
> erklären welche Funktion die Dioden an der Stelle erfüllen.

Das ist ein Wired-AND, also eine UND-Veknüpfung.

Beitrag "Re: 3 Mikrocontroller, 1 UART"

Erstmal ist die Polarität der Dioden falsch. So ist es korrekt.
1
            VCC
2
             |
3
             -
4
            | |
5
            | |
6
             -
7
             |
8
 TX1 ---|<|--+----- TX-Out
9
             |
10
 TX2 ---|<|--+
11
             |
12
 TX3 ---|<|--+

Im Ruhezustand haben alle TX-Ausgänge HIGH-Pegel (Stop Bit). Fängt einer 
an zu senden, sendet er ein Start-Bit mit LOW. Das zieht über eine Diode 
den Ausgang auf LOW. Das HIGH der anderen Sender stört dabei nicht, die 
Dioden sperren (HIGH an Kathode, LOW an Anode). Wenn der Sender fertig 
ist, geht auch er wider auf HIGH. Sprich, LOW wird immer aktiv 
(dominant) über einen TX-Ausgang und eine Diode erzeugt, high passiv 
(rezessiv) über den Pull-Up Widerstand. Das ist wie ein Open Drain Bus 
bei I2C, nur hier mit normalen, Push-Pull Ausgängen und Dioden 
emuliert.

https://www.mikrocontroller.net/articles/Ausgangsstufen_Logik-ICs
Gast #5963195
Lesenswert?

Markus E. schrieb:
> Aber könnte mir bitte jemand erklären welche Funktion die Dioden an der
> Stelle erfüllen.

Die Dioden dienten zur Entkopplung der High-Pegel. Damit können die 
Ausgänge (Tx) keinen High-Pegel mehr liefern aber sehrwohl einen 
Low-Pegel. Der High-Pegel kommt jetzt nur noch vom gemeinsamen Pull-Up 
Widerstand. Der Ruhepegel bei RS232 ist High. Wenn jetzt eine 
Schnittstelle sendet und denn Bus auf Low zieht, braucht deren Ausgang 
nur den Strom für den Pull-Up Widerstand zu ziehen, die High-Pegel der 
anderen Ausgänge sind Dank Dioden entkoppelt da diese in Sperrichtung 
liegen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren