Forum: Mikrocontroller und Digitale Elektronik RS232 funktioniert nicht!


von Edwin (Gast)


Lesenswert?

Hallo,
Ich hab mir Gestern ein Adapterkabel fürs RN-Control gebastelt, welches 
ich jetzt eigentlich direkt am Computer (serielle Schnittstelle) 
anschliessen könnte und mit dem Print befehl Sachen ausgeben könnte.
Das Adapterkabel weiss ich das ich es richtig gebastelt habe und die 
Schaltung mit dem Pegelwandler MAX232 sollte auch funktionieren, denn 
die ist auf dem RN-control.

Nun meine Frage:
An was könnte es sonst noch liegen dass es nicht klappt? Auf dem 
Terminal von Bascom erscheint nichts! Der Code stimmt auch den hab ich 1 
zu 1 von einem Buch her kopiert. Die Baudrate ist auch eingestellt wie 
im Code und im Terminal.
Kann es sein das ich die falsche serielle Schnittstelle erwischt habe? 
Es hat ja zwei?
Oder an was sonst? Bitte um Hilfe!

Gruss
Edwin

von Thomas (kosmos)


Lesenswert?

Könnte am Win XP liegen. Da braucht man spezielle Porttreiber für ältere 
Programme die für DOS oder WIN98 ausgelegt sind.

von Edwin (Gast)


Lesenswert?

Hi,
Das versteh ich jetzt nicht? Ich hab windows XP. Was ist Dos? Und was 
ist WIN98?

Gruss

von Thomas (kosmos)


Lesenswert?


von Edwin (Gast)


Lesenswert?

Hallo
Danke für die links

Ich hab gleich nochmal eine Frage ob das so richtig sein kann:
Wenn ich jetzt mit dem Multimeter die Leitungen (GND, TX, RX) messen 
gehe, dann stell ich fest, dass wenn ich mit dem minus vom Multimeter zu 
GND gehe und mit dem plus vom Multimeter zu TX gehe, dann zeigt es mir 
eine negative Spannung an. Wenn ich es jetzt aber um drehe (minus zu TX, 
plus zu gnd) zeigt es mir eine normale (positive) Spannung an. Ist das 
normal? müsste es nicht umgekehrt sein?

Lieber Gruss

von Gast (Gast)


Lesenswert?

Das gehört genau so.
Du solltest dich zuerst mal mit den Grundlagen der Elektronik vertraut 
machen und danach noch mit den Pegeln auf der RS232.

von Edwin (Gast)


Lesenswert?

Aber ich denke Etwas mit dem Print befehl über RS232 wiederzugeben sei 
nicht so schwer...

Ich poste hier mal noch den Code:
$regfile = "m32def.dat"
$crystal = 16000000
$baud = 9600

Enable Interrupts
Programmstart
Print "Hello world"
wait 1
Goto Programmstart
end

von Karl H. (kbuchegg)


Lesenswert?

> Das Adapterkabel weiss ich das ich es richtig gebastelt habe

Warum weißt du das?

Wenn das Kabel angesteckt ist und beide Computer laufen (aber nichts 
auif der seriellen Schnittstelle tun): Hast du dann auf den beiden 
Daten-Leitungen einen negativen Pegel in Bezug zu GND?

> Die Baudrate ist auch eingestellt wie
> im Code und im Terminal.

Das ist nur die halbe Miete. Läuft dein µC auch mit der angegebenen 
Taktfrequenz?

> $crystal = 16000000

Du hast einen 16Mhz Quarz auf dem Board und der wird auch verwendet?
Hast du das kontrolliert?

von Hubert G. (hubertg)


Lesenswert?

Nimm aus der RN-Control den Mega16 heraus, steck in den Sockel zwischen 
RXD und TXD eine Drahtbrücke. Wenn du dann im Terminalprogramm auf 
deinem PC etwas eingibst, müsstest du es als Echo wieder zurückbekommen. 
Wenn das funktioniert weisst du das alles HW-mässig Ok ist. Dann kannst 
du den Fehler in der SW suchen.

von Thomas (kosmos)


Lesenswert?

RS232 macht aus 0V +12V und aus 5V -12V, dadurch hat man einen 
Spannungshub von 24V statt 5V was wesentlich störfester ist. Aber +-12V 
schaffen die wenigsten Treiber bzw. habe ich noch gar keinen erlebt der 
das geschafft hat, meistens liegen die um die 9-10V.

Wikipedia sagt folgendes: Für die Datenleitungen (TxD und RxD) wird eine 
negative Logik verwendet, wobei eine Spannung zwischen −3 Volt und −15 
Volt (ANSI/EIA/TIA-232-F-1997) eine logische Eins und eine Spannung 
zwischen +3 Volt und +15 Volt eine logische Null darstellt. Signalpegel 
zwischen −3 V und +3 V gelten als undefiniert.
Die oben angegebenen Spannungen beziehen sich auf die Empfänger 
(Eingänge). Bei den Sendern (Ausgänge) muss die Spannung mindestens +5 V 
bzw. −5 V an einer Last von 3…7 kΩ betragen, um genügend Störabstand zu 
gewährleisten. Üblich ist die Verwendung von +12 V und −12 V.

von Edwin (Gast)


Lesenswert?

Hi,
Danke euch für die Hilfe!
Ich hab einen Fehler entdeckt!
Und zwar ist wenn ich TX und RX von GND aus messe dann messe ich nur bei 
TX eine negative Spannung und bei RX gar keine! Könnte es an dem liegen?
Was muss da falsch sein?

@Hubert.g:
Ich hab das ganze mal ausprobiert, aber wenn ich im Terminal vom dem 
Programm "Hello World" (oben) etwas eingeben will, geht das nicht!
Kann das auch was damit zu tun haben das an RX keine Spannung an liegt?

Liebe Grüsse!

von Hubert G. (hubertg)


Lesenswert?

Du sollst nur einen Buchstaben eingeben, der geht über TX hinaus und 
kommt über RX wieder in den PC zurück. Damit hast du den gesamten 
Leitungszug überprüft, also nur ein HW-Test.

von Edwin (Gast)


Lesenswert?

Hi,
Das funktioniert auch nicht... und in welchem Terminal muss ich das 
eingeben? bzw. Der Terminal von welchem Programm... man kommt ja nur zum 
Terminal, wenn man ein Programm öffnet..

Liebe Grüsse!

von Naturfreund (Gast)


Lesenswert?


von Edwin (Gast)


Lesenswert?

Ähhhm... ja? Was soll das darstellen?

von Hubert G. (hubertg)


Lesenswert?

Du schickst deine Daten vom µC zum PC, auf diesem muss ein 
Terminalprogramm laufen um die Daten zu empfangen. Ich verwende zum 
Testen meisten Hyperterminal oder TeraTerm. Damit kannst du auch Zeichen 
zum µC schicken und genau das tust du, über die Schleife am µC kommen 
diese Zeichen wieder zum PC zurück.

von Edwin (Gast)


Lesenswert?

Aha.
Also ist der Terminal tun emulator von Bascom nicht der richtige?
Muss ich mir da auch den Hyperterminal downloaden?

von Hubert G. (hubertg)


Lesenswert?

Wenn du in dieses BASCOM Terminal Richtung µC schreiben kannst und auch 
etwas zurück bekommst, dann sollte es genau so funktionieren.

von Edwin (Gast)


Lesenswert?

Aber das funktioniert ja nicht...

An was könnte das eigentlich liegen? Wie gesagt RX hat Spannung = 0. Was 
könnte ich da machen? bzw. messen? Durch den Test mit dem Echo, hab ich 
jetzt gerausgefunden, dass es an der Elektronik liegt.

von Christoph S. (mixer) Benutzerseite


Lesenswert?

Schaltung durchpiepsen (und dein Kabel)

von Hubert G. (hubertg)


Lesenswert?

Am Kabel Richtung PC gegen GND Pin5 messen, Pin 2 messen, welche 
Spannung, Pin3 messen, welche Spannung. Dann am Stecker Richtung MAX232 
messen, Pin2 messen, welche Spannung, Pin3 messen, welche Spannung.
Richtung PC solltest du auf Pin3 etwa -10V messen, Richtung MAX auf 
Pin2.

von Karl H. (kbuchegg)


Lesenswert?

Edwin schrieb:
> Hi,
> Danke euch für die Hilfe!
> Ich hab einen Fehler entdeckt!
> Und zwar ist wenn ich TX und RX von GND aus messe dann messe ich nur bei
> TX eine negative Spannung und bei RX gar keine!

Dann kreuze mal dein Kabel aus.
An einem Stecker vertauscht du Pin2 mit Pin3

von K. J. (Gast)


Lesenswert?

Thomas O. schrieb:
> RS232 macht aus 0V +12V und aus 5V -12V, dadurch hat man einen
> Spannungshub von 24V statt 5V was wesentlich störfester ist. Aber +-12V
> schaffen die wenigsten Treiber bzw. habe ich noch gar keinen erlebt der
> das geschafft hat, meistens liegen die um die 9-10V.
>

Doch die gibs allerdings haben die dann keine eigene Spannungsversorgung 
die ist eh meist das Problem bei solchen Geschichten.

von Thomas (kosmos)


Lesenswert?

sollte doch bestimmt heißen, allerdings haben die dann eine eigene 
Spannungsversorgung. Ja das mag sein ich meinte jetzt aber die Teile mit 
einer integrierten Ladungspumpe.

von Martin V. (oldmax)


Lesenswert?

Hi
RS232 funktioniert, indem ein TX (Transceive oder deutsch Sende) auf ein 
RX (Receive oder deutsch Empfange) geschaltet wird. Natürlich kann auch 
nur die TX mit einem Pegel beschaltet werden, da RX ja auf dem Partner 
der Eingang ist. Hast du nun die Adern so geschaltet, dad RX auf RX und 
TX auf TX trifft, dann trifft es zu, das du au TX etwas messen kannst. 
RX auf R kann nichts haben, da auf beiden Seiten Eingang. Tausche auf 
einem Stecher die Beschaltung an Pin 2 und 3, da behebt evtl. den 
Fehler.
Ansonsten liegt der Fehler dort, wo die spannungslose Ader auf TX 
trifft.

          RX-------------------TX
 PC       TX-------------------RX     µC
          Gnd------------------GND

Gruß oldmax

von Edwin (Gast)


Lesenswert?

Hallo zusammen!
@Buchegger:
Das Hab ich gemacht. Und es erscheint immer noch nichts auf dem Terminal 
run emulator

@Hubert g.:
Ich das alles mal durchgemessen:
Pin2 beim Computerstecker: 0V
Pin3 beim Computerstecker: -9.56V

Pin2 beim Stecker vom RN-Control: 0V
Pin3 beim Stecker vom RN-Control: -9.56V

Dann hab ich noch zusätzliche Messungen vollbracht und zwar am IC
Und zwar am Pin10 und Pin9 von MAX232:
Pin10: 4.55V
Pin9: 5.0V

Hier noch die Pin configruations falls die nicht jeder im Kopf hat:
http://www.elektronik-magazin.de/page/der-pegelumsetzer-max232-15

Und benutzt jemand von euch den Terminal von Bascom? Den Terminal run 
emulator? Und hat mit diesem Erfolg?

Also Pin2 müsste doch auch -9 bis -10V haben? Oder lieg ich da falsch?

Grüsse!

von Edwin (Gast)


Lesenswert?

@oldmax
sry war einbisschen zuspät und konnte es nicht lesen...
Also das mit dem Tauschen hat irgendwie nicht funktioniert.
Aber ich versteh dann nicht warum sie im RN-Wiki den schaltplan des 
Steckers anders schreiben:
http://www.rn-wissen.de/index.php/RS232
Da steht auch drücklich TX zu Pin3 und RX zu Pin2!

Gruss

von Edwin (Gast)


Lesenswert?

Hallo
Neue Mess ergebnisse!
Ich hab jetzt RX und TX auf bei einem Stecker vertauscht und in den 
Computer eingesteckt und siehe da! 8.67V bei TX Und 10.58V bei RX!
Aber leider funktioniert das mit dem Echo auch so noch nicht
Ich hab also den Mikrocontroller nochmal rausgenommen und eine Brücke 
zwischen RX und TX gemacht. Dann hab ich den Terminal vom Programm 
Helloworld (selbst geschriebenes) aufgerufen probiert ein Buchstabe 
einzugeben, aber nichts da.

Irgendwie trau ich dem Terminal run emulator nicht... aber vielleicht 
lieg ich da falsch...

Gruüsse!

von HildeK (Gast)


Lesenswert?

>Da steht auch drücklich TX zu Pin3 und RX zu Pin2!
Das ist auch richtig!
Zwischen zwei RS232-Schnittstellen von DTEs (z.B. PC, µP, etc) ist von 
der Definition her eine Modemverbindung vorgesehen. Diese kreuzt die 
Pins 2 und 3. Für den normalen Anwendungsfall, wie bei dir, kann dies 
ein Nullmodemkabel erledigen - nichts anderes als ein Kabel, das Pin2 
und Pin3 der beiden Stecker kreuzt. Also: TX auf Pin 3 des einen 
Endgerätes muss mit Rx auf Pin2 des anderen verbunden werden - in beiden 
Richtungen.

>Also Pin2 müsste doch auch -9 bis -10V haben? Oder lieg ich da falsch?
Wenn du jeweils an Pin2 0V misst, so ist das dann richtig, wenn beide 
Geräte nicht angeschlossen sind. Sollte die Verbindung bestehen, so muss 
an Pin2 des einen Gerätes das TX-Signal des andern anliegen. Erst dann 
ist dein Kabel richtig.

von Edwin (Gast)


Lesenswert?

Häää?
Jetzt wurde mir doch vorher gesagt ich solle Pin2 und Pin3 an einem 
Stecker tauschen. Dann hab ich das gemacht und dann eben 10.58 und 8.67 
gemessen als ich beide verbunden hab und jetzt sagst du mir das es am 
Anfang doch richtig war?!?
Langsam versteh ich gar nichts mehr. Wie habt ihr es denn? Könnte nicht 
jemand mal nachschauen, denn es bringt mir nicht viel wenn jeder etwas 
anderes behauptet... ausser ich versteh etwas falsch?

Ich sag jetzt nocheinmal ganz klar wie ich zuzeit stehe:
RX vom MAX232 geht nun zu Pin3 der Sub 9 Buchse
TX vom MAX232 geht nun zu Pin2 der Sub 9 Buchse

AN RX vom MAX232 messe ich 10.58V, wen die Sub 9 Buchse eingesteckt ist
An Tx vom Max232 messe ich 8.67V, wenn die Sub 9 Buchse eingesteckt ist

Ich hab den ATmega32 aus der Fassung rausgenommen und eine Brücke im 
Sockel vom ATmega32 gesteckt zwischen RX und TX. Wenn ich jetzt aber 
einen Buchstaben in den Terminal emulator eingebe passiert nichts.
Hat jemand eine Idee warum das so ist?

Liebe Grüsse!

von Hubert G. (hubertg)


Lesenswert?

Also wenn du auf RX und TX Spannung misst, dann sollte es mal passen.
Suche dir am besten HyperTerminal, oder TeraTerm, die sind beide leicht 
einzustellen.
Stelle auch sicher das du auf der richtigen COM bist, testweise mal 
umstecken.

von Edwin (Gast)


Lesenswert?

Muss ich diese im Internet runter laden? Oder sind die bereits auf dem 
System vorhanden?
Denn leider hab ich kein Internet an meinem Programmiercomputer

Als beim Terminal emulator musste ich eigentlich auch nicht viel 
einstellen. Ich hab einfach mal die Baudrate gleich eingestellt wie ich 
sie bei meinem Programm hatte... Den Com kann man auch einstellen... 
diesen hab ich jetzt einfach mal auf Com1 gelassen.
Hat die Baudrate was mit dem Computer zu tun? bzw. ist diese von 
Computer zu Computer unterschiedlich? Ich habs sie im Terminal emulator 
sowie im im Programm auf 9600 eingestellt

von Hubert G. (hubertg)


Angehängte Dateien:

Lesenswert?

Nachdem ich sehr viel mit RS232,speziell bei fremden Geräten zu tun 
hatte, man erlebt dabei die wundersamsten Dinge, habe ich mir diesen 
RS232 Monitor gebaut. Wird einfach ins Kabel eingeschliffen. Es hat mir 
sehr viel unnötige Suche erspart.

von Hubert G. (hubertg)


Lesenswert?

TeraTerm gibt es hier: www.heise.de/software/download/teraterm_pro/51776

HyperTerminal ist bei mir unter Zubehör/Kommunikation drinnen, wird 
eigentlich mit installiert wenn man es nicht ausschließt.

von Edwin (Gast)


Lesenswert?

Hi,
Also finde ich Zuberhör unter Systemsteuerung? Dort hab ichs zwar nicht 
gefunden.. Oder muss ich das mit Exploerer suchen? Oder wo wäre das?

Grüsse!

PS:
Also die Baudrate hat nichts mit dem Computer Eingang zu tun oder sowas?

von Karl H. (kbuchegg)


Lesenswert?

Edwin schrieb:
> Häää?
> Jetzt wurde mir doch vorher gesagt ich solle Pin2 und Pin3 an einem
> Stecker tauschen. Dann hab ich das gemacht und dann eben 10.58 und 8.67
> gemessen als ich beide verbunden hab

Du meinst hoffentlich negative Spannungen (in Bezug auf GND)

Wenn du auf beiden Signalleitungen jeweils so um die -9 bis -12V misst, 
deann passt dein Kabel.

Ruhepegel auf der Transmit (Tx) Leitung ist -12V (wird nicht so genau 
gegessen) und da du das auf beiden Adern messen kannst, ist damit 
klargestellt dass jeweils Tx von der einen Seite mit Rx von der anderen 
Seite verbunden ist. Jeder Sender sendet also auf einer Leitung, die 
auch tatsächlich bei einem Empfänger endet.

von Hubert G. (hubertg)


Lesenswert?

Ich verwende XP
Start Programme Zubehör Kommunikation

Die Baudrate legt nur fest, das beide mit der gleichen Geschwindigkeit 
Senden und Empfangen.

von Karl H. (kbuchegg)


Lesenswert?

Edwin schrieb:

> Als beim Terminal emulator musste ich eigentlich auch nicht viel
> einstellen. Ich hab einfach mal die Baudrate gleich eingestellt wie ich
> sie bei meinem Programm hatte...

Gut.

> Den Com kann man auch einstellen...
> diesen hab ich jetzt einfach mal auf Com1 gelassen.

Hast du mehrere serielle Schnittstellen in deinem PC?

> Hat die Baudrate was mit dem Computer zu tun? bzw. ist diese von
> Computer zu Computer unterschiedlich?

Ähz nein.
Die Baudrate sagt lediglich, wie schnell die Kommunikation ablaufen 
soll. Logischerweise muessen sich PC und deine RN-Control darüber einig 
sein, wie schnell gesendet werden darf. Sonst kommt die Gegenstelle 
nicht mit.

> Ich habs sie im Terminal emulator
> sowie im im Programm auf 9600 eingestellt

Gut. Das heißt noch lange nicht, dass deine RN_Control dann auch 
tatsächlich mit dieser Baudrate sendet.

> $crystal = 16000000

Damit teilst du dem BASCOM Compiler mit, wie schnell deine RN-Control 
deiner Meinung nach arbeitet. Aber tut sie das auch wirklich? Hast du 
das kontrolliert?

von Karl H. (kbuchegg)


Lesenswert?

Edwin schrieb:

> Ich hab den ATmega32 aus der Fassung rausgenommen und eine Brücke im
> Sockel vom ATmega32 gesteckt zwischen RX und TX. Wenn ich jetzt aber
> einen Buchstaben in den Terminal emulator eingebe passiert nichts.
> Hat jemand eine Idee warum das so ist?

Das ist bedenklich.
Hast du Flusssteuerung aktiviert?
Die muss aus sein!

von Edwin (Gast)


Lesenswert?

Hi,
Es ist gegangen!!!!!!!!!
Mit dem Terminal Emulator!!!! Tausend Dank euch!!!!!
Jetzt kann ich mich endlich meinem Projekt widmen!!!!!


Liebe liebe Grüsse!

von HildeK (Gast)


Lesenswert?

Edwin schrieb:
>Häää?
>Jetzt wurde mir doch vorher gesagt ich solle Pin2 und Pin3 an einem
>Stecker tauschen. Dann hab ich das gemacht und dann eben 10.58 und 8.67
>gemessen als ich beide verbunden hab und jetzt sagst du mir das es am
>Anfang doch richtig war?!?
>Langsam versteh ich gar nichts mehr. Wie habt ihr es denn? Könnte nicht
>jemand mal nachschauen, denn es bringt mir nicht viel wenn jeder etwas
>anderes behauptet... ausser ich versteh etwas falsch?

>Ich sag jetzt nocheinmal ganz klar wie ich zuzeit stehe:
>RX vom MAX232 geht nun zu Pin3 der Sub 9 Buchse
>TX vom MAX232 geht nun zu Pin2 der Sub 9 Buchse

Sorry, wenn ich das nochmals aufwärme:
Ich habe nur dafür plädiert (wie schon mehrfach hier im Forum), es von 
vorneherein richtig zu machen. DTEs (PC, µCs, Terminals) sollten alle 
gleich beschaltet sein (männliche Buchse, RX auf 2 und TX auf 3 beim 
SUBD9). Die Verbindung zwischen DTEs erfolgt über eine Modemstrecke - im 
häufig verwendeten Sonderfall ist das ein Nullmodemkabel, welches Tx und 
Rx kreuzt.

So, wie du es jetzt gemacht hast, brauchst du ein 1:1-Kabel zwischen PC 
und µC. Du hast zwar die notwendige Kreuzung, aber an der falschen 
Stelle. Wenn du mal zwei µCs miteinander verbinden willst, dann musst du 
das Kabel in ein gekreuztes umtauschen.

Die 1:1-Kabel (aufgebaut wie ein normales Verlängerungskabel) sind nur 
zwischen DTE und DCE (Modem) einzusetzen, die Modemstrecke kreuzt Rx und 
Tx. Verlängerungen haben auch als Anschluss einen männlichen und einen 
weiblichen Steckverbinder. Nullmodemkabel haben im Gegensatz dazu zwei 
weibliche Stecker. Es dürften eigentlich nur diese beiden Kabeltypen 
existieren. Und dein PC sowie dein µC sollten männliche Buchsen 
besitzen.

Kabel, die zwei Females besitzen und nicht gekreuzt sind, darf es per 
Definition nicht geben. Ebenso Verlängerungen (gekreuzt, mit male und 
female) sind falsch. DTEs haben immer männliche Stecker eingebaut, DCEs 
immer weibliche. Auch ein Nullmodemkabel ist ein DCE.

Das ändert sich auch nicht dadurch, dass man selbst solche Kabel kaufen 
kann - das ist nur die Ausgeburt des Nichtverstehens einer simplen 
RS232-Verbindung.

Und: hätten das alle von Anfang an richtig gelernt, gäbe es kaum eine 
Frage zu RS232.

Trotzdem freue ich mich mit dir, dass es jetzt funktioniert.

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.