Forum: Mikrocontroller und Digitale Elektronik XMega128 UART Tx Pin verändern


von Promas (Gast)


Lesenswert?

Hallo!

Wir arbeiten an einem Projekt mit dem XMEGA128A3 und wollen mit RS485 
BUS über die UART Daten übertragen.
Folgendes Problem: Während der Übertragung müssen wir den Tx-Pin auf Low 
bzw. High setzen. Während die UART aktiviert ist kann man auf die Pins 
jedoch nicht zugreifen. Deaktiviert man den Tx-Pin so wird dieser als 
Eingang gesetzt. Wird er wieder als Ausgang deklariert entsteht ein 
kurzer High-Pegel der als falsches Bit erkennt wird.

Frage:
Wie kann der Tx-Pin zwischen 2 zu übertragenden Bits verändert werden, 
ohne, dass das einen Einfluss auf die restliche Übertragung hat?

von Zedd (Gast)


Lesenswert?

Versuch mal den PIN zu invertieren... das Funktioniert auch mit USART, 
bin mir aber nicht sicher wie sich ein nachträgliches Invertieren 
auswirkt...

Grüße

Basti

von Zedd (Gast)


Lesenswert?

Halt, ist das ein Schreibfehler? Meinst du zwischen zwei Bytes? Zwei Bit 
kannst du ja recht schlecht  mit deinem Programm syncronisieren... 
Ansonsten mal veraten was es werden soll, da gibts sicher noch andere 
Lösungen


Grüße

von Promas (Gast)


Lesenswert?

Ja es heißt zwischen 2 Bytes

Für die Ansteuerung eines Gerätes müssen wir 3 Bytes Senden Tx Low 
setzen,
3 Bytes senden Tx Low - High setzen und dann zum Schluss 255 senden.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Ja also das ginge dann nur mit einem zeitweisen Invertieren des Pins. 
Dazu müsstest Du Dir eine Timerroutine bauen, die das Invertieren dann 
nach praktisch 3 Bytelaufzeiten wieder zurücknimmt.

von Promas (Gast)


Angehängte Dateien:

Lesenswert?

danke für den Tipp, aber haben wir bereits ausprobiert, dadurch wird 
jedoch der TX Pin automatisch als Eingang konfiguriert. Wenn wir ihn 
jedoch wieder als Eingang konfigurieren entsteht eine Spannungsspitze.

Mit einem LogicAnalyzer sieht es folgender Maßen aus:

von spess53 (Gast)


Lesenswert?

Hi

>Wenn wir ihn
>jedoch wieder als Eingang konfigurieren entsteht eine Spannungsspitze.

Die Spannungsspitze ist das von euch kastrierte Stoppbit.

MfG Spess

von spontan (Gast)


Lesenswert?

Ein Pulldown-Widerstand am TX-Pin schafft für die nachfolgende Schaltung 
einen definierten Pegel, wenn der TX-Pin denn hochohmig werden sollte.

Erlaubt der USART (kenn den Prozessor nicht) nicht auch das senden eines 
Breaksignals?

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Promas schrieb:
> danke für den Tipp, aber haben wir bereits ausprobiert, dadurch wird
> jedoch der TX Pin automatisch als Eingang konfiguriert.

Wenn der Pin per Portconfig-Bit invertiert wird, wird der TX-Pin nicht 
als Eingang deklariert.

von Promas (Gast)


Lesenswert?

spontan schrieb:
> Erlaubt der USART (kenn den Prozessor nicht) nicht auch das senden eines
> Breaksignals?

Dazu haben wir im Datenblatt nichts gefunden.

Knut Ballhause schrieb:
> Wenn der Pin per Portconfig-Bit invertiert wird, wird der TX-Pin nicht
> als Eingang deklariert.

Das war auf deinen gelöschten Beitrag bezogen.

Haben den Code jetzt umstrukturiert auf die "invertierende Methode" und 
werden es am Nachmittag testen.

lg

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Promas schrieb:
> Das war auf deinen gelöschten Beitrag bezogen.

Yep, war zu schnell und hatte erst dann Deinen Beitrag weiter oben 
gelesen ;-).

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.