SPI buffering ATmega8

Gast #1020877
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?
#1020890
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.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 18 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.