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?
Ich glaube er will damit einen Sniffer bauen der zwischen 2 Geräten eingebunden wird.
Achso, ja das wäre dann natürlich denkbar. Ich dachte er meint am selben Gerät.
:
Bearbeitet durch User
Viele Anwendungsfälle gibt es für so eine große Anzahl an UARTs aber nicht, oder?
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?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.