Forum: Mikrocontroller und Digitale Elektronik SPI via USART am ATMega - elend lahm


von Oliver L. (ollil)


Lesenswert?

Hi,

irgendwer riet mir, doch mal meinen USART für SPI zu benutzen anstelle 
des Hardware-SPI, da aufgrund des 2 Byte Puffers beim ATMega 1284P der 
wohl schneller sein sollte.

Ich habe es mal versucht....
Ich initialisiere die SD-Card mit 40.000 Baud.
Dann, vor der Datensenderei, stelle ich die wohl maximal mögliche 
Baudrate von 1.152.000 Baud ein (habe 18,4320Mhz).
2x-Mode kann ich scheinbar nicht setzen, da das wohl laut Datenblatt nur 
im Async-Mode geht, aber nicht im Master-Mode (und mein USART läuft ja 
im SPI Master Mode)?!

Mit dem Hardware-SPI komme ich beim 512Byte-Blöcke-lese von meiner Karte 
auf ca. 440 KB/Sek.
Mit dem SPI über den USART komme ich nur auf 105 KB/Sek.

Mein Code basiert auf dem Code von AVR (AVR317: Using the USART on the 
ATmega48/88/168 as a SPI master (MSPIM))

Ich habe mal mein main.c hier hingepackt:
http://pastie.org/4045490

Hinweis: die uart_... Funktionen arbeiten nur mit dem UART0 an welchem 
ich ein 9600 8N1 Terminal hängen habe.

Wie werde ich schneller? ;)

von holger (Gast)


Lesenswert?


von Oliver L. (ollil)


Lesenswert?

Oh... hatte nicht mehr damit gerechnet, das da wer antwortet... sry ;)

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.