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
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
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
> 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?
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.
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.
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!
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.
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!
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.
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.
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.
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
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.
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.
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
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!
@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
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!
>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.
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!
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.
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
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.
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.
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?
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.
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?
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!
Hi,
Es ist gegangen!!!!!!!!!
Mit dem Terminal Emulator!!!! Tausend Dank euch!!!!!
Jetzt kann ich mich endlich meinem Projekt widmen!!!!!
Liebe liebe Grüsse!
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.