Ich möchte eine Schaltkarte an einen AVR anschliessen. Da diese
Schaltkarte etwa 2 Meter entfernt vom AVR angebracht werden muss, suche
ich eine einfache Art der Anbindung... also ein serielles Interface, um
nicht dutzende Leitungen zwischen beiden Verlegen zu müssen. Der AVR ist
ein Mega8. Gibt es da bei SPI, TWI oder uart irgendwelche Probleme?
Welches wäre das zu bevorzugende? SPI hätte den Vorteil das ich dort
einfach seriell ladende Schieberegister einsetzen könnte.
Danke für eure Hilfen, frohe Weihnachten schonmal
Grüsse Thomas
Normalerweise hätte ich I2C vorgeschlagen, da es dort ohne großen
Aufwand schon IO-expander gibt über die man Ports setzen und lesen kann.
Nur 2 Meter ist natürlich schon recht viel, man müsste mal in die
Spezifikationen schauen, mit welchen Taktraten man I2C bei solchen
Kabellängen betreiben darf.
Sonst ist villeicht CAN auch eine Alternative.
Marc
Datenrate ist schwer zu sagen...ich schätze so etwa auf 1-10kBit/s.
Tendenziell eher weniger als mehr. Zu den Potentialdifferenzen: naja es
werden beide Karten seperat versorgt. Beide werden jedoch mit 5V
agieren, also sollten diese Differenzen vernachlässigbar sein. Beide 5V
Spannungen werden über Konstant-Spannungsregler aus 230V generiert. Ich
schwanke derzeit zwischen SPI und TWI. Die UART wäre eher zweite Wahl,
da zusätzliche Komponenten benötigt würden und auf die Baudrate wieder
stimmen muss.
Was spricht denn gegen eine "langsame" SPI?
Ob nun asynchrone Schnittstelle oder synchron. Das sollte ziemlich egal
sein.
Wenn mit EMV-Schnutz zu rechnen ist, symmetriert man das Signal einfach.
Man kann dem Ding dann auch noch eine Rückleitung verpassen, auf der die
gesendeten Signale zurückkommen.
Oder gibt es da ein Problem, das ich nicht sehe?
Das Schieberegister wurde vom Threadstarter ja selber schon
vorgeschlagen.
> Die UART wäre eher zweite Wahl, da zusätzliche Komponenten benötigt würden
Wenn ich zwischen den Zeilen richtig gelesen habe, stammt die
Schaltkarte ebenfalls von Dir (zu der hast Du wenig geschrieben) - das
folgere ich mal aus der Tatsache, daß Du zwischen verschiedenen
Schnittstellen wählen kannst...
Wenn dem so ist, kannst Du die UART ohne weitere Bauteile benutzen. Die
MAX232-Konverter werden meist nur benutzt, damit die UART zu den
PC-RS232-Spannungswerten kompatibel ist (höhere Spannung, auch negativ).
Tatsächlich kannst Du aber bei zwei Mikrocontrollern die UART direkt
verbinden.
...my 2cent:
Natürlich hast Du bei der UART und der SPI den Vorteil des
unidirektionalen Betriebs - kannst also die jeweiligen Leitungen z.B.
niederohmig auslegen und so mit wenigen (Treiber-)Transistoren die
Reichweite einfach erhöhen.
Bei der TWI/I2C ginge das nicht so einfach.
@fieser Rahul (auch Oskar genannt) (Gast)
> Was spricht denn gegen eine "langsame" SPI?
Du8 kannst zwar die TaktFREQUENZ runtersetzten, nciht aber die
ANSTIEGSZEIT der IO Pins. Und das ist es, was EMV und andere Problem
macht.
> Oder gibt es da ein Problem, das ich nicht sehe?
Ja, siehe oben.
> Das Schieberegister wurde vom Threadstarter ja selber schon> vorgeschlagen.Antwort
Das geht schon, wenn man ein paar Kleinigkeiten beachtet.
Beitrag "8 MHz SPI über 75cm Flachbandkabel?"
@antworter
> Wenn dem so ist, kannst Du die UART ohne weitere Bauteile benutzen. Die> MAX232-Konverter werden meist nur benutzt, damit die UART zu den> PC-RS232-Spannungswerten kompatibel ist (höhere Spannung, auch negativ).
Dann isses aber elektrisch gesehen das gleiche wie SPI, nit nahezu den
gleichen Problemen.
> Tatsächlich kannst Du aber bei zwei Mikrocontrollern die UART direkt> verbinden.
Yep.
> unidirektionalen Betriebs - kannst also die jeweiligen Leitungen z.B.> niederohmig auslegen und so mit wenigen (Treiber-)Transistoren die> Reichweite einfach erhöhen.
AHHH!!!! STOP.
Die normalen IO Pins haben mehr als genug Power, um locker 10m Kabel zu
überbrücken. Eigentlich haben sie für sowas viel zu viel
Anstiegsgeschwindigkeit, das macht eher Probleme als dass es sie
verhindert.
MfG
Falk
@antworter
Kleines Mädchen? ;-)
Bis du EMV-Fachnman?
Reden wir hier über ein professionelles Massenprodukt, das härteste
EMV-Normen erfüllen muss?
Die Kapazität bring den uC nicht um. Serienterminierung dran und gut.
Dan sinds fast astreine Signale. Wers nicht glaubt solls ausprobieren.
Aber bitte entweder mit Flachbandkabel mit Masseader oder Twisted Pair
mit halbwegs 100 Ohm.
Das passt schon.
MfG
Falk
@falk:
Keulenschwingender Höhlenbewohner ? ;-)
>...solls ausprobieren. Aber bitte entweder> Flachbandkabel mit Masseader oder> Twisted Pair mit halbwegs 100 Ohm...
Erst allgemein zu sagen, daß es geht, um dann die Anwendung/Realisierung
drastisch einzuschränken hilft Thomas Winkelmann sicher nicht weiter.
Meine Lösung kommt auch mit Klingeldraht klar, kostet ca 30cent mehr und
sorgt für eine entspanntere Anwendung.
....man muß kein EMV-Profi sein (was ich nicht bin), um den Sinn eines
kleinen Leitungstreibers bei 10m Kabellänge einzusehen
> Zu den Potentialdifferenzen: naja es> werden beide Karten seperat versorgt. Beide werden jedoch mit 5V> agieren, also sollten diese Differenzen vernachlässigbar sein. Beide 5V> Spannungen werden über Konstant-Spannungsregler aus 230V generiert.
In dem Falle hast du gute Chancen das du Potentialdifferenzen hast. Je
nach Qualtaet deines Trafos oder Schaltnetzteil. Wenn du eine
Steckverbindung zwischen beiden Geraeten hast waere es von Vorteil wenn
Masse sich zuerst verbindet. Vielleicht kannst du ja ein USB oder SATA
Kabel nehmen.
> Ich> schwanke derzeit zwischen SPI und TWI. Die UART wäre eher zweite Wahl,> da zusätzliche Komponenten benötigt würden und auf die Baudrate wieder> stimmen muss.
Die Wahl des Busprotokolls ist nicht so entscheidend. Wichtig sind die
Bustreiber. Ich wuerde dir mindestens einen MAX232 empfehlen. Den kannst
du aber natuerlich auch fuer SPI verwenden wenn du den Takt niedrig
genug haelst. Lediglich I2C/TWI ist schlecht weil das Protokoll
bidirectional ist.
Da du aber auf beiden Seiten sowieso eine eigene Stromversorgung hast
ist es vermutlich einfacher und billiger eine Stromschleife mit
Optokoppler zu trennen.
Alles andere kann lange funktionieren, muss es aber nicht.
Olaf
Also bevor ich den Überblick verliere: Falk was wäre dein Vorschlag?
Sorry wenn ich das so sage, aber du hast jetzt irgendwie sowohl SPI als
auch UART kritisiert...demnach würdest du TWI nehmen? Oder wie darf ich
das verstehen? Soweit mir bekannt ist sendet TWI mit 100,400 kBit/s oder
noch irgendwie nem höheren Wert, was viel zu hoch wäre auch wenn ich für
Adressierung und Ack dort etwas mehr veranschlagen müsste. Sind die
Anstiegszeiten bei einem SPI im kHz Bereich wirklich so gravierend? rein
Theoretisch könnte ich diese in einem uC auf der Slaveplatine doch auch
x-fach überabtasten. Das Kabel sollte übrigens kein Flachbandkabel
sein...irgendwas rundes 2,4 oder x adriges halt, je nach Bus. Ich habe
nur keine Vorstellung was man sich mit soeiner "2m-Antenne" einfängt.
@ antworter
> Keulenschwingender Höhlenbewohner ? ;-)
Manchmal. ;-)
> Erst allgemein zu sagen, daß es geht, um dann die Anwendung/Realisierung> drastisch einzuschränken hilft Thomas Winkelmann sicher nicht weiter.
Was heiss denn hier drastisch? Nur weils nicht mit ner rostigen Kette
funktioniert?
> Meine Lösung kommt auch mit Klingeldraht klar, kostet ca 30cent mehr und> sorgt für eine entspanntere Anwendung.
Warum wenns auch ohne geht?
> ....man muß kein EMV-Profi sein (was ich nicht bin), um den Sinn eines> kleinen Leitungstreibers bei 10m Kabellänge einzusehen
Was willst du denn mit nochmehr Leistung?
MFG
Falk
@ Thomas Winkelmann
> Also bevor ich den Überblick verliere: Falk was wäre dein Vorschlag?> Sorry wenn ich das so sage, aber du hast jetzt irgendwie sowohl SPI als> auch UART kritisiert...demnach würdest du TWI nehmen? Oder wie darf ich
Nein, ich habe mich zu UART (also RS232 mit MAX232) gar nicht geäussert.
;-)
Nun, diese Variante geht auf jeden Fall.
SPI kann auch gehen, wenn man ein paar kleine Randbedingungen beachtet.
> das verstehen? Soweit mir bekannt ist sendet TWI mit 100,400 kBit/s oder> noch irgendwie nem höheren Wert, was viel zu hoch wäre auch wenn ich für> Adressierung und Ack dort etwas mehr veranschlagen müsste. Sind die> Anstiegszeiten bei einem SPI im kHz Bereich wirklich so gravierend? rein
Sie sind genausoschnell wie bei 1 MHz, die IOs werden deshalb nicht
langsamer. Und wie bereits in anderen Threads vorgerechnet habe, gibt es
bei ca. 10ns Anstiegszeit (und das machen die IOs) bei ab. ca. 30cm
Probleme mit Reflexionen. Also braucht man ne Serienterminierung.
> Theoretisch könnte ich diese in einem uC auf der Slaveplatine doch auch> x-fach überabtasten. Das Kabel sollte übrigens kein Flachbandkabel
Du brauchst das Fahrrad nicht neu zu erfinden. Das Überabtasten macht
bereits der UART.
Nimm MAX232 und alles ist in Butter.
MFG
Falk
P.S. I2C/TWI geht auch, ist aber vom Protokoll aufwendiger.
> i2c hätte dann doch ab 30cm die gleichen reflektionen oder nicht?
Jain. Die LOW-HIGH Flanke wird ja durch den Pull-up Widerstand
vollzogen, das ist recht langsam. Die HIGH-LOW Flanke machen die Open
Drain/Collecor Ausgänge der Teilnehmer. Idealerweise sind die auch nicht
superschnell. Allerdings ist I2C (wenn es spezifikationsgemäss aufgebaut
ist) relativ tolerant gegenüber kurzen Pulsen (50ns), die sollte der
Eingangsfilter schlucken.
MFG
Falk
Nimm doch das UART, dessen TXD-Signal Du über eine pnp-npn
Transistorserie pufferst und auf der Karte baust Du einen
PullUp-Widerstand nach 5V, sagen wir 270 Ohm. Somit hast Du kaum
Bauelementeaufwand, Deine Leitung drückt entsprechend Strom, ist
niederohmig und schnell. Du hast 1 Leitung + Masse, kann Klingeldraht
sein. An den PullUp hängst Du noch einen Serienwiderstand von 2-4 kOhm
Richtung RXD des empfangenden UARTs, um vor Spannungsspitzen geschützt
zu sein, die eventuell in das Kabel induziert werden. Auf die Weise
überbrücken wir hier 30 Meter fehlerfrei mit 19200 Baud. Mit 56 kBaud
haben wir das Ganze getestet, ebenfalls keine Probleme.
Laßt Thomas doch ganz stinknormale RS232-Treiber nehmen, vielleicht noch
mit ESD-festem Aufpreis, aber ohne 10ns hier, 2k-Pullup dort,
Klingeldraht und Fahrradkette. Wozu das ganze Gemurkse ?
Und wenn dann bei 2m Übertragungsstrecke all die Fehlerquellen
auftauchen, die hier an die Wand gemalt wurden, kann er immer noch auf
WLAN, Glasfiber oder Richtfunk ausweichen: für 2m wohlgemerkt !
> , TOSLINK wäre noch ´ne Möglichkeit: TOTX173 -> LWL -> TORX173.
Obwohl damit ja noch nicht da gravierende Problem des Netzanschlusses
gelöst wäre. Da empfehle ich dreifach geschirmte Netzleitung, wobei der
mittlere Schirm an die Fundamenterde angeschlossen wird :-)