Forum: Mikrocontroller und Digitale Elektronik Uart von XMega abschalten


von Choose (Gast)


Lesenswert?

Hi!

Ich muss für die Erzeugung eines DMX Break Signales mit dem 
ATxmega256A3U
die UART abschalten um den TX Pin auf low ziehen zu können. Das 
Abschalten funktioniert auch. Aber ein Zugriff auf den TX Pin ist dann 
nicht mehr möglich. Das geht nur, bevor die UART initialisiert wurde 
oder nach einem Neustart. Kennt jemand das Problem?


SG Choose

von Bassti (Gast)


Lesenswert?

Nö, evtl. falsch abgeschalten?

Lösung ist, die Baudrate so zu verstellen und ein 0x00 Byte in Break 
länge zu schicken... das Stop Byte ist dann das (wie hieß es gleich 
noch? ) egal... wird auch gebraucht... musste mal durchrechnen welche 
Baudrate das war... hab ich gerade nicht im Kopf... aber vorher 
kontrollieren, dass nix gesendet wird!

von choose (Gast)


Lesenswert?

Danke für die Antwort! Baudraten-Veränderung haut leider nicht hin (wird 
nicht von allen DMX Empfängern akzeptiert..

SG Choose

von choose (Gast)


Lesenswert?

Hab das jetzt mit dem STM32F4 gemacht. Da funktioniert es bestens. Das 
muss doch mit dem XMega auch gehen....


SG Choose

von Sascha W. (sascha-w)


Lesenswert?

@choose,

also das muss gehen wenn du im CTRLB das TXEN_Bit löschst.

Zitat:
Setting this bit enables the USART transmitter. The transmitter will 
override normal port operation for the TxD pin, when
enabled. Disabling the transmitter (writing TXEN to zero) will not 
become effective until ongoing and pending
transmissions are completed; i.e., when the transmit shift register and 
transmit buffer register do not contain data to be
transmitted. When disabled, the transmitter will no longer override the 
TxD port.

Die Frage die sich mir gerade stellt ist nur, ob beim löschen des Bits 
während einer laufenden Übertragung die Deaktivierung des Transmitters 
nur verschoben wird oder ob sich in dem Fall das TXEN_Bit nicht löschen 
lässt.

Sascha

von Andre (Gast)


Lesenswert?

Ein uralter Beitrag - ich weiß. Aber ich hatte gestern das gleiche 
Problem (mit einem AtTiny817) und google hat mich hier her geführt, aber 
das Thema wurde ja noch nicht abschließend behandelt.

Ich konnte das Problem nun (für mich) lösen - vielleicht hilft es jemand 
anderem ja wenn ich hier schreibe wie.

Wenn man den Transmitter abschaltet ist der Pin erstmal automatisch als 
Eingang konfiguriert (steht so auch im Datenblatt). Ich habe durch 
herumprobieren herausgefunden, das ich zwischen "abschalten" und "Ändern 
auf Ausgang" zwei Takte warten muss ("NOP"). Dann gehorcht der Pin auch 
wieder... :)

Viele Grüße
  Andre

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.