SPI: auf speziellen Pins bei Mega 2560...?

hallo, kann ich den SPI Bus auf meinem Mega 2560 mit diesen noch freien Pins belegen...? frei sind noch: 11-13 und 49-50

Nein. Diese Schnittstellen sind natürlich in Hardware vorgegeben. Wie soll man das ändern können?

Bit Banging ist eine Option, aber entsprechend langsam: http://hifiengineering.blogspot.de/2013/07/bit-banging-serial-data-with-arduino.html http://www.iesensor.com/blog/2013/07/09/software-spi-library-for-arduino-tested-on-mega2560/

shiftOut()/shiftIn() arbeiten im Prinzip auch wie SPI und können verwendet werden um Daten an SPI Devices zu senden. Hat natürlich Einschränkungen, z.B. bezüglich Mode

Es gibt auch ein paar Libs die optional Software SPI implementiert haben. z.B. SdFat für SD Karten. Da kann man in SdFatConfig.h #define MEGA_SOFT_SPI auf 1 setzen und am Ende die Pins definieren.

welche Pins sind denn für SPI belegt? finde nichts außer Zeichenkürzeltohoowabohoo...

kopfschütteln

http://arduino.cc/en/Reference/SPI

http://pighixxx.com/megapdf.pdf

MISO, MOSI, SCK + einen Pin deiner Wahl für Slave Select

genau das Bild meinte ich mit "Zeichenkürzeltohoowabohoo" MISO, MOSI, SCK sagt mir nichts, wo liegen die? pin meiner Wahl => nehme ich halt pin 50.

Wenn ich mir jetzt ein SPI Display hole, lässt sich dort in der lib sicher "pin meiner Wahl" iwo einstellen, vermute ich...(?)

Doch, man kann die meisten Pins beim Mega nutzen-aber dann über SoftSPI. Ist entschieden langsamer als die Hardware-SPI, geht aber durchaus.

Guck dir mal bei Adafruit (im learning system) die Doku zu den kleinen TFT an, zum Beispiel-dort ist erklärt, wie man welche benutzt (sicher anderswo auch, aber da weiss ichs grad ausm Kopf), deren Display-Bibliotheken unterstützen beides.

HaWe: genau das Bild meinte ich mit "Zeichenkürzeltohoowabohoo" MISO, MOSI, SCK sagt mir nichts, wo liegen die?

Auf der Arduino SPI Seite ist doch alles erklärt!!

MISO (Master In Slave Out) - The Slave line for sending data to the master, MOSI (Master Out Slave In) - The Master line for sending data to the peripherals, SCK (Serial Clock) - The clock pulses which synchronize data transmission generated by the master SS (Slave Select) - the pin on each device that the master can use to enable and disable specific devices.

Auf Wikipedia steht auch was das heißt: http://de.wikipedia.org/wiki/Serial_Peripheral_Interface

MISO = 50 MOSI = 51 SCK = 52 SS = 53

@sly: wenn möglich, würde ich schon dann das schnellere Hardware-SPI nehmen, zumal Displays ja eh schon sehr langsam sind.

ich habe auch wenig Verständnis für iwelche komplizierten libs, und SPI verstehen will ich auch gar nicht. - ich will nur ein Display kaufen, anschließen, lib einbinden, fertig - und dann debug-Informationen (meist int oder float) in mehreren Zeilen/Spalten per sprintf und putstring(x,y) etc. drauf ausgeben ohne weitere wesentliche Programmierarbeit.

ps: 50 - 53 für SPI hatte ich noch gar nicht entdeckt - ja, stimmt sogar, ganz übersehen, die sind auch noch frei! :D

HaWe: SPI verstehen will ich auch gar nicht.

Du musst immerhin verstehen was die vier Pins machen. Das kann doch nicht so schwer sein und ist wirklich nicht zu viel verlangt. :roll_eyes:

nee, ich muss ja auch nicht USB verstehen und auch nicht SDA und SCL für i2c, ich brauche da nur wire, mehr nicht. Den Rest muss die lib machen und die TFT-API Funktionen.

(Donnerwetter, was für ein lahmer Forum-Server heute wieder, ist ja echt zum Verzweifeln... dauernd Lags!!)

kopfschüttel

USB programmierst du auch nicht direkt. Die Abstraktion ist das wesentlich höher.

tja, könnte ich auch manchmal sagen ;)

nee, aber USB benutze ich eben einfach, i2c auch, da muss und will ich auch nichts verstehen, genau wie bei SPI. Nur eben korrekt an die 4 pins anschließen.

Ja und-was hindert dich dran, mal bei Adafruit im "learning system" nach 1.8" TFT zu suchen, und die Anleitung da step by step zu befolgen? Die dort verlinkte Bibliothek (sehr ähnlich der, die bei der IDE eh dabei ist) macht dann den Rest schon....die muss nur entstrechend initialisiert werden, damit sie Bescheid weiss. Allerdings: auf irgendeine kryptische Weise (ich sag dazu immer Programmcode) wirst du dem Display schon mitteilen müssen, was du von ihm erwartest-hab auch noch keins mit eingebauter Glaskugel gefunden.. Auch das ist für diese Displays dort gleich mit erklärt- direkt nach dem Teil: "wie sc hliesse ich es an". :)

Hardware-SPI kannst du natürlich nehmen (die Display-Lib. z.B. kann beides), wenn du die Pins nicht für andere Sachen brauchst, klar. Beim Mega liegen die zwischen 50 und 53, wobei der 53 bei mir hier der CS-Pin (Chip select, der muss für jedes dort angeschlossene Gerät nen eigener sein, und den setzt man LOW (glaub ich, nagel mich da jetzt bitte nicht fest drauf) um das gewünschte Gerät zu aktivieren. Der ist also flexibel, muss aber als Ausgang definiert sein.

ich will doch gar keinen 1.8" TFT, und wer weiß, was die anderen für libs mitbringen.

Außerdem weiß ich ja inzwischen, dass die SPI-Pins auf 50-53 liegen, und das geht ja auch, wie bereits gepostet.

Nur von SPI selber (low-level, was die pins tun) verstehe ich nichts und ich denke, das muss ich auch nicht, denn was da low-level-mäßig passiert, dafür ist schließlich die lib verantworlich - ansonsten: anschließen, fertig.

Ich brauche von der lib daher nur API-Funktionen ähnlich wie setfont(fonttype,fontsize) putstring(x,y,string) und evtl. putpixel(x,y) putcircle (x,y,r) putline(x1,y1,x2,y2) etc.

Tja- wenn du uns nicht verrätst, welches Display du nutzt, können wir dir auch nicht verraten, wie du es benutzen musst. ;) Der Tipp mit Adafruit erklärt die Grundlagen (und, für eben dieses Display und ne ganze Reihe weitere auch mehr, da die Lib etliche unterstützt), auch für "andere" (konkret nen SD-Slot, aber was anderes geht genauso) Geräte.Ansonsten weiss ich nun nicht, wo dein Problem ist.... Alles was du brauchst ist ne Bibliothek für dein Display, die für SPI ausgelegt ist, und dann isses gut.

Bei dem-zugegegebenermassen etwas unübersichtlichem- Markt für den Kram gucke ich immer, bevor ich irgendwas kaufe, ob es entweder selber leicht anzusteuern ist oder aber ob es ne Bibliothek gibt, grade bei Displays "unbekannter Herkunft" kann man es ansonsten ziemlich vergessen.

ich habe hier doch gar nicht gefragt, wie ich ein Display benutzen muss… :wink:
meine Ausgangsfrage war nur über SPI-Pins, die ist mittlerweile aber beantwortet.

wenn ich aber ein halbwegs preiswertes (<30 EUR) und ausreichend großes (>5cm) SPI-Display gefunden habe, das eine entsprechend einfache lib mitbringt und dazu Fragen habe, werde ich mich aber wieder melden - dann mache ich dazu aber besser einen neuen Thread auf.