Hallo! Besteht die Möglichkeit über eine evtl. zusätzlich erforderliche externe Beschaltung und/oder Steuerleitungen 3 Mikrocontroller über 1 UART miteinander kommunizieren zu lassen? Gruß Max
Kommt darauf an... "horchen" können alle gleichzeitig, nur wer senden darf, darauf müssen die drei sich einigen. Wenn die µCs z.B. nur auf Anforderung senden, ist das kein Problem. Alternativ: Daisy-Chain.
Ja, wenn dir Halbduplex reicht und du bereit bist, mit allen Vor- und Nachteilen zu leben. Du kannst alle RX miteinander verbinden und die TX-Leitungen per Vorwiderstand an den "Bus" ankoppeln. Ist dann prinzipiell wie der 1-Wire-Bus von Maxim.
Eine möglichkeit wäre auch daisychain... Das du Daten in uc 1 schickst und der an u2 weitersendet usw. Alle in serie..
@ Max (Gast) >Beschaltung und/oder Steuerleitungen 3 Mikrocontroller über 1 UART >miteinander kommunizieren zu lassen? 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. MfG Falk
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?
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...
Mir kommt da gerade eine Idee! - Besser als Widerstände und Dioden: "Bus Buffer Gates", wie ein SN54HC125
@ 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
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
Volkmar Dierkes schrieb: > Ich würde hier eher die Entkopplung über Dioden (mit > einem Pulldown-Widerstand) ansetzen: Im Prinzip richtig, aber genau andersrum. Die Dioden umdrehen und den Widerstand nach Vcc schalten. Denn Rx/Tx sind im Ruhezustand "high".
Bertram schrieb: > Mir kommt da gerade eine Idee! - Besser als Widerstände und Dioden: > "Bus Buffer Gates", wie ein SN54HC125 Gibt einen Kurzen und undefinierte Pegel, wenn mehrere gleichzeitig senden.
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.
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
Markus E. schrieb: > Finde den Aufbau sehr interessant, nur verstehe leider nicht warum man > die Dioden braucht. Damit man trotz Push-Pull Ausgangsstufen eine wired-or Verknüpfung der Signale realisieren kann. Bei Open-Source Ausgangsstufen könnte man sich die sparen.
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
Wolfgang schrieb: > Damit man trotz Push-Pull Ausgangsstufen eine wired-or Verknüpfung der Nö, es ist Wired-AND. LOW ist dominant. >Bei Open-Source Ausgangsstufen könnte man sich >die sparen. Soso, Open Source Ausgangsstufen. Ich dacht immer, die gibt es nur in der Software . . .
:
Bearbeitet durch User
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.
Herzlichen Dank @Falk für die tolle Erklärung. Hat mir sehr geholfen es zu verstehen.
:
Bearbeitet durch User
Falk B. schrieb: > Nö, es ist Wired-AND. LOW ist dominant. Bei deiner Schaltung schon. Ich bezog mich auf diese: Volkmar D. schrieb: > Ich würde hier eher die Entkopplung über Dioden (mit > einem Pulldown-Widerstand) ansetzen:
Wolfgang schrieb: > Falk B. schrieb: >> Nö, es ist Wired-AND. LOW ist dominant. > > Bei deiner Schaltung schon. > Ich bezog mich auf diese: > > Volkmar D. schrieb: >> Ich würde hier eher die Entkopplung über Dioden (mit >> einem Pulldown-Widerstand) ansetzen: Welche beim UART nicht funktioniert. Jaja, der oberschlaue Wolfgang mal wieder.
Bring mal in Erfahrung ob Du bei allen 3 Controllern * den UART-TX Pin als Open-Drain konfigurieren kannst * der UART einen Single-Wire-Modus unterstützt (RX = TX). Wenn beides der Fall ist wird die Hardware ganz simpel.
GEKU schrieb: > Der Ruhepegel bei RS232 ist High. Nitpick: Der Ruhepegel bei UART ist high. Bei RS232 sind die Signale invertiert gegenüber UART, damit wäre das die negative Spannung...
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.