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?
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
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

Eine eigene Frage? Dieser Thread ist über 14 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.