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
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
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.
Weiß zufällig jemand was das an Zeit kostet:
1 | USARTC0.CTRLB&= (~USART_TXEN_bm) & (~USART_RXEN_bm) ; |
2 | USARTC0.CTRLB|= USART_RXEN_bm | USART_TXEN_bm ; |
macht dann der DMA controller überhaupt noch sinn?
Deassemlber View! Und dann mal fix deine Grundschulmathematik-Kenntnisse bemühen
1 | usart_spi_master.module->CTRLB&= (~USART_TXEN_bm) & (~USART_RXEN_bm) ; |
2 | 0000031C LDS R30,0x2001 Load direct from data space |
3 | 0000031E LDS R31,0x2002 Load direct from data space |
4 | 00000320 LDD R24,Z+4 Load indirect with displacement |
5 | 00000321 ANDI R24,0xE7 Logical AND with immediate |
6 | 00000322 STD Z+4,R24 Store indirect with displacement |
7 | usart_spi_master.module->CTRLB|= USART_RXEN_bm | USART_TXEN_bm; |
8 | 00000323 LDD R24,Z+4 Load indirect with displacement |
9 | 00000324 ORI R24,0x18 Logical OR with immediate |
10 | 00000325 STD Z+4,R24 Store indirect with displacement |
Als dann clk =32Mhz ~=31,25 ns 8*31,25ns = 250ns stimmt das so?
Hi, nicht ganz. LDS, LDD, STD brauchen 2 Zyklen ANDI, ORI brauchen jeweils 1 Zyklus. Also anstatt 8 hast du dann 14 Zyklen.
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?
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.