mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik RS232 über eine Leitung


Autor: RS (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallöchen :-)

ist es möglich die RS232-Schnittstelle über nur eine Leitung zu 
realisieren?

Hat jemand sowas vielleicht schon programmiert?

Was muss man beachten? (sowohl Hardware als auch Software)


Ein Sensor soll über RS232 mit dem PC verbunden werden. Damit der Sensor 
nicht zu viele Verdrahtungen besitzt, soll die RS232-Interface über eine 
Leitung erfolgen.

Vielen Dank schon mal für die Hilfe

Autor: RS (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
das Bild habe ich vergessen...

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Halbduplex ist das Zauberwort.

MfG
Falk

Autor: Ekschperde (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zweidrahtmodem ist das Zauberwort :-)
Dann geht auch Duplex.

Autor: RS (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
für Halbduplex sorgt doch die Software oder nicht?

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ RS (Gast)

>für Halbduplex sorgt doch die Software oder nicht?

Teils. Die RS232 Treiber müssen das aber auch mitmachen (abschaltbarer 
Treiber).

MFG
Falk

Autor: RS (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
könnt Ihr mir mehr Infos geben, bitte?

Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aber nicht vergessen, die beiden Tx zu entkoppeln, sonst raucht es!

Ralf

Autor: RS (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
kann ich die Rx- und Tx-Leitungen einfach mitanander verbinden?

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@  RS (Gast)

>kann ich die Rx- und Tx-Leitungen einfach mitanander verbinden?

Nicht ohne weiteres.

http://para.maxim-ic.com/results.mvp?q=rs232&r=0&a...

MFg
Falk

Autor: RS (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
o man ich hasse das Leben, warum muss alles immer so kompliziert sein 
:'(

Autor: RS (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
kann mir jeman vielleicht Paar Tipps geben, wie die Softwareroutine 
aussehen könnte?

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Master und Slave sind auf Empfangen geschalten
Der Master schaltet auf senden
Der Master sendet seine Daten
Am Ende schaltet der Master wieder auf empfangen, z.B. durch den TXC 
Interrupt

Der Salve empängt die Daten und berechnet die Antwort
Der Slave schaltet auf senden
Der Slave sendet seine Daten
Am Ende schaltet der Slave wieder auf empfangen, z.B. durch den TXC 
Interrupt

Beginne am Anfang

MFg
Falk

P.S. Was ist daran so kompliziert?

Autor: RS (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
das komplizierte an der Sache ist, dass ich mir nicht vorstellen kann, 
wie ich mit NUR EINER LEITUNG einen Mikrokontroller mit dem PC verbinden 
kann.
Wenn ich da eine Idee hätte, würde ich die Software ohne große Probleme 
meistern, denke ich.

Autor: Michael G. (linuxgeek) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn die Frage gestattet ist: Worin besteht eigentlich der Gewinn? Ob 
nun eine oder zwei Leitungen, das ist doch kein nennswerter Unterschied, 
vor allem wenn Du ein Kabel verwendest...

Autor: RS (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
naja der Gewinn liegt zum Beispiel darin, dass es 4 adrige Kabel 
existieren und man nicht auf 5 adrige umsteigen möchte

Autor: Michael G. (linuxgeek) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Muss denn der Sensor ueberhaupt in beide Richtungen kommunizieren? 
Sprich, empfaengt er ueber den RS232-Link auch Steuersignale oder sendet 
er nur?

Autor: juppi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo

eine D und ein R gegen + auf beiden seiten zur entkopplung.
wurde vor 20 Jahren gemacht auch ohne Int.

MfG

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wie wär's denn einfach mit einem LIN-Treiber?
z.B. TJA1020 von NXP?
Gruß

Autor: RS (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Muss denn der Sensor ueberhaupt in beide Richtungen kommunizieren?
der Sensor antwortet auf die Steuersignale

>wie wär's denn einfach mit einem LIN-Treiber?
es ist ja auch so was wie LIN. Gibt es LIN auf RS232?

Autor: juppi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Thomas (Gast)

http://miredaktion.sv-www.de/imperia/md/upload/art...


fast das gleiche Prinzip!

MfG

Autor: RS (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hi,

ich bin's noch mal :-)..

Die Hardware funktioniert so weit ganz gut, aber ich habe ein kleines 
Problem mit der Software.

Und zwar ist es so, dass ich mehrere Bytes empfange und sie in eine 
Array speichere. Das Ende erkenne ich durch CR (carriage return ~ 0x0D). 
Klappt alles ganz gut. Aber bei der Auswertung habe ich keine gute 
Lösung.

Ich will, je nachdem welche Bytes ich erhalten habe, die entsprechende 
Antwort zurücksenden.
D.h. wenn ich so was erhalte:
0x21
0x20
0x23
0x0d (für das Ende)

will ich antworten mit:
0x45
...

Die Anzahl der Bytes die ich erhalte, sind unterschiedlich (von 0 bis 
10).

Am liebsten hätte ich das ganze mit der SWICTH-Anweisung programmiert, 
aber bei switch-Anweisung kann ich nur auf einen Character- oder 
Integer-Wert abfragen.
Mir fällt an dieser stelle nur die if-Anweisung mit strcmp() ein:

//empf: Array für die empfangene Characters
//sx eine Liste von soll-Werten

x=strcmp(empf,s1);
if( !x )
{
  //beide gelich, tu was
}

x=strcmp(empf,s2);
if( !x )
{
  //beide gelich, tu was
}

x=strcmp(empf,s3);
if( !x )
{
  //beide gelich, tu was
}

x=strcmp(empf,s4);
if( !x )
{
  //beide gelich, tu was
}
.......

Gibt es eine bessere Methode?? Es muss doch bestimmt was einfacheres 
geben..

Danke
RS

Autor: RS (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hmm.. hab immer noch keine andere Lösung entdeckt :-D

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
RS wrote:
> Hallöchen :-)
>
> ist es möglich die RS232-Schnittstelle über nur eine Leitung zu
> realisieren?

Ja, überhaupt kein Problem.

Wenn man sich mal die Eingangsdaten eines RS232 Chips ansieht (z.B. 
MAX232), fällt auf, daß die vollkommen TTL-kompatibel sind.

Ich benutze daher ne wired OR Schaltung in meinem Bootloader:

http://www.mikrocontroller.net/attachment/29691/fboot18.zip

Beitrag "UART Bootloader ATtiny13 - ATmega644"

Der PC sendet über den Widerstand 4,7k und der AVR sendet mit open drain 
Ausgang, d.h. strong High für Low und tristate für High (RS232 Pegel ist 
ja invertiert).

Damit der PC weiß, was ist sein Echo und was wurde wirklich vom AVR 
gesendet, zählt er die Bytes einfach mit.


Peter

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.