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