SPI mit ISR, Strings übertragen

Gast #2820182
Lesenswert?

Hi,

habe ein lauffähiges Programm mit welches per Polling mit der SPI 
Strings sendet.

Jetzt würde ich gern das Selbe mit ISR machen.

Ich bin bis jetzt nur soweit, dass ich das Polling

while(!(SPSR) & (1<<SPIF))

auskommentiert habe und den Interruptvektor für die SPI rausgesucht 
habe.


Was muss in der ISR stehen?
#2820285
Lesenswert?

Erstmal ist Deine ISR jetzt schon fehlerhaft, denn:

"SPIF is cleared by hardware when executing the
corresponding interrupt handling vector."

Frage in der ISR ab, ob das Daten Register frei ist und schreibe (wenn 
ja) das nächste Byte hinein. Falls schon alle Bytes gesendet wurden, 
machst DU nichts.

Daraus folgt: Das erste Byte musst Du außerhalb der ISR senden, falls zu 
diesem Zeitpunkt das Daten-Register leer ist.
Gast #2820995
Lesenswert?

Ich hab das Problem mit der ISR und bin mir auch nicht sicher, wie ich 
die auskommentierte SPI_putString() auf mein ISR Sache umschreiben kann.
Ich darf ja nicht ne while in die ISR packen.
Beim debuggen wird meine ISR auch nur 1x aufgerufen (nach dem ersten 
Byte schreiben)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren