www.mikrocontroller.net

Forum: Compiler & IDEs SPI per Interrupt?


Autor: Danny Paulsen (chief05)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi zusammen!

Ich suche im Moment einen Gedankenanstoß :)

Mache mir grad Gedanken über meine SPI-Kommunikation.
In nahezu jedem Programmbeispiel wird vor dem Übergeben des Datenbyte an 
SPDR im SPSR auf SPIF geprüft.
Nun stelle ich mir die Frage ob man das nicht eleganter per Interrupt 
löst...?

In der Wartezeit auf SPIF vergehen 16 Takte bei höchster 
SPI-Geschwindigkeit. 16 Takte stupides warten um im Grunde zwei Befehle, 
je einen Takt, auszuführen.
Würde ich jedoch nicht aktiv warten, sondern per SPI-Interrupt das 
nächste Byte übergeben, bedeutet es dass ich für das Aufrufen und das 
Verlassen der ISR schon 7 Takte benötige zzgl. pushen/poppen von 
AVR-GCC.
Sehe ich das richtig? Würde ja heissen das eine ISR gesteuerte 
SPI-Übertragung nicht mehr lohnt wenn man den SPI-Takt schon auf max 
hat, oder?

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danny Paulsen schrieb:

> Nun stelle ich mir die Frage ob man das nicht eleganter per Interrupt
> löst...?

Nur, wenn du einen sehr, sehr langsamen SPI-Slave hast -- wie du
ja letztlich schon richtig bemerkt hast.

Bei schnelleren CPUs als einem AVR sieht das natürlich auch wieder
anders aus.

Autor: doc (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die haben aber auch schnellere SPIs.. :-)

Autor: Danny Paulsen (chief05)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank für die schnelle Antwort; etwas selbst richtig bemerken und 
damit auch richtig liegen sind ja zwei Paar Schuhe ;)

Und damit ich nich stundenlang tippe und versuche und am Ende alles 
unnötig war frag ich lieber mal...


schönen Abend erst mal (bis später ;)

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
doc schrieb:
> Die haben aber auch schnellere SPIs.. :-)

Allerdings gibt es nicht so viele SPI slaves (naja, zumindest
jenseits eines simplen 74HC595), die sehr viel schnellere SPI-Raten
noch abkönnen.

Autor: Danny Paulsen (chief05)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Jörg: Ich habe bislang immer nur Porterweiterungen mit 74HCxxx, 
Ansteuerung des S65 Display und MCP2515 (CanController mit 10MHz SPI) 
über SPI gemacht, da bin ich wohl verwöhnt was die Geschwindigkeit 
angeht :)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.