Pin konfiguration für Uart in Xmega

Lschreyer
Schreiberling
Avatar
Gender: n/a
Posts: 527
Registered: 02 / 2007
Subject:

Pin konfiguration für Uart in Xmega

 · 
Posted: 19.09.2014 - 11:58  ·  #1
Ich habe mal eine Frage zum Thema Pin-Einstellung beim Uart.

Beim Atmega habe ich die Pins immer ohne Pullup betrieben, was problemlos war.
TXD als Ausgang, RXD als Eingang deklariert.

Beim Xmega scheint das keine gute Idee zu sein, ich habe da eine Uart laufen gehabt ohne Pullups an RXD. Der Uart ist offen auf eine Stiftleiste geführt.
Jetzt habe ich festgestellt, dass es schon ausreicht einen Federkontakt von 4cm Länge ohne jeden Anschluss daran zu halten damit der Controller komplett abstürzt, nichts geht dann mehr, nur noch ein Reset. Ich habe mich immer gewundert, warum das ganze nicht mehr reagiert wenn ich es in mein Boardtester eingelegt hatte. Das Entfernen des Federkontaktes an RXD behob das Problem, so bin ich darauf gestoßen. (Das sind diese vergoldeten Testpins die man im Prüffeld verwendet).
Wie gesagt, beim Atmega war das nie ein Problem.

Mit einem Pullup an RXD war der Spuk vorbei, ich frage mich aber ob es noch besser geht.

Wie sollte man die Pins des Uart optimalerweise beim Xmega einstellen? Es gibt da ja mehrere Möglichkeiten beim Xmega, Buskeeper, Pullup usw. . Kann mir da jemand etwas zu sagen?
Ich konnte leider nichts dazu finden, normalerweise sind die Pins wohl auch nicht offen.

Louis
rh
Administrator
Avatar
Gender:
Location: Germany
Age: 24
Homepage: e-lab.de
Posts: 5558
Registered: 03 / 2002
Subject:

Re: Pin konfiguration für Uart in Xmega

 · 
Posted: 19.09.2014 - 14:07  ·  #2
Hallo Louis,

ein offener UART Eingang kann grosse Probleme machen.
Normalerweise hängt da ja auch ein MAX232 o.ä. dran, dann gibts keine Probs.
Wenn der RxPin wirklich offen ist dann muss ein Pullup eingestellt werden.
Der Idle Zustand eines RxPins ist log 1.

rolf
Lschreyer
Schreiberling
Avatar
Gender: n/a
Posts: 527
Registered: 02 / 2007
Subject:

Re: Pin konfiguration für Uart in Xmega

 · 
Posted: 19.09.2014 - 16:38  ·  #3
Ok, dann lag ich ja richtig, vielen Dank für die Info.
An diesen Uart wird nach Bedarf ein FT232 angesteckt, sonst ist er offen. Mit Pullup arbeitet das aber stabil.
Wieder etwas gelernt :-)
Harry
Moderator
Avatar
Gender:
Location: zwischen Augsburg und Ulm
Age: 59
Posts: 2134
Registered: 03 / 2003
Subject:

Re: Pin konfiguration für Uart in Xmega

 · 
Posted: 19.09.2014 - 19:31  ·  #4
Hi und ne Frage von mir: wie gross soll der Pullup sein und kann der dann bei benutzung trotzdem dran bleiben ?

Gruss
Harry
rh
Administrator
Avatar
Gender:
Location: Germany
Age: 24
Homepage: e-lab.de
Posts: 5558
Registered: 03 / 2002
Subject:

Re: Pin konfiguration für Uart in Xmega

 · 
Posted: 19.09.2014 - 19:58  ·  #5
Hallo Harry,

hier dreht es sich um XMegas, die haben zuschaltbare interne Pullups.
Ansonsten ca. 10kOhm.

rolf
Harald_K
 
Avatar
 
Subject:

Re: Pin konfiguration für Uart in Xmega

 · 
Posted: 20.09.2014 - 15:49  ·  #6
Beim normalen Atmel funktioniert es, wenn man einfach den RXD-Portpin per DDR auf Input und den Pullup per PORT auf 1 einschaltet.

Sollte das nicht beim XMEGA genauso laufen?

und eigentlich soll man keinen MOS-EIngang offen floaten lassen, weil das irgendwann immer Probleme mit Querstrom durch die FETs gibt.
Unbenutzte Pins entweder auf Ausgang (bissel kritisch wenn man beim Basteln mit der Meßspitze abrutscht) oder Eingang mit Pullup stellen, meinetwegen auch auf Masse klemmen.
Auf Vcc klemmt man nix, wenn man mal mit Standard-TTL gearbeitet hat ;)
rh
Administrator
Avatar
Gender:
Location: Germany
Age: 24
Homepage: e-lab.de
Posts: 5558
Registered: 03 / 2002
Subject:

Re: Pin konfiguration für Uart in Xmega

 · 
Posted: 20.09.2014 - 16:08  ·  #7
Hallo Harald,

das mit dem DDR/Port Register funktioniert beim XMega nicht.
Dieser hat ein spezielles Port-Mode Register für jeden einzelnen Pin.

rolf
Lschreyer
Schreiberling
Avatar
Gender: n/a
Posts: 527
Registered: 02 / 2007
Subject:

Re: Pin konfiguration für Uart in Xmega

 · 
Posted: 25.09.2014 - 18:23  ·  #8
DDRx für Input/Output-Definition geht aber noch, zumindest ist in meinem DSC-File für den Xmega128a4U das entsprechende Register, dass das beim Xmega einstellt so benannt.

Für die Sonderfunktionen wie Pullups, Pulldown, Slewrate control usw. gibt es die PINnCTRLx Register.
n=Pin Nummer, x=Port-Buchstabe
PIN4CTRLC setzt die Parameter für Pin 4 an PortC

Die Bits teilen sich so auf:
SLREN - INVEN - OPC[2:0] - ISC[2:0]

SLREN stellt das Slew Rate Enable ein, damit wird der Pin langsamer geschaltet
INVEN invertiert den Ausgang, sehr nützlich
OPC stellt Output und Pullups ein
ISC Input/Sense Einstellungen.


OPC
000 = Totem Pole
001 = Bus keeper
010 Pulldown
011 Pullup
usw. (Siehe Handbuch)




Daneben gibt es noch
DIRCLRx
und
DIRSETx

Damit kann man direkt Pins eines Ports x aus Ausgang (DIRSETx) oder als Eingang (DIRCLRx).
Ein DIRSETC:=%00000001 setzt Pin 0 von PortC auf Ausgang, alles anderen bleiben aber unverändert! Das ist zu beachten.

Louis
Selected quotes for multi-quoting:   0

Registered users in this topic

Currently no registered users in this section

The statistic shows who was online during the last 5 minutes. Updated every 90 seconds.
MySQL Queries: 8 · Cache Hits: 14   140   154 · Page-Gen-Time: 0.020195s · Memory Usage: 2 MB · GZIP: on · Viewport: SMXL-HiDPI