SD + FastSPI Library Nutzung in einem Programm möglich?

Hallo Forum,

beide Librarys nutzen SPI, kann man während des Programmablaufs irgendwie umschalten, welche Lib die Ressourcen nutzen darf oder scheitert das schon an der Initialisierung?
Die Idee dahinter ist, nachdem an den LED Strip geschrieben wurde, die Ausgabe kurz zu stoppen, Daten von SD nachzuladen und dann mit der Stripausgabe weiterzumachen.

Könnte das klappen?

Danke, Helmuth.

hi,

bei der fastSPI kann man den PIN für die ausgabe beliebig festlegen, also nutzt die doch kein SPI.

gruß stefan

Darf ich das als "Ja" interpretieren bezüglich meiner Frage "Könnte das klappen?"?

Zur SD Lib steht geschrieben "The communication between the microcontroller and the SD card uses SPI, which takes place on digital pins 11, 12, and 13 (on most Arduino boards)".

FastSPI kann ich beliebige 2 Pins zuweisen - also gibt es kein Problem?

edit: Wirklich? Ich habe schon Sketche mit datapin und clockpin Zuweisung gesehen, aber da steht immer 11 und 13. Und hier http://arduino.cc/forum/index.php/topic,142258.0.html klingt es so, als wäre es ein Problem, das umzubiegen...

hi,

ups, bin so auf den 2811er fixiert, daß ich nicht mitgedacht hab'. da gibt's ja kein clock. aber nachdem data und clock ja synchron laufen und data frei zuweisbar ist, kann ich mir nicht vorstellen, daß SPI gebraucht wird.
verlaß Dich nicht auf mich, probier's einfach aus, was soll passieren? oder warte halt auf jemanden kompetenteren, wird nicht lange dauern.

gruß stefan

hi,

helmuth, bitte keine edits, ohne das originale stehen zu lassen, sonst stimmen die antworten nimmer...

gruß stefan

Hi Eisebaer, sorry.

Ich würde es gern erstmal theoretisch abchecken, bevor ich mir ein SD Shield kommen lasse.
Ich bin leider gerade auswärts unterwegs und kann nicht mal eben fix probieren, den Strip an andere Pins zu klemmen...

hi,

kein sorry notwendig, war doch nur eine kleinigkeit.

Wirklich? Ich habe schon Sketche mit datapin und clockpin Zuweisung gesehen, aber da steht immer 11 und 13.

das hab' ich ja gemeint. 11 und 13 sind fix. wo wird bei der fastSPI bei strips mit clockline eigentlich clock angeschlossen?

gruß stefan

FastSPI kann auf andere Pins konfiguriert werden, dann wird aber nicht die SPI Hardware genutzt, was sich mächtig auf die Performance auswirkt.

Zu Deinem Problem: Ja, das kann klappen, ich habe bei mir die FastSPI mit einem Ethernet-Shield im Einsatz. Das Problem dabei: Du musst verhindern, dass die LED-Strips was von dem Traffic für das SPI-Device mitkriegen. Ich habe das so gelöst, dass ich die Datenleitung (MOSI) für den Strip über einen Transistor geführt habe, damit ich die Leitung unterbrechen kann. Zusätzlich habe ich noch Code eingebaut, damit die SPI-Register jeweils vor jedem Gebrauch auf die von den Initialisierungsroutinen festgelegten Werte gesetzt werden.

Also kurz: machbar, aber relativ aufwendig. Wenn Dir die Geschwindigkeit der LEDs wichtig ist, fast die einzige Methode.

Eisebaer:
das hab' ich ja gemeint. 11 und 13 sind fix. wo wird bei der fastSPI bei strips mit clockline eigentlich clock angeschlossen?

Standardmäßig benutzt FastSPI Pin 11 als Datenleitung UND Pin 13 für das Clocksignal.

@pylon:
Hi. Ja - die LED-Update-Geschwindigkeit ist mir am wichtigsten.

Auf Harwarebastelei würde ich gern verzichten und nur auf fertige Boards / Shields zurückgreifen.

Wie wäre es mit diesem Workarround: Arduino Mega 2560 (ich habe schon lange nach einem Grund gesucht, einen zu kaufen :wink: ) statt Uno, die Bilddaten irgendwie in den Flash Memory bekommen (geht das? - da sollten doch > 200 kB frei sein ?) und während des Programmablaufs von da in den RAM holen. Wäre das mit weniger Tüftelei zu realisieren?

edit: Habe gerade gelesen, dass die SD Lib allein 1kB RAM braucht, damit erübrigen sich wohl Versuche am Uno, ich brauche so schon fast den ganzen RAM als Bildpuffer...

Hallo,

Schon mal F-Ram von Ramtron gesehen?
Schnittstelle I2C oder SPI
Schnell wie Ram
nichtflüchtig wie Eprom

@spaceball

Hi, das klingt verführerisch. Ich lese mich mal ein und versuche herauszufinden, ob das meine Probleme löst und welche neuen es ggf. schafft. Danke.

Wie wäre es mit diesem Workarround: Arduino Mega 2560 (ich habe schon lange nach einem Grund gesucht, einen zu kaufen smiley-wink ) statt Uno, die Bilddaten irgendwie in den Flash Memory bekommen (geht das? - da sollten doch > 200 kB frei sein ?) und während des Programmablaufs von da in den RAM holen. Wäre das mit weniger Tüftelei zu realisieren?

Ja, das müsste gehen. Der Nachteil: Du musst immer einen neuen Sketch hochladen, wenn Du die Bilddaten verändern willst.

Auf den Flashspeicher kannst Du nur mit pgm_read_byte() und Verwandten zugreifen.