mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AVR Xmega USART DMA


Autor: Hans W. (hans_w30)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hy,
Ich bin gerade dran an einem USART der über SPI Master Mode 
kommuniziert. Dies mache ich da ich den DMA Controller verwende.
Nun meine Frage, kann ich wenn ich ihn als Master betreibe und nur den 
RX DMA Controller eingeschaltet habe, auch mit einem anderen Master ein 
Takt auf den XCK legen. Hört das mein Xmega und versteht das auch?

Gruß und danke für eure Hilfe

Autor: Werner B. (werner-b)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ist ähnlich wie bei einem Motorrad ohne Rückwärtsgang.

Wenn ich mich verkehrt herum draufsetzte, fährt es dann rückwärts?

Antwort: Nicht wirklich

Autor: Hans W. (hans_w30)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Durch ausprobieren habe ich herausgefunden, das es bedingt geht. Wenn 
ich als USART noch nichts gesendet habe kann ich empfangen. Sobald ich 
einmal was gesendet habe passt irgendwas mit dem Clock nicht mehr.
Jetzt kann ich RX und TX aus und wieder einschalten dann kann ich wieder 
empfangen.

Autor: Hans W. (hans_w30)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Weiß zufällig jemand was das an Zeit kostet:
  USARTC0.CTRLB&= (~USART_TXEN_bm) & (~USART_RXEN_bm) ; 
  USARTC0.CTRLB|=  USART_RXEN_bm | USART_TXEN_bm ;

macht dann der DMA controller überhaupt noch sinn?

Autor: haha (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Deassemlber View! Und dann mal fix deine Grundschulmathematik-Kenntnisse
bemühen

Autor: Hans W. (hans_w30)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
    usart_spi_master.module->CTRLB&= (~USART_TXEN_bm) & (~USART_RXEN_bm)  ; 
0000031C  LDS R30,0x2001    Load direct from data space 
0000031E  LDS R31,0x2002    Load direct from data space 
00000320  LDD R24,Z+4    Load indirect with displacement 
00000321  ANDI R24,0xE7    Logical AND with immediate 
00000322  STD Z+4,R24    Store indirect with displacement 
    usart_spi_master.module->CTRLB|=  USART_RXEN_bm | USART_TXEN_bm;
00000323  LDD R24,Z+4    Load indirect with displacement 
00000324  ORI R24,0x18    Logical OR with immediate 
00000325  STD Z+4,R24    Store indirect with displacement 

Als dann clk =32Mhz ~=31,25 ns

8*31,25ns = 250ns

stimmt das so?

Autor: Kurz.Helmut (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

nicht ganz.

LDS, LDD, STD brauchen 2 Zyklen
ANDI, ORI brauchen jeweils 1 Zyklus.

Also anstatt 8 hast du dann 14 Zyklen.

Autor: Hans W. (hans_w30)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Ok Danke,
ich hab jetzt weiterhin ein problem, das der DMA Controller manchmal ein 
Byte verschluckt. Ich schicke dauerhaft das gleiche raus und schau mir 
das ganz mit dem Oszilloskop an.
Hier sehe ich das immer wieder  (nicht vorhersagbar) das 3. Byte einfach 
fehlt.
Ich hab nur ein XMEAG 128A1 dran hängen und die Ausgnänge ans 
Oszilloskop gehängt.

Hat hierbei jemand schon erfahrungen gemacht?

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.