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?
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.
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 ;)
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.
@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 :)
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.