www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AVR SPI Optimierung


Autor: Daniel R. (zerrome)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

ist es möglich, bei AVR Controllern die nicht doppelt gepufferte 
Ausgangsregister für SPI haben, dauerhaft, also ohne Lücke in der 
Übertragung zu senden ?

Bei nicht doppelt gepufferten entsteht doch immer eine Lücke, in der das 
zu sendende Byte aus dem Register (schlimmsten falls sogar erst noch aus 
dem RAM) in den SPI Puffer geladen wird oder?

Kann man nicht irgendwie den Puffer des SPI umbiegen auf andere 
Adressen, das wäre super :)
Vielleicht über den Umweg das man SPI in Software macht ?!?

Grüße Daniel

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>in der das zu sendende Byte aus dem Register (schlimmsten falls sogar erst
>noch aus dem RAM) in den SPI Puffer geladen wird oder?

Schon mal nachgedacht, wie lang so etwas dauert? Wie hoch ist denn dein 
SPI-Takt?

MfG Spess

Autor: Daniel R. (zerrome)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Controller Takt ist 16 MHZ, SPI die Hälfte, also 8MHZ.

Hab mir ausgerechnet, dass ich 16 Takte frei hab, während das SPI 
Register rausgeshiftet wird.

Idealer weise würde ich gerne 512 Bytes am Stück rausshiften, ohne Pause 
dazwischen.

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Vielleicht über den Umweg das man SPI in Software macht ?!?
Ja, das ist sicher schneller, wenn du die Daten aus dem RAM holst und 
dann nicht an die Hardware-SPI gibst, sondern selber per Software 
versendest. Oder, was denkst du...   :-/

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>Hab mir ausgerechnet, dass ich 16 Takte frei hab, während das SPI
>Register rausgeshiftet wird.

Ist doch jede Menge Zeit.

>Idealer weise würde ich gerne 512 Bytes am Stück rausshiften, ohne Pause
>dazwischen.

Und wohin?

MfG Spess

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@  Daniel Platte (zerrome)

>Idealer weise würde ich gerne 512 Bytes am Stück rausshiften, ohne Pause
>dazwischen.

Geht nicht, der AVR braucht zwischen den Bytes mind. 2 Systemtakte 
Pause. Hab ich live getestet.

MfG
Falk

Autor: Daniel R. (zerrome)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Falk

Schade, diese 2 Takte kommen wahrscheinlich vom "nachladen" des SPI 
Puffers? Wobei ich mit 2 Takten eigentlich auch leben könnte. Hast Du 
das auch mit doppelt gepufferten AVR's getestet? Hm dabei seh ich grad, 
gibt es überhaupt doppelt gepufferten output SPI bei AVR's?

@spess53

Das soll zu einer MMC/SD Karte. Die würde ich halt gerne so schnell wie 
möglich ansprechen. Mit rausshiften meinte ich quasi senden ^^

Aber nicht nur für diese Anwendung wäre es toll wenn man lückenlos mit 
SPI senden könnte...


Grüße Daniel

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@  Daniel Platte (zerrome)

>das auch mit doppelt gepufferten AVR's getestet?

Welche sollen das sein? Doppelt gepuffert ist und der RX-Teil.

> Hm dabei seh ich grad,
>gibt es überhaupt doppelt gepufferten output SPI bei AVR's?

Afaik nein.

>Aber nicht nur für diese Anwendung wäre es toll wenn man lückenlos mit
>SPI senden könnte...

Es gibt Leute, die mit einem AVR und SPI ein Videosignal erzeugen, dort 
stört es scheinbar auch nicht wirklich. Für die SD-Karter ist es 
vollkommen egal.

MFG
Falk

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>> Hm dabei seh ich grad,
>gibt es überhaupt doppelt gepufferten output SPI bei AVR's?

>Afaik nein.

Stimmt so nicht ganz. Bei USARTs mit SPI-Mode ist die Pufferung 
definitiv vorhanden. Allerdings haben die keinen Slave-Mode.

MfG Spess

Autor: Daniel R. (zerrome)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ah, das wäre eine Option, USART im SPI mode, danke.
Slave mode brauch ich nicht...

Grüße Daniel

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.