mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik SPI buffering ATmega8


Autor: John Twenty (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Im Datenblatt des ATmega8 zu SPI heisst es folgendes:
"The system is single buffered in the transmit direction and double 
buffered in the receive direction.
This means that bytes to be transmitted cannot be written to the SPI 
Data Register before the entire shift cycle is completed. When receiving 
data, however, a received character must be read from the SPI Data 
Register before the next character has been completely shifted in. 
Otherwise,
the first byte is lost."

Kann mir das mal jemand erklären, was das bedeutet, kappiere es nicht 
ganz?

Autor: Nico Erfurth (masta79)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn per SPI Daten reinkommen, dann werden diese alle 8 (SPI)-Takte in 
ein Register geschrieben, welches man dann ausliest.
Vorteil: Man hat ein wenig Zeit die daten einzulesen bis sie von 
eventuellen weiteren Daten überschrieben werden.

In Senderichtung ist das aber anders. Es gibt zwischen dem 
Sende-Register und dem "Programm" keinen weiteren Puffer. Das heisst, 
wenn du SPDR beschreibst, während eine Transaktion im Gange ist, wird 
das momentan zu sendende Byte direkt überschrieben.

Solange man den AVR als Master betreibt ist das relativ egal, da dieser 
dann auch den Takt vorgibt. Als Slave hat man dann aber das Problem das 
man kaum Takte zur verfügung hat in denen man beim schreiben das SPDR 
setzen kann. Um einen AVR als sendenen SPI Slave zu nutzen muss man also 
immer noch einen Warte-mechanismus beim Master haben.  Entweder mit 
festen Zeiten oder über eine Signalisierungsleitung vom Slave zum 
Master.

Autor: John Twenty (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank!

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.