mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Läuft der SPI Master-Mode im Hintergrund?


Autor: Gerhard (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich beschäftige mich derzeit mit der Ansteuerung des Siemens s65
Displays mit einem mega32 unter Bascom.
Nun habe ich die zeitkritischen Sachen
(Shiftout) schon alle in Assembler
innerhalb Bascom programmiert.
Nun meine Frage : Bringt es noch was die Ausgabe
der Daten auf hard SPI umzustellen ??
Meiner Meinung nach nur dann ,wenn die SPI Ausgabe im Hintergrund
(so wie ein Timer) laufen würde.
Oder ist es bei SPI auch so dass der Prozzi nichts anderes
machen kann bis er die Daten rausgepumpt hat.
Hoffe mir kann da wer helfen, danke.

Gruss Gerhard

Autor: D. W. (dave) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ein Zeitgewinn ist es sicher.

Aktuell musst du ja jedes Bit anschaun und dann entsprechend die Pins 
setzen. Du bist also andauernd beschäftigt und schaffst sicher nicht 
F_CPU / 2.

Wenn du das Hardware SPI verwendest, dann sieht es so aus:
SPDR = data;
while(warten...)
SPDR = data;
while(warten...)

Kommt natürlich jetzt auf die Frequenz an, mit der du die Daten aus derm 
SP-Interface rauspustest: Wenn du die maximale Geschwindigkeit hast, 
dann ist das Byte so schnell draußen, dass es sich nicht lohnt, was 
zwischendrin zu machen.

Ich würde auf jedenfall Hardware machen, schneller ist es sicher.

Autor: Gerhard (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo David,

danke für deine rasche Antwort.
Muss ich doch nochmal probieren ob ich's mit Hardware SPI zum laufen 
bringe. Bis jetzt leider ohne Erfolg.

Gruss Gerhard

Autor: D. W. (dave) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du musst warten, bis das Byte rausgeshiftet ist. Mit Bascom kenn ich 
mich leider nicht aus, aber SPI war eigentlich noch nie ein Problem.

Zum S65 gibts was in der Codesammlung, falls du das noch nicht weißt.

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
und ganz wichtig: auf den SS-Pin achten (entwder als Ausgang setzten 
oder an VCC siehe Datenblatt), wenn das nicht stimmt, dann schaltet der 
MC vom Master in den Slave Mode, und dann wird´s nichts mit der 
Übertragung.

Autor: Gerhard (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

na wenn das nicht im Hintergrund läuft dann wirds mit Hardware SPI
nicht um gar so viel schneller.
Sind doch immerhin 6 Bytes (48 Bit's) die pro Pixel rausgeshiftet werden
müssen.
Werd ich aber heute gleich noch mal testen.
Nächste Überlegung wäre einen extra AVR zu verwenden der die bytes an 
einem Port parallel erhält und brav rauspumpt.

Gruss Gerhard

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hardware-SPI geht auch Interrupt-gesteuert (vermute, das ist es, was Du 
mit "im Hintergrund laufen" meinst). Allerdings kommen bei hohen 
SPI-Takten die Interrupts sehr schnell hintereinander, so dass der µC eh 
zu nix anderem mehr kommt. Dann kannste auch warten.

In einer Hochsprache programmiert würde das bei den Frequenzen sowieso 
eng, weil allein der Aufruf einer ISR plus den Sachen, die der Compiler 
noch da reinschiebt (Register sichern) u.U. schon deutlich länger dauert 
als das Rausschieben eines Bytes. Wenns Dir wirklich auf Geschwindigkeit 
ankommt, biste da vermutlich ohne Interrupt schneller.

Autor: Gerhard (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

hab's jetzt auf HW SPI umprogrammiert
Läuft schon etwas schneller mit F_CPU / 2.
Also nochmals Danke für Eure Hilfe.

Gruss Gerhard

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.