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.
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.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.