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.
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
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 ;)
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.
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
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... ;-)
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?
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.
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
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.
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?