Forum: Mikrocontroller und Digitale Elektronik Fragen zum UART


von M. K. (sylaina)


Lesenswert?

Ich hab da ein paar Fragen zum UART. Verwende hier selbst einen 
Atmega88PA

1. In den Beispielen zu UART, die ich auch ausprobiert habe und die 
funktionieren, wird der Port in dem TX und RX ist das DDRn-Register (bei 
mir also DDRD) immer auf 0xff geschaltet, damit sind ja alle Pins als 
Ausgänge definiert. Rein vom logischen Verständnis her: Müsste RX nicht 
eigentlich ein Eingang sein? Oder wird der Konfiguration mittels TXEN 
und RXEN überschrieben und entsprechend angepasst?

2. Ich will ein Gerät bauen dass man später mittels der seriellen 
Schnittstelle auslesen kann an einem PC. Ständig wird das Gerät aber 
nicht am PC sein, sprich TX und RX des RS232-Chips werden nicht ständig 
am Kabel hängen sondern auch mal offen sein. Sollte man hierbei die 
beiden Pins von Hand (z.B. mittel Widerstand) auf 0V ziehen? Ich möchte 
vermeiden, dass da Pseudodaten zum Mikrokontroller kommen nur weil grad 
die Potentiale der nicht angeschlossenen RS232-Schnittstelle günstig 
waren und UART meint jetzt wird was übertragen.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Michael Köhler schrieb:
> Müsste RX nicht
> eigentlich ein Eingang sein?

Müsste es.

> Oder wird der Konfiguration mittels TXEN
> und RXEN überschrieben und entsprechend angepasst?

Ja, so ist es.  Sinnvoll wäre es trotzdem, den Pin auch als Eingang
zu konfigurieren, damit es keine Kollision auf der Leitung gibt, wenn
während der Initialisierungsphase das RXE-Bit noch nicht gesetzt
ist (bspw. während man die Initialiserung im Debugger durchläuft).

> sprich TX und RX des RS232-Chips werden nicht ständig
> am Kabel hängen sondern auch mal offen sein. Sollte man hierbei die
> beiden Pins von Hand (z.B. mittel Widerstand) auf 0V ziehen?

Nein, das ist nicht nötig.  Offene Eingänge sind bei RS-232 durchaus
üblich, solange nichts angesteckt ist.  Der nötige Pegel wäre übrigens
-(5...12) V.  Normalerweise würde man zur Detektierung ein zweites
Treiberpaar benutzen, und darüber DTR erkennen: wenn DTR aktiv ist,
dann existiert eine Gegenstelle, die etwas senden könnte, und diese
ist auch softwaremäßig bereit.  Das müsstest du am AVR allerdings auf
einen normalen IO-Pin routen, der UART-Block besitzt dafür keine
eigenen Pins.

von Kurt H. (Firma: KHTronik) (kurtharders)


Lesenswert?

Hallo Michael,
wie Du vermutest die Signale TX und RX werden automatisch zu Ein- bzw. 
Eingängen. Ich selbst habe mir aber angewöhnt, das auch in der 
Initialisierung der Richtungsregister zu dokumentieren.
Wenn Du die serielle Schnittstelle an den PC anschließen willst, musst 
Du ja noch einen Pegelwandler ergänzen. Die Ausgänge dieses Wandlers 
haben dann, auch wenn sie offen sind, einen definierten Pegel, ausser Du 
hast extreme Störquellen in der Umgebung. In dem Fall solltest Du 
allerdings über andere Anbindungen (Stromschleife, RS485...) nachdenken.
Grüße, Kurt

von M. K. (sylaina)


Lesenswert?

Dank euch, das beantwortet alle meine Fragen. Kritisch ist die Umgebung 
nicht, muss nur später stoßfest, hitzebeständig und wasserfest 
sein....für den Fall, dass ich mal meinen Kaffee verschütte oder vor 
Schreck den Hammer fallen lasse. ;):D

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.