Forum: Mikrocontroller und Digitale Elektronik Mikrocontroller mit Rs232 Schnittstelle


von Rolf G. (Firma: privat) (reglermax)


Lesenswert?

Hallo Leute,
habe nach längerer Pause wieder Gefallen an meinen Mikrocontrollern 
TN13, TN2313 und Mega8 gefunden.
Meine Platinen sind leider alle für RS232 Schnittstellen ausgelegt. 
Rechner mit RS232 habe ich leider keine mehr. Programmieren über 
ISP-Programer mit AVR Studio 4.19 geht, aber leider keine Kommunikation 
über USB zum Notebook.
Mittels RS232/USB Adapter und Hterm bringe ich keine Verbindung 
zustande.
Für eine Lösung wäre ich sehr dankbar,
Gruß reglermax.

von Timo N. (tnn85)


Lesenswert?

Der UART vom Atmega verwendet Logic-Level-Signnalpegel (0 bis 5V).

Dein USB/Seriell-Adapter aber die -15/+15V von Standard RS232 
SChnittstellen.
Hol dir einen USB-Seriell-Adapter für TTL-Pegel

von c-hater (Gast)


Lesenswert?

Rolf G. schrieb:

> Mittels RS232/USB Adapter und Hterm bringe ich keine Verbindung
> zustande.

Drei Problemzonen:

1) Treiber für die RS232-Adapter. Test ist einfach: "local loopback". 
Sprich: du läßt den µC erstmal weg und verbindest nur RXD und TXD des 
Adapters. Wenn du dann was sendest, musst du das Gesendete auch sofort 
wieder empfangen. Geht das nicht, ist entweder der Adapter defekt oder 
der Treiber passt nicht zum Adapter.

2) Pegel. Es gibt typisch drei Sorten von diesen Adaptern. 
(Näherungsweise) RS232-Level, 5V und 3,3V. Wenn du eine alte Platine 
verwenden willst, die ursprünglich mal für RS232 designed war (und 
deswegen einen MAX232 o.ä. enthält), dann brauchst du die 
RS232-Variante. Für Neuentwicklungen kannst du halt den MAX232 weglassen 
und statt dessen direkt zu einem 5V- bzw. 3,3V-Adapter verbinden (je 
nach Versorgung deines µC).

3) Takt. Wenn der Takt des µC falsch konfiguriert ist, kommt Gurkensalat 
raus. Es kann aber auch Gurkensalat rauskommen, wenn der Takt "im 
Prinzip" richtig konfiguriert ist. Wenn nämlich der interne 
RC-Oszillator verwendet wird. Der ist nicht genau genug. Kann klappen, 
muss aber nicht klappen.

von Wolfgang (Gast)


Lesenswert?

Timo N. schrieb:
> Der UART vom Atmega verwendet Logic-Level-Signnalpegel (0 bis 5V).

Das wäre dann allerdings nicht die von Rolf genannte 
RS232-Schnittstelle.
Neben den Pegel unterscheidet die sich auch in der Polarität.

Erste Maßnahme wäre, den Ruhepegel der TX-Leitung von Mikrocontroller 
und PC zumindest mit einem Multimeter zu messen. Einfacher wäre 
natürlich der Einsatz eines Oszis.

von Stefan F. (Gast)


Lesenswert?

Wolfgang schrieb:
> Das wäre dann allerdings nicht die von Rolf genannte
> RS232-Schnittstelle.

Stimmt. Der c-hater weiss aber, dass seht viele Adapter im Handel RS232 
oder TTL genannt werden, obwohl was anderes drin steckt.

> Erste Maßnahme wäre, den Ruhepegel der TX-Leitung von
> Mikrocontroller und PC zumindest mit einem Multimeter zu messen.

Guter Vorschlag, dann erfahren wir zumindest, was es denn wirklich ist.

von m.n. (Gast)


Lesenswert?

Timo N. schrieb:
> Dein USB/Seriell-Adapter aber die -15/+15V von Standard RS232
> SChnittstellen.

Daß so ein Unfug immer noch behauptet wird. Diese Pegel gab es nie!

von Joachim B. (jar)


Lesenswert?

Rolf G. schrieb:
> ISP-Programer mit AVR Studio 4.19 geht, aber leider keine Kommunikation
> über USB zum Notebook.

aber ein ATmega8 sendet doch normalerweise auf UART oder USART Rx&Tx 
aber nicht über ISP wo er programmiert wird!

Ausnahmen sind Arduinos oder AVR mit Bootloader die per ISP programmiert 
werden entweder durch einen eigenen Chip USB/ser on board oder welche 
mit USB Schnittstelle wie der mega32u4 (oder war das u2?)

Du müsstes also schon einen TTL Uart USB Adapter anklemmen
sowas in der Art an Tx und Rx vom ATmega8 wenn du am PC Hterm o.ä. 
machen willst
https://www.ebay.de/i/172228517190

oder nimm gleich einen Arduino Nano328p, den kannst du auch 
programmieren wie gewohnt als puren ATmega8, musst dich halt um alles 
selber kümmern Ausgaben an Rx/Tx selber anklemmen Pegelwandlung machen 
und zu +-12V zum PC wandeln.

Ich finde nano praktischer, auc hindert dich keiner den ohne die IDE zu 
programmieren, notfalls mit einem 2ten nano der als ISP Brücke dient.

von Rolf G. (Firma: privat) (reglermax)


Lesenswert?

Danke für eure Hinweise, den Adapter werde ich demnächst testen.
Hier mal meine Mega8-Platine mit Pegelwandler. Das hat am PC-damals 
wunderbar funktioniert!
http://www.rolf-grauer.de/Mega8.html
Gruß Rolf.

von A. S. (Gast)


Lesenswert?

Das ist zwar die Sparversion (nur Inverter, ohne negatives TX) sollte 
aber zuverlässig funktionieren. Muss es halt nur nicht. einfach testen, 
ob der Loop Back auch mit Dioden von gnd nach RX/TX geht.

von Wolfgang (Gast)


Lesenswert?

Rolf G. schrieb:
> Hier mal meine Mega8-Platine mit Pegelwandler. Das hat am PC-damals
> wunderbar funktioniert!
> http://www.rolf-grauer.de/Mega8.html

Glück gehabt, RS232 war das nicht ...

von Timo N. (tnn85)


Lesenswert?

m.n. schrieb:
> Timo N. schrieb:
>> Dein USB/Seriell-Adapter aber die -15/+15V von Standard RS232
>> SChnittstellen.
>
> Daß so ein Unfug immer noch behauptet wird. Diese Pegel gab es nie!

Boar dann sind es halt -12/+12V. Auf jeden Fall weit weg von 0/5V.
Spielt doch echt keine Rolle.

von Joachim B. (jar)


Lesenswert?

Timo N. schrieb:
> Boar dann sind es halt -12/+12V. Auf jeden Fall weit weg von 0/5V.
> Spielt doch echt keine Rolle.

das größere "Problem" ist doch die Polarität was bei TTL Ruhepegel high 
ist ist auf der RS232 eben low also bei 0V und das TTL high wird als 
logisch aktiv 1 erkannt.

Wenn es mit den "Sparschaltungen" 0V/5V funktioniert dann nur nach 
Invertierung. Am Pegel muss es nicht zwingend liegen aber an der 
Erkennung high low! eben 1/0 oder umgekehrt je nach "Guckrichtung".

Sparschaltung
https://www.mikrocontroller.net/attachment/77864/circuit.png

: Bearbeitet durch User
von Timo N. (tnn85)


Lesenswert?

Joachim B. schrieb:
> das größere "Problem" ist doch die Polarität was bei TTL Ruhepegel high
> ist ist auf der RS232 eben low also bei 0V und das TTL high wird als
> logisch aktiv 1 erkannt.

Das kommt natürlich noch dazu. Hast Recht.

von spess53 (Gast)


Angehängte Dateien:

Lesenswert?

HI

>Sparschaltung
>https://www.mikrocontroller.net/attachment/77864/circuit.png

Ich würde das RS232-Interface des AVR-Butterfly (S.4 im Anhang) 
empfehlen.

MfG Spess

von Rolf G. (Firma: privat) (reglermax)


Lesenswert?

Hallo Leute,
die Schnittstelle funktioniert nun mit dem Kabeladapter Modul:
https://www.ebay.de/itm/Konverter-USB-COM-RS232-Serial-Kabel-Adapter-Modul-USB-2-0-zu-9-pin-NEU/153844022918?ssPageName=STRK%3AMEBIDX%3AIT&_trksid=p2057872.m2749.l2649

Es lag nur an Einstellungen am HTerm Version 0.8.5 (falscher Port...).
Danke für eure Tipps,
Gruß Rolf.

von Peter D. (peda)


Lesenswert?

Rolf G. schrieb:
> Das hat am PC-damals
> wunderbar funktioniert!
> http://www.rolf-grauer.de/Mega8.html

Ersetz mal den 74LS04 durch einen 74HC04, dann sollte es wieder 
funktionieren.
Oder besser gleich einen MAX202 oder kompatiblen nehmen.

von m.n. (Gast)


Lesenswert?

Timo N. schrieb:
> Boar dann sind es halt -12/+12V.

Auch die gab es nie. Wenn ich so etwas lese, ist sofort klar, daß der 
Urheber  nur die Backen aufpustet. Praktische Erfahrung sieht anders 
aus.

von Angsthase (Gast)


Lesenswert?

m.n. schrieb:
> Timo N. schrieb:
>> Boar dann sind es halt -12/+12V.
>
> Auch die gab es nie. Wenn ich so etwas lese, ist sofort klar, daß der
> Urheber  nur die Backen aufpustet. Praktische Erfahrung sieht anders
> aus.

naja früher wurden die Treiber mit den +12/-12V Ausgängen der Netzteile 
versorgt, vielleicht kommt daher die Meinung es sind +-12V

Wiki:
Für die Datenleitungen (TxD und RxD) wird eine negative Logik verwendet, 
wobei eine Spannung zwischen −3 V und −15 V (ANSI/EIA/TIA-232-F-1997) 
eine logische Eins und eine Spannung zwischen +3 V und +15 V eine 
logische Null darstellt. Signalpegel zwischen −3 V und +3 V gelten als 
undefiniert.

von georg (Gast)


Lesenswert?

m.n. schrieb:
> daß der
> Urheber  nur die Backen aufpustet

Auf jeden Fall mit mehr Berechtigung als du, da du offensichtlich 
niemals irgendwelche Normen über serielle Schnittstellen gelesen hast.

Georg

von A. S. (Gast)


Lesenswert?

georg schrieb:
> Auf jeden Fall mit mehr Berechtigung als du, da du offensichtlich
> niemals irgendwelche Normen über serielle Schnittstellen gelesen hast.

Das wissen aus Normen lag ja nicht vor. 5.5V ist nicht weit weg von 5, 
und 3V schon gar nicht.

Und dann ist es nur die Norm. In der Praxis hat jeder kaufbare Adapter 
(ok, vielleicht nicht jeder, aber > 99%) seine umschaltschwelle bei >> 
0V, funktioniert also mit TTL-Pegeln wunderbar. Damit ist die Schaltung 
des TO zwar nicht normgerecht, aber völlig ausreichend.

Der Empfänger sowieso. Den kriegt man auch mit TTL normgerecht hin.

von Karl B. (gustav)


Angehängte Dateien:

Lesenswert?

A. S. schrieb:
> Und dann ist es nur die Norm.

Hi, und zu allem Übel dann noch
RS232 versus V24:
https://de.wikipedia.org/wiki/V.24
Ziat:
"...Diese Empfehlung wurde mehrfach den technischen Gegebenheiten 
angepasst. Von ursprünglich über 50 beschriebenen Funktionen sind seit 
dem Jahr 2000 noch 37 vorhanden..."
/Zitat
Ich sag lieber V24. Denn da ist IMHO auch die Pegeldefinition drin 
(gewesen).
Obwohl Wiki sagt, es wäre nur die Zuordnung zu den Funktionen.

Ein Bild sagt mehr als tausend Worte.

ciao
gustav

von Karl B. (gustav)


Angehängte Dateien:

Lesenswert?

Karl B. schrieb:
> Ein Bild sagt mehr als tausend Worte.

Hi,
der Doppel-Genderchanger dient nur dazu, Abstand zu kriegen. Sonst muss 
man die Muttern da am STK500 DB9 female Konnektor evtl. abschrauben.
Klappt 100 pro.

Atmel ICs die U(S)ART haben, kann man direkt verbinden nur eben auch
Korrespondierende kreuzen. Meistens ohne Händeschütteln mit GND RXD TXD.
Dann am anderen Target GND TXD RXD. (Und PD0 an RXD(Spare) und PD1 an 
TXD(Spare) jumpern. Hab ich doch glatt vergessen;-)
Viel Spaß!
ciao
gustav

: Bearbeitet durch User
von A. S. (Gast)


Lesenswert?

Zu den +-5V, die der Sender nach Norm mindestens liefern muss, eine 
kleine Anekdote:

Vor mehr als 20 Jahren, noch vor dem Internet am Arbeitsplatz, als wir 
junge Ingenieure erstmals 3.3V hatten und dafür einen MAX232 suchten. 
Uns war klar, die verdoppeln und invertieren auch nur, können also nur 
knapp über 5V hinkriegen. Wir hatten auch 12V oder so im Kopf, als mein 
Kollege am Telefon den Distri fragte: "funktioniert das denn?". 
Natürlich war uns im Augenblick der Frage klar, ja es muss 
funktionieren, wenn Maxim die verkauft. War uns (ihm) peinlich, aber war 
passiert.

Heute könnte man einfach in ein Datenblatt schauen. Aber lassen wir das.

von Karl B. (gustav)


Angehängte Dateien:

Lesenswert?

Karl B. schrieb:
> Hab ich doch glatt vergessen

Jo.
USB-Stecker rein und rödelt eine Minute von selbsten.

ciao
gustav

von Klaus (Gast)


Lesenswert?

Angsthase schrieb:
> wobei eine Spannung zwischen −3 V und −15 V (ANSI/EIA/TIA-232-F-1997)
> eine logische Eins und eine Spannung zwischen +3 V und +15 V eine
> logische Null darstellt.

Wobei das die Spannung an einem Eingang beschreibt. Zusammen mit der an 
anderer Stelle beschriebenen Strombegrenzung (Kurzschlußfestigkeit) und 
dem Spannungsabfall im Kabel sind am Sender sehr wohl höhere Spannungen 
als 3V notwendig, um die Norm einzuhalten.

MfG Klaus

von Rolf G. (Firma: privat) (reglermax)


Lesenswert?

Auch der kleine Tiny13 lässt sich über das Adapterkabel mit dem 
Hyperterminal am PC ansprechen.
Hier z.B. den Datenlogger: http://www.rolf-grauer.de/Datenlogger.html
Gruß Rolf.

von Karl B. (gustav)


Lesenswert?

Hi,
hier wird's schwierig(er).
C* 979767 8-kanaliges 10-Bit-Datenerfassungssystem
mit LTC1090.
Basic konnte "direkt" auf Schnittstellen zugreifen.
...
110 OUT&H3FC,(&HFE AND INP(&H3FC))
...
was immer das zu bedeuten hatte.
Knoble gerade daran, das GWBasic Proggi auf ATMEL AVR ASM umzumodeln.
Der große Geistesblitz ist mir dabei noch nicht gekommen.
"...Der Datentransfer spielt sich zwar über die serielle Schnittstelle
ab (COM1), läuft dort aber nicht wie üblich über die normalen 
Datenleitungen  Rx und Tx, sondern nur über die Statusleitungen DTR, RTS 
und CTS..."

ciao
gustav

: Bearbeitet durch User
von MaWin (Gast)


Lesenswert?

Rolf G. schrieb:
> Das hat am PC-damals wunderbar funktioniert!
> http://www.rolf-grauer.de/Mega8.html

Da kommt einem ja das Grauen.

Ja, es gab RS232 Schnittstellen (Empfänger), die ihre Schaltschwelle bei 
ca. 1.4V hatten, passend zu TTL Signalen, und ein LS-Schaltkreis geht 
auch nicht glich kaputt, wenn er üer 10k eine höhere Spannnug sieht.

Aber Standard war, daß man zumindest -3V braucht, damit MARK zuverlässig 
erkannt wird.

Dein Gebastel ist einfach nur grausamer Schrott.
Einzig tauglich als schlechtes Beispiel wie man es nicht macht.

von B. P. (skorpionx)


Angehängte Dateien:

Lesenswert?

Mit dieser Lösung kann ich mit jedem USB-RS232 Adapter von PC 
kommunizieren...

von Joachim B. (jar)


Lesenswert?

B. P. schrieb:
> Mit dieser Lösung kann ich mit jedem USB-RS232 Adapter von PC
> kommunizieren...

und ich damit

https://www.ebay.de/itm/RS232-TTL-Mini-Konverter-Modul-Board-MAX3232-Arduino-Bascom-PC-MCU/112837635875

passt in jedes Steckergehäuse, D-sub MALE/FEMALE sowie 9-pol/25-pol nach 
Wahl

von Rolf G. (Firma: privat) (reglermax)


Lesenswert?

Hallo MaWin,
den Max232N kenne ich und hab ihn auch schon eingesetzt. Ist natürlich 
vom Signalpegel und Invertierung die Standardlösung.
Aber vielleicht hast du es mittlerweile verstanden, mein beiden 
Beispiele sind Minimallösungen!

von MaWin (Gast)


Lesenswert?

Rolf G. schrieb:
> Aber vielleicht hast du es mittlerweile verstanden, mein beiden
> Beispiele sind Minimallösungen!

Nein, es sind schlicht und einfach keine Lösungen.
Es ist Pfusch.

von A. S. (Gast)


Lesenswert?

MaWin schrieb:
> Aber Standard war, daß man zumindest -3V braucht, damit MARK zuverlässig
> erkannt wird.
>
> Dein Gebastel ist einfach nur grausamer Schrott.
> Einzig tauglich als schlechtes Beispiel wie man es nicht macht.

Wenn Du keinerlei Erfahrung mi9t seriellen Schnittstellen hast, oder 
Dich nur hinter Normen versteckst, dann lerne doch von den Erfahrungen 
anderer. Oder zeig mir eine kaufbare Hardware (link reicht), die Deine 
Ansicht irgendwie stützt.

(der echte MaWin hat da eigentlich mehr Ahnung)

von m.n. (Gast)


Lesenswert?

Für den schnellen Aufbau habe ich meist 1 x MC1489 als Inverter 
genommen, wobei die Hälfte ungenutzt bleibt. Rx-seitig werden alle 
Signale "normgerecht" verarbeitet; Tx-seitig werden zwar nur ca. 5 Vss 
ausgegeben, was aber in der Regel bis 115 kBd reicht.
Die MAX232 o.ä., die mit Vcc 3-5 V arbeiten, haben ihre Schaltschwelle 
so um die 1,5 V und können 5 V Pegel bestens verarbeiten.

Negative Signalpegel brauchen nur noch ältere Empfänger, bei denen die 
Hysterese 'künstlich' nach unten auf 0 V verschoben wurde. Das macht man 
heutzutage nicht mehr.

von A. S. (Gast)


Lesenswert?

m.n. schrieb:
> Negative Signalpegel brauchen nur noch ältere Empfänger, bei denen die
> Hysterese 'künstlich' nach unten auf 0 V verschoben wurde. Das macht man
> heutzutage nicht mehr.

In den letzten 20 Jahren habe ich das nicht mehr gesehen. Nur irgend so 
ne Kiste von Siemens mal vorher. Bei manchen ICs konnte man früher wohl 
die Schwelle per Pin auf 0 oder drunter ziehen, aber der war nie aktiv.

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.