Forum: Mikrocontroller und Digitale Elektronik RS232 ohne Pegelwandler


von thomas (Gast)


Lesenswert?

Hi User,

Ich habe folgendes Problem:

Ich hab ein funktionstüchtiges Programm mit RS232 Kommunikation. Damit 
ich die Ausgabe am Rechner sehen kann nutze ich Hyperterminal.
Die Ausgabe am TX Pin meines Atmega8 wird mittels MAX232 auf den RS232 
Standart gebracht. Das alles funktioniert.

Nun meine Frage:
Kann ich den Max232 weglassen, wenn es gelingt, die Ausgangspegel (TTL) 
am TX Pin zu invertieren? Erkennt das Hyperterminal den nur 5V hohen 
Pegel?

Reicht eine einfache Schleife zum Invertieren, oder gibt es vielleicht 
einen BASCOM Befehl, der mir das abnimmt. Gerade bei längeren 
Nachrichten könnte es zu einem Zeitproblem kommen.

Also, für Tipps wäre ich euch sehr dankbar.

Atmega8 + Bascom wird verwendet.

MfG Thomas







von Falk (Gast)


Lesenswert?

@thomas

>Die Ausgabe am TX Pin meines Atmega8 wird mittels MAX232 auf den RS232
>Standart gebracht. Das alles funktioniert.

Super, vor allem mit BASCOM ;-)

>Nun meine Frage:
>Kann ich den Max232 weglassen, wenn es gelingt, die Ausgangspegel (TTL)
>am TX Pin zu invertieren? Erkennt das Hyperterminal den nur 5V hohen
>Pegel?

Dem Hyperteminal ist es ziemlich egal, aber der RS232 Port erkennt auch 
5V als LOW (ist invertierte Logik). Warum willst du den MAX weglassen wo 
doch alles funktioniert?

>Reicht eine einfache Schleife zum Invertieren, oder gibt es vielleicht
>einen BASCOM Befehl, der mir das abnimmt. Gerade bei längeren
>Nachrichten könnte es zu einem Zeitproblem kommen.

Das geht nicht in Software (ich nehme mal stark an, dass du das 
UART-modul nutzt und kein SoftUART), da brauchst du einen Inverter 
(Hardware), z.B. 74HC04. Nur hast du dann hardwaretechnisch so gut wie 
gar nix gewonnen.
Lass es wie es ist und sei glücklich.

MfG
Falk

von Nico (Gast)


Lesenswert?

Laut RS232-Norm müsste es funktionieren wenn Du die Pegel invertierst! 
Vorausgesetzt Du benutzt 5V Pegel!

Eine Schleife zum inertieren....wie meinst Du das?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Für die Sendedatenleitung vom µC zum PC hin funktioniert das, wenn es 
auch nicht wirklich standardkonform ist (Statt 0V sollten mindestens -3V 
anliegen).

Du wirst aber den Sendepegel nicht per Software invertieren können, es 
sei denn, Du benutzt die Software-UART anstelle der Hardware-UART Deines 
Controllers.

Auch bekommst Du ein Problem mit dem Empfang, denn der PC sendet mit 
etwa +/-12V Signalpegel ... die zerstören Deinen Controller

Fazit:

Verwende den MAX232. Versuche nicht, ihn durch was "einfacheres" zu 
ersetzen, das bereitet nur Probleme.

Die einzige sinnvolle Alternative wäre die Verwendung des Pärchens 
MC1488/MC1489 bzw. 75188/75189 oder die zusammengelegte Variante 75232 - 
die aber setzen alle eine symmetrische Spannungsversorgung voraus.

von Axel (Gast)


Lesenswert?

Wenn man einen Software UART nimmt, kann ich mir vorstellen, dass das 
auf Senderseite mit dem ATMEL klappt, da die meisten PC Schnittstellen 
auch mit 0V / 5V Pegeln klarkommen. Auf der Empfängerseite müsstest Du 
den Micro mit einem entsprechend grossen Vorwiderstand (>10k) schützen.

Dann die Software entsprechend umstellen und das müsste gehen.

Gruss
Axel

von thomas (Gast)


Lesenswert?

@Falk
Mit Bascom gabs noch keine Probleme, v.a. RS232 Komunikatin ist da sehr 
einfach zu machen.

Den MAX will ich aus Platzgründen weglassen. Ich benutze deshalb auch 
schon TQFP32 als Gehäuseform, weil DIL28 schon zu heftig ist.

Hast recht, ich nutze Hardware UART. Ein zusätzliches Bauteil würde mir 
nicht wirklich weiterhelfen.

@Nico
Mit Schleife meine ich, dass manden Zustand eines Pins abfragt, und 
einen anderen Pin genau invertiert setzt/ nicht setzt.

Scheint also nicht ohne weiteres möglich zu sein.

Wie siehts mit einem Software- Uart aus? Besteht da die Chance, die 
Ausgangspegel auch softwareseitig zu invertieren?

Thomas

von thomas (Gast)


Lesenswert?

Kleiner Nachtrag:

Der Atmega soll nur senden. Empfangen ist nicht nötig.

Sonst würde das Empfangen von Daten ohne MAX nur ein kurzes rauchen 
erzeugen.

von Christoph Kessler (db1uq) (Gast)


Lesenswert?

Dann reicht ja ein Transistor oder Einzelgatter ( Conrad hat den 
TC4SU69F von Toshiba) die sind sehr klein.
http://www.conrad.de/goto.php?artikel=171719

von Falk (Gast)


Lesenswert?

@thomas

>Den MAX will ich aus Platzgründen weglassen. Ich benutze deshalb auch
>schon TQFP32 als Gehäuseform, weil DIL28 schon zu heftig ist.

Dann nimm wie Christoph Kessler schon vorgeschlagen hat nen Transistor 
als Inverter. BC846 im SOT23 + 2 Widerstände (10k Basisvorwiderstand + 
1K Kollektorwiderstand) in der Baugrösse deiner Wahl (0602, 0402, 0201). 
Einzelgatter würde ich nicht unbedingt verwenden wollen, wegen der 
eingeschränkten Verfügbarkeit.

>Wie siehts mit einem Software- Uart aus? Besteht da die Chance, die
>Ausgangspegel auch softwareseitig zu invertieren?

Sicher. Doch dazu müsstest du ans Eingemachte der Routine gehen. Wenn du 
nur von BASCOM Ahnung hast kannst du das vergessen.

MFG
Falk

von G. Nicht (Gast)


Lesenswert?

Sofern der PC empfangsseitig nicht unbedingt negative Pegel benötigt, 
kannst Du den MC1489 als Inverter für RX und TX probieren. Der Mega8 
bekommt damit Normgerecht sein RxD-Signal, und sein TxD-Signal wird 
invertiert mit etwa 0,2V und 4,5V ausgangsseitigen Pegeln.
Bei mir hat es immer geklappt, für private und Testaufbauten.

von Peter D. (peda)


Lesenswert?

Schau Dir mal den DS275 an (Gehäuse: SO-8).


Peter

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.