Forum: Mikrocontroller und Digitale Elektronik Empfangen beim UART zeitweilig ausschalten


von Sebastian (Gast)


Lesenswert?

Kann man Manuell einstellen, daß der UART keine Daten annimmt
(empfängt)? Also am Anfang einer Procedure soll das Empfangen
deaktiviert werden und am Ende wieder aktiviert.

Habe ich das richtig im Datenblatt gelesen, daß das was mit dem 4. Bit
(Receiver Enable) im UCR zu tun hat?

Ich nutze Assembler und einen AT2313

von Martin de Wendt (Gast)


Lesenswert?

Hallo,

entweder so oder wenn du per INT empfängst diesen einfach ausschalten.


Martin

von Sebastian (Gast)


Lesenswert?

Aber gehen mir nicht Daten verloren, wenn ich den Interrupt ausschalte?
Oder werden erst neue Daten angenommen, wenn ich UDR leere?

von Gerhard Schmidt (Gast)


Lesenswert?

Hallo.

Aus- und Einschalten vom Receiver würde ich tunlichst nicht machen, das
gibt 100% maximalen Ärger. Mit dem Synchronisieren beim Startbit, mit
dem Anlaufen des Baudraten-Generators, usw. Abschalten bringt ja nix,
wenn der Sender nicht aufhört zu senden. Wenn Deine Routine so lang
dauert, dass Du Zeichen verlieren kannst, dann musst Du eben mit INT
arbeiten und alles in einen Ringpuffer im SRAM schieben. Alles andere
wird Murks.

Auch ein Hardware-(über RTS/CTS) oder Software-Protokoll kann gehen,
ist aber ein Heidenaufwand beim Implementieren. Und mit eins bis drei
Zeichen Verspätung bei der Reaktion muss man auch dann noch rechnen.

Aber sieh Dir erst mal die Zeiten an, die Deine Routine so braucht. Bis
das nächste Zeichen über die SIO-Schnecke kommst, kannst Du ganz schön
was abarbeiten.

MfG
Gerd

von Peter D. (peda)


Lesenswert?

Da hat Gerd vollkommen recht.

Der einzig sinnvolle Grund, die UART auszuschalten, ist im Halb-Duplex,
wenn man nicht sein eigenes Echo empfangen will.
Dann hat man nämlich mit dem Sendeinterrupt nach dem Stopbit auch genau
den richtigen Zeitpunkt, um den Empfang wieder einzuschalten.

Ansonsten bewirkt Ausschalten nur Datenmüll.


Peter

von Sebastian (Gast)


Lesenswert?

Jo das mit dem Datenmüll habe ich gemerkt!

Ich habe jetzt einfach die Baudrate von 9600 auf 4800 runtergesetzt!

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.