Forum: Mikrocontroller und Digitale Elektronik SPI mit ISR, Strings übertragen


von beavis (Gast)


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?

von Uwe (de0508)


Lesenswert?

Beider dieser Frage erhälst Du nur Antworten mit:

"42"

und

"habe meine Glaskugel verlegt".

Weissagen kann Dir das keiner hier, Du musst uns schon den gesamten Code 
zeigen.

von beavis (Gast)


Angehängte Dateien:

Lesenswert?

Sorry,

hier der Code

von Stefan F. (sfrings)


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.

von beavis (Gast)


Lesenswert?

Hi,

habs versucht und ich es klappt leider nix.
Kannst du mir bitte vielleicht ein Beispiel hier posten?
Hab mit ISR noch vorher nit gearbeitet.

von beavis (Gast)


Angehängte Dateien:

Lesenswert?

hier mein Versuch

von beavis (Gast)


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)

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.