RS232 an UART

Gast #115508
Lesenswert?

Ich denke nicht das das fuktioniert. Der Max232 ist ein Pegelwandler und
macht aus 0V und +5 vom Controller -12 und +12 für die serielle RS232
Schnittstelle am PC.

Wie soll er den aus +5V mit nem Widerstand +12 machen.

Controller untereinander kann man direkt verbinden, aber nicht
Controller und PC.

Son MÄXchen kost doch nicht die Welt!

Gruß
Chriss
Gast #115510
Lesenswert?

>Controller untereinander kann man direkt verbinden, aber nicht
Controller und PC.

Doch es geht !
Einfach einen Inverter dazwischen schalten, ist das Kabel kurz und der
PC hält sich an die RS232 Standards, dann geht es.
Gast #115516
Lesenswert?

Bei Nutzung des AVR Hardware-Uart funktioniert der Ansatz nur ueber
Widerstaende nicht. Invertierung "muss" fuer Hardware-UART sein, da
PC und AVR "genau andersrum" eine "1" markieren (negative
Spannungen aussen vor, sind bei "modernen" PCs nicht mehr
erforderlich). Es existieren jedoch Software-UART-Routinen fuer AVR,
die direkt mit "invertierten" Signalen umgehen koennen. Der
Programmieraufwand ist hoeher und das Timing ist kritischer. Aber es
gibt "fertigen" Bibliotheken z.B. die "AVR Component Library"
avrfreaks/Projekt 59(?), die die Umsetzung erleichtern.
Gast #115517
Lesenswert?

>negative Spannungen aussen vor, sind bei "modernen" PCs nicht mehr
erforderlich).

Wenn du als alten PC ein 50 Jahre altes Gerät meinst, dann stimme ich
dir zu.
Selbst 20 Jahre alte Geräte funktionieren mit TTL Pegel, da alle
üblichen RS232 Wandler (75189 usw.) eine Schaltschwelle im Bereich 1-2V
haben, wie TTL eben.
Gast #115518
Lesenswert?

Danke für die Info.
Es funktioniert jetzt, aber wenn ich jetzt im Dezimaler schreibweise
vom Controller die zahl 65 an COM1 sende, erscheint in dem
HyperTerminal Programm ein völlig anderes zeichen als der Buchstabe A.
65 steht doch für A!
Warum wird ein völlig anderes Zeichen ausgegeben?

Marc
Gast #115523
Lesenswert?

Das Programm ist echt gut!
Und ich kriege vom Programm den Wert 159, aber der Controller sendet
den Wert 65.
Ich habe den TXD pin direkt mit RXD der Seriellen-Schnittstelle
verbunden, kann es daran liegen?
Gast #115524
Lesenswert?

Ja, der läuft mit internem 1MHz.
Aber daran liegt es wohl nicht, der Terminal empfängt daten. Aber
nicht, was ich will. Und ich habe eine Schleife eingebaut, dass dafür
sogt, dass der Wert 65 ständig gesendet wird. Da kommt dann auch immer
159 am Terminal an
Gast #115525
Lesenswert?

> Ich habe den TXD pin direkt mit RXD der Seriellen-Schnittstelle
> verbunden, kann es daran liegen?

Schreibs doch gleich :) Das kann nicht funktionieren, da fehlt die
notwendige Invertierung. Siehe den von mir geposteten Schaltplan (der
Schaltplan selbst ist NICHT von mir).

Thorsten
Gast #115531
Lesenswert?

Mir ist aufgefallen, dass bei der übertragung vom Controller die Werte
0, 1, 6, 255 auch so vom Terminal verstanden wurden. Aber ausgerechnet
der Wert 65(A) wird als ein anderes Zeichen ausgegeben.
Warum?
Gast #115533
Lesenswert?

Hmm, hast du mal ins Datenblatt geschaut ? Z. B. beim ATmega16 Seite
162, Tabelle 68 ? Alles größer 4800 Baud @ 1MHz produziert Fehler > +-
7%. Das kann nicht funktionieren !! Für eine fehlerfreie
RS232-Übertragung muß der Fehler deutlich unter 1% liegen. Wenn du
allerdings den Oszillator auf 8MHz stellst, sind 38k4 Baud problemlos
möglich, hab ich hier auch laufen.

Gruß
Thorsten
Gast #115534
Lesenswert?

>Für eine fehlerfreie RS232-Übertragung muß der Fehler deutlich unter 1%
liegen.

Es reichen 5%, wenns nicht anderst geht. Für eine  eine gute Schaltung
sollte der Wert unter 2-3% liegen, dann treten eigentlich nei
Übertragungsfehler auf.
Gast #115535
Lesenswert?

Naja, man sollte sich aber nicht darauf verlassen. Für einzelne Zeichen
mögen die 5% vielleicht noch tolerabel sein. Wenn aber mehr Daten am
Stück bei hohen Baudraten übertragen werden sollen, kommst du nicht
weit. Weißt du zufällig, was dazu in der RS232-Spezifikation steht ?
Ich hatte da schonmal gesucht, aber nichts gefunden. Gibts die Spec
irgendwo zum download ?

Thorsten
Gast #115536
Lesenswert?

Ich bin mir nicht sicher, ob es wirklich aktuelle RS232 Spezifikationen
gibt, denn der RS232 Standart ist uralt und geht nur bis 9600 Baud....

Die einzigen Probleme die ich bisher hatte, lagen alle an der
Kabelverbindung. Ganz gut sind Stereo Audiokabel mit getrennt
geschirmten Leitungen. Liegen RX und TX nebeneinander konnte ich mein
gesendetes Zeichen durch kapazitive Kopplung zwischen den Leitungen
wieder empfangen !

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren