Forum: Mikrocontroller und Digitale Elektronik Ports terminieren


von Rainer V. (a_zip)


Lesenswert?

Hallo, ich will zwischen 2 Controllern eine Kommunikation machen und 
zwar mit Bit-Bang... Echt simpel. Damit die Datenleitung und die "Clock" 
einigermassen niederohmig sind, will ich beide Leitungen zwischen den 
Controllern jeweils mit 1KOhm gegen Masse/Gnd abschließen. Wer wann 
sendet oder empfängt macht die Software. Frage, ist das gut so oder 
überflüssig?  Oder machen mir die Controller beim Hochfahren nach Reset 
da Probleme?
Gruß Rainer

von Stefan F. (Gast)


Lesenswert?

Bidirektionale Kommunikation würde ich mit einem I²C Bus machen. Das 
kann man per Bitbanging tun. Besser sind aber Mikrocontroller mit 
entsprechenden Hardware Schnittstellen weil diese auch Filterschaltungen 
gegen Störungen bieten.

I²C verwendet im Gegensatz zu deinem Entwurf Pull-Up Widerstände. Hat 
den Vorteil, dass sich die Kommunikationspartner nicht gegenseitig 
kaputt machen, wenn sie mit einem Partner "reden", dessen 
Stromversorgung noch aus geschaltet ist. Diese Pull-Up Widerstände sind 
typischerweise so ausgelegt, dass etwa 1-2mA fließen. Zum Beispiel

4,7kΩ bei 5V
2,2kΩ bei 3,3V

An welche Leitungslängen und Taktfrequenzen dachtest du?

I²C Spezifikation: https://www.nxp.com/docs/en/user-guide/UM10204.pdf

von Wolfgang (Gast)


Lesenswert?

Rainer V. schrieb:
> Oder machen mir die Controller beim Hochfahren nach Reset
> da Probleme?

Tun sie. Wenn ein Controller bereits Versorgungsspannung hat und deine 
Leitung auf High zieht, während der andere noch spannungslos ist, wird 
der Ausgang des ersten über eine Eingangsschutzdiode des zweiten 
kurzgeschlossen und es werden sämtliche Maximalwerte für den Strom 
gerissen.

von Test (Gast)


Lesenswert?

Warum willst du terminieren? Was erhoffst du dir davon. Bei I2C oder LIN 
gibt es einen Pull-up-Widerstand und jeder Teilnehmer zieht den bei 
Aktivitäten herunter. So kann nie der Zustand entstehen in dem ein 
Teilnehmer den Bus high treibt während der andere ihn low treibt (das 
wäre ein Kurzschluss) da der Bus ja von den Teilnehmern nur low 
getrieben werden kann.

Bei CAN und anderen differentiellen Übertragungsverfahren dient der 
Widerstand der Verhinderung von Reflexionen (Stichwort 
Wellenwiderstand). Zwischen 2 Mikrocontrollern würde ich SPI oder UART 
nutzen. Dort sind diese Widerstände sinnlos (da ordinäre 
Push-pull-Treiber an den Ausgägen). Wenn du Probleme mit den Signalen 
(Leitungslänge) dann würde ich auf RS422 umstellen.

von EAF (Gast)


Lesenswert?

Test schrieb:
> RS422

RS485

von A. S. (Gast)


Lesenswert?

Rainer V. schrieb:
> zwar mit Bit-Bang... Echt simpel.

Ist nicht simpel. Aber lehrreich, also nur zu.

> Damit die Datenleitung und die "Clock"
> einigermassen niederohmig sind,

Sind sie auch so. 20mA@ 5V sind deutlich kleiner.

> will ich beide Leitungen zwischen den
> Controllern jeweils mit 1KOhm gegen Masse/Gnd abschließen.

Das nennt sich pull down und ist ok, 10k an jedem Ende reichen auch.

Pulldown hat den Nachteil, dass es von Kabelbruch nicht unterscheidbar 
ist. Aber zum lernen egal.

von Einer (Gast)


Lesenswert?

Rainer V. schrieb:
> will ich beide Leitungen zwischen den
> Controllern jeweils mit 1KOhm gegen Masse/Gnd abschließen.

Viel wichtiger ist ein Serienwiderstand in jeder Verbindung. Damit 
verhinderst Du Beschädigungen falls die Pins der Controller beide als 
Ausgang fungieren und gegenteilige Pegel haben.

Vom Wert mal mit 4,7 Kiloohm starten. Wenn die Geschwindigkeit nicht 
hoch ist, die Verbindung nicht zu lang, etc., kannst Du auch höher 
gehen, oder eben im Zweifel niedriger.

Am schnellsten geht es für Dich einfach ausprobieren, und mit dem Oszi 
anschauen, wie die Pegel an den Eingängen der Controller aussehen.

Einfach ein wenig experimentieren. Solang Du noch lernst, nicht unter 1 
Kiloohm Serienwiderstand gehen, würde ich Dir empfehlen.

von EAF (Gast)


Lesenswert?

Ich finde es erstaunlich....
Es gibt derzeit dutzende von Schnittstellen, die auf allen Ebenen gut 
durchdefiniert sind.

Und jetzt muss wieder eine neue Erfindung daherkommen.

Da frage ich mich: Warum?
Oder: Was soll die neue Erfindung besser können?


Vielleicht sind die Anderen ja zu kompliziert?
OK, aber wieso ist eine eigene Erfindung dann einfacher?


Gut...
Dem Eingangs Posting entnehme ich, dass der TO, in Sachen Kommunikation 
zwischen µC, nicht sattelfest ist.
Darum wage ich zu behaupten, dass die Beschäftigung damit sehr viel Sinn 
macht. Auch die "Erfindung" von was neuem, mit all seinen Problemen und 
Irrtümern. Es kann Lehrreich sein.

Aber im harten Feldeinsatz, wird man doch immer auf was bewährtes 
zurückgreifen, und sei es auch nur wegen der Stabilität und 
Kompatibilität.

von Bauform B. (bauformb)


Lesenswert?

EAF schrieb:
> Es gibt derzeit dutzende von Schnittstellen, die auf allen Ebenen gut
> durchdefiniert sind.
> Und jetzt muss wieder eine neue Erfindung daherkommen.
> Da frage ich mich: Warum?
> Oder: Was soll die neue Erfindung besser können?

Zum Beispiel funktioniert sie ohne spezielle, durchdefinierte Hardware. 
Ein bis zwei Pins, die sonst nichts können, reichen auch.

> Vielleicht sind die Anderen ja zu kompliziert?
> OK, aber wieso ist eine eigene Erfindung dann einfacher?

Weil es seine eigene ist? Die er zu 100% versteht? Die genau (nur) das 
macht, was er braucht? Für die er keine fremde Hardware austricksen 
muss? Für die man ihm keine Library aufschwatzt die er dann erst 
debuggen muss?

> Aber im harten Feldeinsatz, wird man doch immer auf was bewährtes
> zurückgreifen, und sei es auch nur wegen der Stabilität und
> Kompatibilität.

Wenn man Kompatibilität braucht, macht man das natürlich. Aber beim 
ersten Mal ist I2C auch nicht bewährt und stabil, wenn du es noch nie 
benutzt hast.

von EAF (Gast)


Lesenswert?

Bauform B. schrieb:
> Aber beim
> ersten Mal ist I2C auch nicht bewährt und stabil, wenn du es noch nie
> benutzt hast.

Das Argument ist irgendwie unzulässig.....
Denn man kann mit jeder Schnittstelle Mist bauen, wenn man sich nicht 
für die Doku/Prinzipien interessiert.
I2C ist da keinesfalls eine Ausnahme.


Die anderen Argumente sind auch recht zweifelhaft.
Oder meinst du, dass jemand, welcher mit einem Pulldown terminieren 
möchte, in absehbarer Zeit, eine stabile/robuste Schnittstelle 
entwickeln wird?


Wie schon gesagt:
In Sachen Erkenntnisgewinn, habe ich keinerlei Einwände.
Z.B. könnte man sich das OSI Schichtenmodell als Orientierungshilfe an 
die Wand tackern.

--

Leider hören wir nichts zu Taktfrequenz, Spannungen, Entfernungen, µC 
Type usw., als wenn das egal wäre.

von Einer (Gast)


Lesenswert?

EAF schrieb:
> Z.B. könnte man sich das OSI Schichtenmodell als Orientierungshilfe an
> die Wand tackern.

Für was? Um ein paar Bytes zwischen 2 Mikrocontroller auszutauschen?

Was für ein sinnentleertes Ansinnen!

von Rainer V. (a_zip)


Lesenswert?

Danke für die Anregungen. Es geht mir rein ums Spielen...Die üblichen 
diversen Schnittstellen sind mir bekannt. Der Tip mit dem 
Serienwiderstand ist gut. Es geht übrigens um AVR, zB. 2313 und die 
Leitung wird ca. 10m lang sein, also von Zimmer zu Zimmer.
Gruß Rainer

von Thomas R. (analogfreak)


Lesenswert?

1) bei 10 m spielen Reflexionen eine Rolle. Daher Serienwiderstand an 
jeden Ausgang. Z.B. 80 Ohm wenn die uC-Ausgänge 20 Ohm Innenw. haben und 
das Kabel 100 Ohm Wellenw.

2) Schottky-Dioden zu den beiden Vcc, falls getrennt versorgt wird und 
die Vcc nicht gleichzeitig angehen, wie oben schon angemerkt wurde

von Stefan F. (Gast)


Lesenswert?

Rainer V. schrieb:
> Es geht übrigens um AVR, zB. 2313 und die
> Leitung wird ca. 10m lang sein, also von Zimmer zu Zimmer.

Damit fällt I²C schon mal raus, ebenso UART ohne Transceiver.

Für solche Leitungslängen sind RS422 und RS485 gut. Dazu empfehle ich 
dir 
http://stefanfrings.de/mikrocontroller_buch/Einstieg%20in%20die%20Elektronik%20mit%20Mikrocontrollern%20-%20Band%202.pdf 
Kapitel 3.2 und Kapitel um, um einen ersten Überblick zu bekommen.

von Rainer V. (a_zip)


Lesenswert?

Ja danke Stefan...hab alle deine Sachen. Echt gut und bewundernswürdige 
Arbeit! Habe noch uralte Temperaturmodule, die ihre Werte über genau so 
eine einfache Schnittstelle rausschieben...da wird überhaupt nichts 
terminiert. Ist aber auch nicht für Leitungslänge gedacht. 
Anbindungsbeispiel für Z80...
Gruß Rainer

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.