Forum: Mikrocontroller und Digitale Elektronik interrupt für die "spi-daten"


von roboterheld (Gast)


Lesenswert?

hallo, wann wird eigentlich der interupt für "spi" aufgerufen. welche 
situation muss erfüllt sein?

mfg

von Obelix (Gast)


Lesenswert?


von Falk B. (falk)


Lesenswert?

@  roboterheld (Gast)

>hallo, wann wird eigentlich der interupt für "spi" aufgerufen. welche
>situation muss erfüllt sein?

Meistens wenn die Übertragung eines Bytes abgeschlossen ist.

MFG
Falk

von roboterheld (Gast)


Lesenswert?

wenn der master sendet werden ja die daten vom spi-interrupt als 
abgeschlossen empfangen gemeldet. da die datenrate sehr hoch ist, möchte 
ich mal wissen, wie der datentransfer kontrolliert von statten geht.
nach dem motto : byte raus vom master, slave empfängt und der user packt 
die daten in irgendeine variable und gibt zum master das go, das nächste 
byte zu senden. wie wird das im regelfall reguliert.

mfg

von Falk B. (falk)


Lesenswert?

@ roboterheld (Gast)

>wenn der master sendet werden ja die daten vom spi-interrupt als
>abgeschlossen empfangen gemeldet.

???
Komischer Satz.
Der Interrupt meldet (bei den meisten uCs) das Ende der Übertragung. 
Sende und Empfangen wird gleichzeitig, auf getrennten Leitungen.

> da die datenrate sehr hoch ist, möchte
>ich mal wissen, wie der datentransfer kontrolliert von statten geht.

SPI

>nach dem motto : byte raus vom master, slave empfängt und der user packt
>die daten in irgendeine variable und gibt zum master das go, das nächste
>byte zu senden. wie wird das im regelfall reguliert.

AVR-Tutorial: Schieberegister

MFG
Falk

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Falk Brunner wrote:

> Der Interrupt meldet (bei den meisten uCs) das Ende der Übertragung.
> Sende und Empfangen wird gleichzeitig, auf getrennten Leitungen.

Vielleicht wollte er ja darauf hinaus, dass SPI eher für
Hardware-Slaves geeignet ist denn für Controller-Slaves.  Im Prinzip
ist es ja einfach ein Schieberegister.  Da es keine flow control gibt
(anders als z. B. bei I²C), kann der Slave nicht mitteilen, dass er
die Daten noch gar nicht bereit gestellt hat -- er muss es einfach
innerhalb der vorgesehenen Zeit getan haben.

Wenn du nun für die Bereitstellung der Daten erst noch das soeben
empfangene Byte auswerten musst (damit du weißt, welche Daten es
denn sein sollen), und das vielleicht auch noch als Reaktion auf einen
SPI-Interrupt (mitsamt seiner Interruptannahme-Zeit), dann muss der
Master schon ein ganzes Weilchen ,,freiwillig'' vorher warten.

Der SPI-Interrupt hat eigentlich nur Sinn, wenn die Zeit für die
Datenübertragung (auf Grund einer geringen SPI-Taktrate im Vergleich
zur CPU-Frequenz) sehr langsam von Statten geht.  Da die Slaves in der
Regel wirklich in Hardware gegossen sind und oft sehr hohe SPI-Raten
verkraften, wird man die Benutzung dieses Interrupts nicht sehr
häufig antreffen.

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.