Empfangen beim UART zeitweilig ausschalten

Gast #62203
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
Gast #62206
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
#62207
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren