Forum: Mikrocontroller und Digitale Elektronik Arduino TFT ohne SPI


von 12V DC (Gast)


Lesenswert?

Ich habe wieder eine Frage zum 
Arduino-TFT-LCD(http://arduino.cc/en/Main/GTFT):
ICh möchte gerne SCK und MOSI auf andere Pins setzen. Ich habe es 
versucht, so wie hier(http://arduino.cc/en/Reference/TFTLibrary) 
beschrieben, aber der Compiler meint, das es die TFT() Funktion nicht 
mit 5 Parametern gibt. Mir würde jetzt nurnoch einfallen, in der 
arduino_pin.h diese Pins zu verändern. Das Problem dabei ist aber, dass 
ich nicht die Hauptpinbelegung für ein Projekt verändern möchte.
Weiß jemand, wie ich das doch ohne SPI hinkriege?

12V DC

PS:Ich kann die nicht im Programm überschreiben, da es Const-Variablen 
sind und keine defines

von PittyJ (Gast)


Lesenswert?

Der Compiler meint gar nichts, weil er keine Meinung hat.
Er gibt nur Fehlermeldungen aus. Und ohne diese können wir nicht weiter 
helfen.

Warum sollten die SCK und Mosi auf andere Pins? Weil es sexy ist?

von 12V DC (Gast)


Lesenswert?

PittyJ schrieb:
> Warum sollten die SCK und Mosi auf andere Pins? Weil es sexy ist?

Nein, weil die Pins 11,12,13 von dem Arduino Motorshield benutzt werden 
und ich sie nicht zur Ansteuerung von dem LCD benutzen kann. oder macht 
das MOSI und SCK nichts aus? Wäre gut wenn nicht;)

PittyJ schrieb:
> Er gibt nur Fehlermeldungen aus. Und ohne diese können wir nicht weiter
> helfen.

Bei mir nicht. Fehlermeldung/Meinung ;):

Arduino: 1.5.4 (Linux), Board: "Arduino Uno"
lcdtest2:32: error: no matching function for call to ‘TFT::TFT(int, int, 
const uint8_t&, const uint8_t&, int)’
home.../arduino-1.5.4/libraries/TFT/src/TFT.h:17: note: candidates 
are: TFT::T
home.../arduino-1.5.4/libraries/TFT/src/TFT.h:15: note: 
TFT::TFT(const TFT&)

von Sascha W. (sascha-w)


Lesenswert?

12V DC schrieb:
> PittyJ schrieb:
>> Warum sollten die SCK und Mosi auf andere Pins? Weil es sexy ist?
>
> Nein, weil die Pins 11,12,13 von dem Arduino Motorshield benutzt werden
> und ich sie nicht zur Ansteuerung von dem LCD benutzen kann. oder macht
> das MOSI und SCK nichts aus? Wäre gut wenn nicht;)
also wenn das Motorshield auch per SPI gesteuert wird, spricht nichts 
dagegen das gleichzeitig auch fürs LCD zu verwenden. Nur CS der 
SPI-Slaves muss getrennte PINs haben.

Sascha

von 12V DC (Gast)


Lesenswert?

Sascha Weber schrieb:
> Nur CS der
> SPI-Slaves muss getrennte PINs haben.

Is ja logisch.

Sascha Weber schrieb:
> also wenn das Motorshield auch per SPI gesteuert wird, spricht nichts
> dagegen das gleichzeitig auch fürs LCD zu verwenden.

Ich glaube da liegt das Problem: Die Pins 13 & 12 werden für die 
Direktsteuerung der Motoren verwendet und der Pin 11 wird zur 
PWM-Steuerung von Motor B verwendet. Das Motorshield wird laut 
Schaltplan nicht mit SPI geseuert, aber keine Garantie. Sachaut lieber 
noch mal nach.

von Cyblord -. (cyblord)


Lesenswert?

Also normalerweise schaut man, welche Peripherie man ansteuern will, 
dann schaut man welche und wieviele Pins man dafür braucht. Dann wählt 
man den Controller für diese Aufgabe aus.

In der wunderbar verrückten Arduino Welt aber, da baut man einfach 
Shields aufeinander, wie beim Turmbau zu Babel, und wundert sich dann 
wenn spezielle Pins mehrfach belegt sind. Natürlich weiß man auch nicht, 
ob nun HW-SPI oder SW-SPI zum Einsatz kommt, weil man ja nix selber 
gemacht hat und von dem ganzen Kram sowieso keine Ahnung hat. Also weiß 
man auch nicht, ob man die SPI Schnittstelle verlegen darf. So muss man 
jetzt also im Nebel der eigenen Unwissenheit und des ganzen Arduino 
Wahnsinns stochern, wahllos in Header Dateien pfuschen (von denen man 
auch keine Ahnung hat) und hoffen und beten dass es vielleicht am Ende 
manchmal geht. Geht natürlich nicht, weil man bereits Compilerausgaben 
nicht lesen kann.

Hätte man nun wirklich selbst Entwickelt, wäre es kein Problem, die PWM 
weg von SPI zu legen, oder falls das nicht geht, kann man SPI immernoch 
in SW machen oder auf einen Controller mit mehr PWM Ausgängen umsteigen, 
so dass sich nichts mehr im weg ist. Aber als Arduino-User bleibt einem 
lediglich blöd gucken übrig.

Mit einem Wort: Arduino und seine User haben sich gegenseitig verdient.

gruß cyblord

: Bearbeitet durch User
von PittyJ (Gast)


Lesenswert?

Ja, sieht genz so aus, als ob beide Shields nicht parallel an einem 
Arduino betrieben werden können.

Nimmt man halt 2 Arduinos, die über Rs-232 kommunizieren. da kann man 
auch auf einen Nano runter gehen, damit es kompakter wird.

Oder halt selbst eine Platine entwickeln.
Software-SPI würde ich nicht empfehlen.

von Gut Viehling (Gast)


Lesenswert?

@Cyblord

Steck mal den Finger in den Hals und bring die Keule der Weihnachtsgans
wieder raus, dann ist Dir wohler.

von 12V DC (Gast)


Lesenswert?

Das sämtliche Forenmitglieder immer so asozial sind.

@cyblord
Ich hab nunmal ein Arduino mit Motorshield und würde dies Display und 
benutze es auch. Das sind halt die Probleme von Arduino, andere 
µC-Boards haben andere Probleme...

cyblord ---- schrieb:
> Also weiß
> man auch nicht, ob man die SPI Schnittstelle verlegen darf.

Doch man kann es, wie ich aus dem Tutorial, das ich verlinkt habe 
etnehme. Außerdem kopiere ich, wenn es garnicht anders geht die Header 
für SPI, passe sie an und binde die ein.

cyblord ---- schrieb:
> Mit einem Wort: Arduino und seine User haben sich gegenseitig verdient.

HÄ?



An die anderen PRODUKTIVEN:
Ich könnte das auch über die ICSP-SChnittstelle machen, aber da wirft 
sich bei mir die Frage auf, ob das MOSI & SCK der ICSP mit dem Pin 13,11 
verbunden ist, oder ob ich das unabhängig von den Pins verwenden kann, 
denn dann hätte sich die Sache ja geklärt.

von Kaj (Gast)


Lesenswert?

12V DC schrieb:
> Ich könnte das auch über die ICSP-SChnittstelle machen, aber da wirft
> sich bei mir die Frage auf, ob das MOSI & SCK der ICSP mit dem Pin 13,11
> verbunden ist, oder ob ich das unabhängig von den Pins verwenden kann,
> denn dann hätte sich die Sache ja geklärt.
Schau dir mal den Schaltplan von dem Arduino an. Da der Controller 
vermutlich nur ein HW-SPI hat, werden die Pins mit ein ander verbunden 
sein.

von Peter D. (peda)


Lesenswert?

Fürs GLCD sollte man schon das HW-SPI nehmen, sonst kann man den Pixeln 
beim Aufbau gemütlich zuschauen.
Bei vielen AVRs hat auch die UART einen SPI-Modus.
Ansonsten den Motor auf andere Pins legen.

von 12V DC (Gast)


Lesenswert?

Peter Dannegger schrieb:
> Ansonsten den Motor auf andere Pins legen.

Schau dir das Motorshield mal genau an: Das ist alles fest mit den Pins 
verlötet. Da kann man mal nicht eben mal den Pin ändern. Deshalb frage 
ich ja nach.

Kaj schrieb:
> Schau dir mal den Schaltplan von dem Arduino an. Da der Controller
> vermutlich nur ein HW-SPI hat, werden die Pins mit ein ander verbunden
> sein.

Da liegt das Problem: Auf dem Schaltplan ist das MOSI & SCK vom ICSP 
direkt an den AtMega angschlossen, und hat einen eigene Pins.  Aber wnn 
dem so ist, dann kann man doch nicht den MISO und SCK 
einstellen(programmieren).

von Kaj (Gast)


Lesenswert?

12V DC schrieb:
> Aber wnn
> dem so ist, dann kann man doch nicht den MISO und SCK
> einstellen(programmieren).
Das ist richtig, du kannst sie nicht unabhaengig von einander 
einstellen.
Meiner Meinung nach hast du 2 Moeglichkeiten:
1. Du versuchst es mit dem UART in SPI Mode
2. Du musst dich entscheiden und eins von beiden mit Software-SPI 
betreiben (ich wuerde das Motorschield nehmen!)

Du kannst natuerlich auch einen zweiten Controller nehmen usw, aber das 
ist meiner Meineung nach keine wirkliche Option...

Gruesse

von Peter D. (peda)


Lesenswert?

12V DC schrieb:
> Schau dir das Motorshield mal genau an

Wo?

von 12V DC (Gast)


Lesenswert?

Kaj schrieb:
> 2. Du musst dich entscheiden und eins von beiden mit Software-SPI
> betreiben (ich wuerde das Motorschield nehmen!)

Das Motorshield bentzt meines Wissens kein SPI, aber genau weiß ichs 
auch nich.

Kaj schrieb:
> Das ist richtig, du kannst sie nicht unabhaengig von einander
> einstellen.

Das versth ich nicht. ICh meinte eigentlich, das ich den MOSI und SCK 
Pin nicht programieren kann, wenn er in der HArdware festgelegt ist. 
Aber ich glaube ich versteh jetzt: Der MOSI und SCK vom ICSP eignet sich 
dafür, da er laut Schaltplan immer da ist und vor allem unabhängig vom 
Programm ist. Die SPI-Pins sind-soweit ich das versthe nur zusatz. Mit 
ner LED an Pin 13 geht das jetzt auch. Das Display geht nicht immer An 
und Aus. Ich probiers gleich auch nochmal mit Pin 11.

von 12V DC (Gast)


Lesenswert?

Mist, ich nehm das
12V DC schrieb:
> Mit
> ner LED an Pin 13 geht das jetzt auch. Das Display geht nicht immer An
> und Aus. Ich probiers gleich auch nochmal mit Pin 11.
zurück. Die LED blinkt im Takt der jeweiligen Übertragung. Die war nur 
zufällig so wie ich sie eingestellt hatte.

Aber meine ursprüngliche Frage war ja, warum diese Funktion(TFT(int, 
int, int)) nicht so verwendet werden kann, wie auf arduino.cc 
beschrieben(Link oben), weil dann wäre es ja kein Problem. Der Compiler 
gibt mir die Fehlermeldung aus, das die Funktion nur 3 Int-PArameter 
besitzt statt(wie im tut) fünf.

von 12V DC (Gast)


Lesenswert?

Peter Dannegger schrieb:
> 12V DC schrieb:
>> Schau dir das Motorshield mal genau an
>
> Wo?

Da:
http://arduino.cc/de/Main/ArduinoMotorShieldR3

PS: GIDF ;)

von Stefan D. (reverse)


Lesenswert?

knips die Pins des Motorschields die du für das SPI des glcds benutzen 
willst ab und such dir 2-3 andere Freie pins aus, an denen du Drähtchen 
lötest. diese neuen Pins deklarierst dann als Steuerpins für dein 
Motorshield.

von 12V DC (Gast)


Lesenswert?

Habe ich auch grad dran gedacht, das ich es aufs Breadboard stecke und 
anders verkable(is wohl das einfachste)...
Aber wenn ihr mir trotzdedm sagen könntet, wie man das macht wie auf 
Arduino.cc beschrieben wäre ich euch sehr dankbar. Mich interressierts 
einfach.

von Markus (Gast)


Lesenswert?

12V DC schrieb:
> ICh möchte gerne SCK und MOSI auf andere Pins setzen. Ich habe es
> versucht, so wie hier(http://arduino.cc/en/Reference/TFTLibrary)
> beschrieben, aber der Compiler meint, das es die TFT() Funktion nicht
> mit 5 Parametern gibt.

Siehe:
http://forum.arduino.cc/index.php?topic=188144.0

von 12V DC (Gast)


Lesenswert?

Perfekt, vielen Dank euch allen. Vor allem Markus!

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
Noch kein Account? Hier anmelden.