Forum: Mikrocontroller und Digitale Elektronik ATxmega32A4U - wieviele Uarts?


von Timm T. (Gast)


Lesenswert?

Ich werd gerade aus de, "Datenblatt" nicht schlau.

Die ATXmega...A4U Serie wird mit 5 USART beworben:

"PORTC and PORTD each has two USARTs. PORTE has one USART. Notation of 
these peripherals are USARTC0, USARTC1, USARTD0, USARTD1 and USARTE0, 
respectively."

Sind das jetzt wirklich 5 individuell und gleichzeitig nutzbare Uarts, 
oder sind es - wie ich vermute - 2 Uarts, die ich an 3 bzw. 2 
verschiedene Stellen für RxD und TxD legen kann?

Ich hab auch noch nichts gefunden, wie man die Selektion der Uarts 
vornimmt.

von Moby (Gast)


Lesenswert?

Timm Thaler schrieb:
> Sind das jetzt wirklich 5 individuell und gleichzeitig nutzbare Uarts

Jaaa, es sind wirklich fünf ;-)

Timm Thaler schrieb:
> Ich hab auch noch nichts gefunden, wie man die Selektion der Uarts
> vornimmt.

Was willst Du da selektieren?
Jede UART ist halt über ihre speziellen I/O Adressen ansprechbar,
z.B. für die C0:

.equ USARTC0_DATA = 2208  // Data Register
.equ USARTC0_STATUS = 2209  // Status Register
.equ USARTC0_CTRLA = 2211  // Control Register A
.equ USARTC0_CTRLB = 2212  // Control Register B
.equ USARTC0_CTRLC = 2213  // Control Register C
.equ USARTC0_BAUDCTRLA = 2214  // Baud Rate Control Register A
.equ USARTC0_BAUDCTRLB = 2215  // Baud Rate Control Register B

von M. K. (sylaina)


Lesenswert?

Timm Thaler schrieb:
> Ich hab auch noch nichts gefunden, wie man die Selektion der Uarts
> vornimmt.

Schau mal ins Datenblatt bei den Interrupts. Jeder USART hat sogar 
seinen eigenen Interrupt-Vector ;)

von Timm T. (Gast)


Lesenswert?

Moby schrieb:
> Jede UART ist halt über ihre speziellen I/O Adressen ansprechbar,
> z.B. für die C0:

Ja, aber wo zum Henker steht das?

Ich habe:

XMEGA A MANUAL: 8077I–AVR–11/2012
Da ist eine recht ausführliche Beschreibung des Usart mit Beschreibung 
der Register ab Seite 245 drin. Aber da ist als Registeradresse immer 
+0x0Y angegeben, keine absoluten Adressen.

ATxmega128A4U  ATxmega64A4U  ATxmega32A4U / ATxmega16A4U Datasheet: 
Atmel-8387H-AVR-ATxmega16A4U-34A4U-64A4U-128A4U-Datasheet_09/2014
Da ist nur eine Seite zum Usart mit allgemeinen Angaben drin.

Diverse AppNotes zu den Xmegas, unter anderem:

AVR1307: Using the XMEGA USART, 8049A-AVR-02/08
Die ist wenig hilfreich.

Alle Datenblätter und Appnotes frisch von der Atmel-Seite zum A4U.

Ich seh ja ein, dass die Funktionen so umfangreich sind, dass das nicht 
mehr alles detailliert in ein Datenblatt passt. Aber ich hab den 
Eindruck, irgendwas fehlt mir noch.

von Robert W. (robwa)


Lesenswert?

Hallo schau mal unter Kapitel "33. Peripheral Module Address Map" ab 
Seite 60 nach, da sind die einzelnen Adressen aufgelistet.
Z.B:
Base address  Name     Description
0x08A0        USARTC0  USART 0 on port C

von Timm T. (Gast)


Lesenswert?

Aaaahhh, gefunden! Danke!

Das heist, ich kann mir einen Port-Sniffer für RS232 bauen, indem ich 
RxD der Leitung auf RxD vom UsartC0 und TxD auf RxD von UsartC1 lege?

Wie aber, wenn ich einen Port-Sniffer für SPI möchte, dann muss ich MISO 
und MOSI auf je einen MOSI von SPIC und SPID legen, und CLK auf beide 
CLKs, oder?

Ach Mist, auf SCKD liegt auch D+ vom USB. Ich brauch nen größeren 
Controller... ;-)

von M. K. (sylaina)


Lesenswert?

Timm Thaler schrieb:
> Das heist, ich kann mir einen Port-Sniffer für RS232 bauen, indem ich
> RxD der Leitung auf RxD vom UsartC0 und TxD auf RxD von UsartC1 lege?

Öhm, wieso sollte man das denn machen? Warum nicht schaun ob beim 
USARTC0 was passiert? Sehe grade nicht wirklich einen Sinn darin USARTC0 
und USARTC1 miteinander zu verbinden.
Mit dem Interrupt bekommste doch mit wenn was rein kommt und wenn du was 
sendest…naja, das weiß man doch, da braucht man doch nicht Sniffen??? 
Verstehe da nicht wirklich den Sinn dahinter. Warum willst du denn 
Sniffen?

von Dennis Restle (Gast)


Lesenswert?

Ich glaube er will damit einen Sniffer bauen der zwischen 2 Geräten 
eingebunden wird.

von M. K. (sylaina)


Lesenswert?

Achso, ja das wäre dann natürlich denkbar. Ich dachte er meint am selben 
Gerät.

: Bearbeitet durch User
von greg (Gast)


Lesenswert?

Viele Anwendungsfälle gibt es für so eine große Anzahl an UARTs aber 
nicht, oder?

von M. K. (sylaina)


Lesenswert?

Also ich sags mal so: Hier bei uns in der Produktion gibt es einige 
Maschinen deren Hauptrechner mit verschiedenen 
Controllern/Maschinenteile über Seriell reden und da sind vier serielle 
Ports nicht selten. Zumindest bei älteren Maschinen, heute würde man 
wohl ein Bus wie z.B. SPI benutzen.

von spess53 (Gast)


Lesenswert?

Hi

>Zumindest bei älteren Maschinen, heute würde man
>wohl ein Bus wie z.B. SPI benutzen.

Die XMega-USARTs können, wie auch die USARTs halbwegs aktueller AVRs, 
auch als SPI-Master konfiguriert werden.

MfG Spess

von M. K. (sylaina)


Lesenswert?

spess53 schrieb:
> Die XMega-USARTs können, wie auch die USARTs halbwegs aktueller AVRs,
> auch als SPI-Master konfiguriert werden.

Und was hat das mit den alten Maschinen bei uns zu tun? Deinen Hinweis 
verstehe ich leider grade nicht.

von Timm T. (Gast)


Lesenswert?

greg schrieb:
> Viele Anwendungsfälle gibt es für so eine große Anzahl an UARTs aber
> nicht, oder?

Och, ich hätte im letzten Projekt schonmal 3 gebraucht, zwei hab ich 
dann in Software gemacht.

Ja, mit dem Port-Sniffer ist gemeint, dass ich mich an die TxD und 
RxD-Kommunikation zwischen zwei Geräten hänge und sowohl TxD als auch 
RxD gleichzeitig mitlesen kann, ohne in den Datenfluss einzugreifen. Das 
ist natürlich mit mehreren Usarts und dem DMA genial und schnell, da 
dürfte kein Software-Uart mitkommen.

Wenn ich das für SPI machen will, brauche ich ja die Daten auf der 
MOSI-Leitung => mit einem MOSI des AVR samplen, die Daten auf der 
MISO-Leitung => mit dem zweiten MOSI des AVR samplen, und den Takt auf 
SCK auf beide SPI-Usarts zur Synchro der beiden Usarts. Oder?

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.