AVR <-> RS232 mit voller Ansteuerung

JOJO150272

Mitglied
23. März 2008
30
1
8
Sprachen
Hallo,

habe gerade mal ein kleineres aber für mich größeres Prob wo ich dringend Hilfe brauche

Ich habe ein Gerät welches per RS232 am PC angeschlossen war. Jetzt möchte ich statt des PC’s einen AVR nehmen um die Daten aufzuzeichnen. Also schnell einen AVR (AMega128P4) mit MAX232 mittels Null-Modem-Kabel an das Interface angeschlossen und da hatte ich jetzt das Problem :confused: . Ich benötige eine voll belegte RS232 Schnittstelle an meinem AVR.

Hier mal die Belegung des Steckers des Interface:

Stecker 9pol. Bezeichnung Signal

DSub Pin 2, -> PC Receive, Rx
DSub Pin 3, <- PC Transmit, Tx
DSub Pin 4, <- PC Data terminal ready (PC bereit), DTR
DSub Pin 5, GND, GND
DSub Pin 6, -> PC Data set redy (Interface bereit), DSR
DSub Pin 7, <-PC Request to send (PC will senden), RTS
DSub Pin 8, -> Clear to send (Interface sendebereit), CTS
DSub Pin 9, -> PC Ring Indicator (ankommender Anruf), RI

Pin 4 und Pin 6 sind verbunden.

Kann mir jemand von euch sagen wie ich es an meinen AVR anschließen kann???
Der MAX232 hat ja nur 4 Kanäle für RX, TX, RTC, CTS. Was mache ich mit den anderen Signalen???

Gruß Jörg, der schon mal Danke sagt :wavey:
 
Hallo Jörg,

das der Stecker voll belegt ist hat noch nicht viel zu sagen ;)

Meißtens kommst du mit GND, TxD, RxD schon aus. Es gibt wenige Geräte
die auch noch RTS/CTS benötigen und noch weniger die zusätzlich noch
DSR/DTR brauchen. Ich würde mir also erst mal keine Gedanken machen.
Notfalls kann man die Signalleitungen für den Hardware-Handshake zum
Gerät zurückbrücken und somit vorgaukeln das alles in Ordnung ist :D
Bei BASCOM hab ich auch schon ne Option gesehen bei der man zusätzlich
RTS/CTS steuern kann. das hab ich bei meinem Mega128-Testboard auch
vorbereitet aber noch nie gebraucht.

RI brauchst du sowieso nur für Modems.

Was ist denn das für nen Gerät was du da an den Atmel anklemmen willst ?

Wenn du nur analysieren willst was das Gerät zum PC geschickt hat, dann
kann man das auch einfacher machen. Du legst einfach GND und TxD
(die Sendedaten des Gerätes) auf einen Stecker zu einer weiteren Seriellen.
Also einfach parallel die Daten abgreifen. Das geht super und du mußt nichts
programmieren. Die Schnittstelle zum mitlesen muß nur von der Baudrate
identisch eingestellt sein und das Handshaking komplett abgeschaltet sein
damit sie immer Daten empfängt.

Das hab ich früher relativ oft gemacht um mal zu sehen wo da was bei der
seriellen Kommunikation nicht paßt.

Gruß
Dino
 
Hallo Dino,

erstmal Danke für die schnelle Antwort :ciao: .

Meißtens kommst du mit GND, TxD, RxD schon aus. Es gibt wenige Geräte
die auch noch RTS/CTS benötigen und noch weniger die zusätzlich noch
DSR/DTR brauchen. Ich würde mir also erst mal keine Gedanken machen.
Notfalls kann man die Signalleitungen für den Hardware-Handshake zum
Gerät zurückbrücken und somit vorgaukeln das alles in Ordnung ist
Bei BASCOM hab ich auch schon ne Option gesehen bei der man zusätzlich
RTS/CTS steuern kann. das hab ich bei meinem Mega128-Testboard auch
vorbereitet aber noch nie gebraucht.

RI brauchst du sowieso nur für Modems.

Tja so kenne ich es auch, aber hier benötige ich leider auf jeden Fall TxD, RxD, RTS, CTS und RI. DSR und DTR sind im Gerät intern gebrückt und sind in der Schaltung integriert. Da die RS232 galvanisch getrennt sind, glaube ich das ich die nicht auf der AVR Seite nur brücken kann, da ja dann keine Spannung ankommt.

Was ist denn das für nen Gerät was du da an den Atmel anklemmen willst ?

Es ist das Interface meines Gebäude Bus.

Wenn du nur analysieren willst was das Gerät zum PC geschickt hat, dann
kann man das auch einfacher machen. Du legst einfach GND und TxD
(die Sendedaten des Gerätes) auf einen Stecker zu einer weiteren Seriellen.
Also einfach parallel die Daten abgreifen. Das geht super und du mußt nichts
programmieren. Die Schnittstelle zum mitlesen muß nur von der Baudrate
identisch eingestellt sein und das Handshaking komplett abgeschaltet sein
damit sie immer Daten empfängt.

Das hab ich früher relativ oft gemacht um mal zu sehen wo da was bei der
seriellen Kommunikation nicht paßt.

Nein, ich möchte Daten Senden und empfangen, also muss ich zumindest das Handshaking im AVR nachbilden. Was ich aber mit dem RI, DSR und DTR mache habe ich leider gar keine Ahnung.

Gibt es eine Beschaltung für einen AVR um eine Vollwertige PC-RS232 nachzubilden???

Gruß Jörg
 
Hallo,

hier noch mal die Innenbeschaltung der RS232 Schnittstelle.

Gruß Jörg :ciao:
 

Anhänge

  • RS232-1.jpg
    RS232-1.jpg
    92,3 KB · Aufrufe: 27
  • RS232-2.jpg
    RS232-2.jpg
    37 KB · Aufrufe: 25
Hallo Werner,

danke für den Link. Sehr gut, habe aber leider keine Ahnung wie ich es zum AVR bekomme.

Gruß Jörg
 
Hallo Jörg ,

hier hab' ich mal die Verdrahtung für eine optisch isolierte Schnittstelle beschrieben < HIER >.
Da steht auch, wie man DTR und RTS beschalten muss, um PC-seitig +/- 9 bzw. 12 Volt auf der Schnittstelle zu realisieren.

LG Werner
 
Hallo Werner,

danke für den Link. Das werde ich in Zukunft für eigene Schaltungen verwenden.

Aber hättest Du auch eine Idee wie ich eine Ansteuerung für den AVR machen könnte??? Die Schaltbilder sind aus dem Gerät woran ich nichts ändern kann. Mir fehll eine Idee wie ich an die vorhandene Schnittstelle meinen AVR anbinden könnte??? Für TxD, RxD, RTS und CTS kann ich den MAX232 ja verwenden, aber wie mache ich es dann mit den anderen Signalen???

Gruß Jörg, der dringend Hilfe braucht
 
Hallo Jörg,

der Witz an einer isolierten Schnittstelle ist, dass du praktisch gar nichts (zusätzlich) machen mußt.
Wenn ich es richtig interpretiere, dann ist in deinem Bild "Empfangsumsetzung" folgendes zu sehen < Belegung der Pins > :

1.) DSub Pin6/4: sind zusammen verbunden (DTR/DSR) und bilden die positive Spannung (also DTR) auf Empfängerseite (VCC2).
2.) DSub Pin 7 (RTS) unterstützt die positive Versorgungsspannung
3.) Die Schaltung um den Transistor bildet einen virtuellen Nullpunkt (GND2).
4.) DSub Pin 8/2 (invertierende Schmidt-Trigger) könntest du direkt verbinden, also RxD=CTS
5.) DSub Pin 9 (RI) muss entsprechend fest auf der negativen Versorgungsspannung liegen.



Soweit zur Empfängerseite.
Werner
 
Also, wenn dein AVR (Sender) ein Signal an die Schnittstelle schicken muss, musst du nur "Strom durch die LED (Pin2/3) des Optokopplers schicken.
Wie gesagt, das Signal auf Empfängerseite wird durch die Schmidt-Trigger invertiert.


LG
Werner
 
Die Senderseite (Dein Gerät als Sender) ist ja einfach:
da musst du nur das TXD-Signal auf SubD-Pin3 legen (SubD Pin 5 wäre GND). Etwas verwirrend wäre für mich, dass es als GND_PC bezeichnet ist, was natürlich für eine galvanische Isolation doof wäre.

LG
Werner

P.S. Willst du die Spannungsversorgung auf AVR-Seite erledigen und über das Kabel zu deinem Gerät leiten?

P.P.S. zur Empfängerseite: die Grounderzeugung mit dem pnp-Transistor erscheint mir ungewöhnlich. Könnte das daran liegen, dass der Optokoppler 6N139 nur eine relativ kleine Collektor/Emitter-Spannung verträgt. Bei einer Norm-RS232 wären das immerhin +/- 12 Volt??
 
Hallo Werner,

hier kommt die Hilfe ... ;) (hoffe ich mal)
Also wenn ich mir die Schaltpläne mal ansehe dann hat dein Gerät lediglich
TxD und RxD (also Pin2 und Pin3 des SubD) und natürlich noch GND (Pin5).
Die restlichen Pins werden nicht für Handshaking verwendet sondern sie
werden zweckentfremdet um die optisch isolierte Seite der Schnittstelle
mit Spannung aus dem PC zu versorgen. MNicht mehr und nicht weniger.
Du mußt also lediglich die Pins entsprechend mit Spannung versorgen um
die PC-Seitige Elektronik zu versorgen.

Pin1 - nix -
Pin2 - Sendedaten
Pin3 - Empfangsdaten
Pin4 - +Vcc2 Versorgung
Pin5 - GND (was den sonst ;) )
Pin6 - +Vcc2 Versorgung
Pin7 - +Vcc2 Versorgung
Pin8 - Parallel mit Sendedaten (dem PC Handshaking vorgaukeln)
Pin9 - RI mit Empfangsdaten verbunde wegen Versorgung mit negativer Spannung

Gruß
Dino
 
Hallo Werner,

entschuldige bitte, aber scheinbar habe ich mich falsch ausgedrückt.

Die beiden Bilder zeigen die Innenbeschaltung des Interface. Ich kann nur an den SUB D 9pol Stecker. Die Optokoppler sind im Bus Interface. Mir steht also als Anschluss nur der SUB D Stecker zur Verfügung.

Ich möchte nun über den SUB D-Stecker (Bus Interface) mittels eines Nullmodem-Kabels zum MAX232 meines ATMega 128p4. Bis jetzt habe ich an dem ATMega einen MAX232 wo die Signale RxT und TxD angeschlossen sind.
Ich könnte über die beiden freien Kanäle des MAX232 auch die Signale RTS und CTS anschliessen. So weit habe ich es verstanden. Aber wie mache ich es mit den anderen Signalen??? Durch die Spannungs Level kann ich die Signale ja nicht direkt an den RS232 anschliessen, oder ???

Gruß Jörg:ciao:
 
Hallo Dino :p ,

warum einfach, wenn's auch kompliziert geht :ciao: .
Genau so isses :p .

Normaler Verkehr über TxD/RxD und der Rest ist Spannungsversorgung.


Liebe Grüße
Werner

P.S. Das kam bei mir aber erst NACH der Analyse 'raus :rap:
 
Hallo Dino,

ok habe ich fast oder zumindest so halb verstanden :stupid: .

Mit RxD/CTS, TxD/RI ist es mir jetzt klar :stupido2: , aber welches Spannungs-Level nehme ich für Vcc2 ???

Da ich ja auf das Spannungslevel -12 und +12 der RS232 kommen muss.

Gruß Jörg
 
Hi Jörg,

Mit RxD/CTS, TxD/RI ist es mir jetzt klar :stupido2: , aber welches Spannungs-Level nehme ich für Vcc2 ???

Da ich ja auf das Spannungslevel -12 und +12 der RS232 kommen muss.
na was meinst du wohl ?
+Vcc2 (plus Vcc2) ...
Und an einer seriellen Schnittstelle liegen Signale von +9..12V und -9..12V an.
Die Signale versorgen die Schaltung der Schnittstelle deines Gerätes ...
Fällt der Groschen ? :D

Eingangsseitig versteht die Schnittstelle am PC glaube ich so ab +/-3V
die Signale als im sauberen Bereich. Ist also einiges an Luft.
Pack die Versorgungspins doch einfach direkt aus den Wandlern des
MAX232 (also +V und -V des Wandlers). Für den Stromverbrauch würde ich
beim MAX232 aber Elkos mit 4,7µF an den Wandlerpins benutzen.

Gruß
Dino
 
Hallo Dino,

da bin ich mir nicht wirklich sicher ob der Groschen gefallen ist ???

Ich hätte es so versucht: +5V -> T2in -> T2out -> Vcc2

Ab ich verstehe nicht ganz wie ich das mit den Wandler Pins machen soll???


Gruß Jörg
 
Hi Jörg,

schau mal hier < MAX232 > Pin 2 und Pin6; (die beiden EDIT) den unbenutzten (Ausgänge EDIT) Ausgang TxOut kannst du zusätzlich benutzen.

Jetzt musst du nur noch beachten, ob du ein Nullmodemkabel oder ein "1:1" Verlängerungskabel brauchst. Wäre gut, wenn du noch das Originalkabel hättest.


LG Werner
 
Hallo Werner,

das Orginal Kabel ist ein 1 zu 1 durchverbundenes RS232 Kabel. Es verbindet ja einen PC mit einem "Modem" Gerät.

Da werde ich eigentlich zumindest RxD und TxD kreuzen müssen, oder ???

Gruß Jörg
 
Hi Jörg,

klar, RXD auf einer Seite mit TXD auf der anderen Seite; musst du ein Layout für deine Elektronik machen? Falls ja, mach' die Drehung doch auf dem Layout.

Und beim MAX232 - denk daran, die Pegel werden invertiert:
+5V (oder nicht verbunden) -> T2In -> T2Out -> - UBat (ca. -10 Volt)


LG
Werner
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)