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
@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
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?
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.
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
@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
@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
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.