Schönen guten Abend, ich habe ein, für mein Projekt wunderbares Display gefunden, für den es schon eine fertige Library gibt, jedoch ist die für den Arduino. Ich habe ein wenig gegoogelt und leider nur gefunden wie ich C-Code in Arduino-Code umwandle (bzw C auf ein Arduino One) , nicht umgekehrt... Ich hoffe dass es da eine Möglichkeit gibt, die Library in meinen AVR-GCC einzuspielen um so mit meinem Standard C weiter zu machen...
Wie wärs mit Arduino Code angucken, denken und dann in C Code übersetzen? Was automatisches wird da doch bloss mist machen. Use Brain 1.0.
Dieses Display: http://adafruit.com/products/358 Leider habe ich in meinem Leben noch nie mit Arduino gearbeitet :(.
coco jack schrieb: > Dieses Display: http://adafruit.com/products/358 Geht sogar auf dem Steckbrett, wie das Bild aus sieht. Geil. Aber nur mit der richtigen Software. > Leider habe ich in meinem Leben noch nie mit Arduino gearbeitet :(. Was hat der liebe Gott noch mal vor den Erfolg gesetzt? Den Schwei*?
coco jack schrieb: > Schönen guten Abend, > > ich habe ein, für mein Projekt wunderbares Display gefunden, für den es > schon eine fertige Library gibt, jedoch ist die für den Arduino. > > Ich habe ein wenig gegoogelt und leider nur gefunden wie ich C-Code in > Arduino-Code umwandle (bzw C auf ein Arduino One) , nicht umgekehrt... > > Ich hoffe dass es da eine Möglichkeit gibt, die Library in meinen > AVR-GCC einzuspielen um so mit meinem Standard C weiter zu machen... Der Standard-Spruch dazu ist: Du kannst aus einem Burger(-Patty) nicht wieder eine Kuh machen. Also Sorry, nein, sowas geht im allgemeinen nicht, jedenfalls nicht vollautomatisch. Würde Dir sowieso nix nützen, ein Atmel und was immer Du benutzt sind ganz und gar inkompatibel soweit es Hardware-Ansteuerung angeht. Display-Libs gibt es doch jede Menge, sicher dass es keine passende für Deine Plattform gibt?
Seit es das Internet gibt bin ich mir nie sicher, aber ich bin leider auch kein Google-Guru, daher habe ich noch keine gefunden.. :( Und es sieht sehr kompliziert aus so ein Display selber anzusteuern.. ich hätte am liebsten eine Routine die einfach ne Matrix übergibt und der Display die dann anzeigt.. die Grafiken selber da reinzubekommen ist kein Problem, das habe ich schon oft gemacht. Falls jemand langeweile hat, der Controller wäre der ST7735R (ja steht in der Überschrift) Ich mach mich nochmal auf die Suche nach ner C-Library
Arduino ist C Code mit libraries! Hast du dir die library überhaupt auch nur mal angeguckt? das ist eine .h Datei und eine .cpp. Ich hab die mal überflogen und das einzige Arduino spezifische was ich dadrin gesehen habe waren die Stellen in denen die aus Arduino Pin-Bezeichnungen (Digital1, Digital2, ...) wieder AVR Standards machen (PB1, PB2, ...). Guck dir die Library doch einfach mal an, und wenn du dann zu irgendwas spezifischen Probleme hast, frag das hier nochmal nach.
Ich hab auch ein wenig mit Arduino bisher rumexperimentiert und hab mir die mitgelieferten Libraries angesehen. Im Prinzip kannst du jedes beliebige Arduino Project durch den GCC jagen. Das sollte ohne Probleme gehen. Die Libraries im Arduino sind halt ziemlich generisch gehalten damit sie auf jedes Board passen. Was willst du eigentlich genau erreichen? Ist es nur ein simples LCD Display ansteuern? In dem Fall nimm ne fertige Library dies hier im Forum zu finden gibt und gut ist. Dann kannst du auf die komplette Arduino Umgebung verzichten. Welches Arduino Board nimmst du? Ich hab hier das 2560er rumliegen was ich schon recht komplex finde...
Jasch schrieb: > Du kannst aus einem Burger(-Patty) nicht > wieder eine Kuh machen. Nee. Das ist ja heute anders. Früher bestand ein Burger aus Bestandteilen einer Kuh. Heute hat er sicher die Bestandteile von 5000 Kühen. Garantiert.
z.B. : void Adafruit_ST7735::writecommand(uint8_t c) { *rsport &= ~rspinmask; *csport &= ~cspinmask; //Serial.print("C "); spiwrite(c); *csport |= cspinmask; } ich wusste nicht dass das C ist genauer gesagt: Adafruit_ST7735::writecommand(uint8_t c) normalerweise wäre doch: writecommand(uint8_t c) eine normale Funktion, was heißt das vor den ::
Hm sieht tatsächlich wie C++ Code aus. Da müsste man dann tatsächlich den G++ anwerfen. Was hindert dich eigentlich dran dass zu tun?
also ich bin Momentan im AVR-GCC drin und schaue was er alles includet, um ihm das zu geben.. ich hänge grade an #include "pins_arduino.h" und #include "wiring_private.h", wobei das erste klar ist, es wäre nur ungemein hilfreich wenn ich wissen würde was dort normalerweise drin steht.
Das sind wie gesagt includes die den Code auf die unterschiedlichen Pinbelegungen der verschiedenen Arduino Boards mappen.
da das dort ja drinsteht, müssen die Daten ja auch irgenwo existieren.. Ich hab den Arduino - IDE auf dem PC.. ich such mal ob ich die finden kann.
Die Dateien findest du im Ordner deiner Arduino Umgebung. Unter OSX beispielsweise ist dass ein Directory das nur erscheint wenn man Paktinhalt anzeigen per Rechtsklick aufs Programmicon anwählt. In Windows sollte das evtl im Jar file mit drin sein, weiss ich aber nicht genau. Schau dir dochmal den Ordner an indem sich deine Arduino Umgebung befindet.
ok, habe alles soweit gefunden.. jetzt muss ich alles nurnoch an meinen ATMega 644 anpassen und hoffen dass alles funktioniert (achja und den Display bestellen)
Was bedeuten diese Defines in der pins_arduino.h für den ATMega 168 ?
1 | #define digitalPinToPCICR(p) (((p) >= 0 && (p) <= 21) ? (&PCICR) : ((uint8_t *)0))
|
2 | #define digitalPinToPCICRbit(p) (((p) <= 7) ? 2 : (((p) <= 13) ? 0 : 1))
|
3 | #define digitalPinToPCMSK(p) (((p) <= 7) ? (&PCMSK2) : (((p) <= 13) ? (&PCMSK0) : (((p) <= 21) ? (&PCMSK1) : ((uint8_t *)0))))
|
4 | #define digitalPinToPCMSKbit(p) (((p) <= 7) ? (p) : (((p) <= 13) ? ((p) - 8) : ((p) - 14)))
|
sind das die Ext-Interrupt - Pins?
Wie gesagt die Libraries sind ein Dschungel und die generische Programmierung vereinfacht nicht gerade die Übersicht. Schau dir doch mal die Dokumentation deines Boards genauer an. Evtl kannst du ja den C Compiler noch einige Makros auflösen lassen um dahinter zu kommen, wobei ich auch schon feststellen musste dass vieles blöderweise in zusätzlich generiertem Code endet.
Schau google findet beim ersten Hit schon was dazu: http://web.archiveorange.com/archive/v/9kgcbRjn6nTftD65Ncry
Ich bestell mir das ganze morgen und fange dannan rumzubasteln... ich denke ich werde versuchen aus der Existierenden Lib mir das rauszufischen was ich brauche. habe ein wenig von der Lib verstanden, jedoch habe ich noch nicht kapiert wie man mit einer Tabelle umgeht (Siehe PROGMEM). Das sehe ich jetzt zum ersten mal.. aber das wird schon.. Falls am ende was brauchbares rauskommt poste ich das hier.
Wilhelm Ferkes schrieb: > Jasch schrieb: > >> Du kannst aus einem Burger(-Patty) nicht >> wieder eine Kuh machen. > > Nee. Das ist ja heute anders. Früher bestand ein Burger aus > Bestandteilen einer Kuh. Heute hat er sicher die Bestandteile von 5000 > Kühen. Garantiert. Hehehe, Du scheinst recht sicher zu sein dass da heutzutage überhaupt etwas von einer Kuh drin ist. Mein Glaube ist da eher schwach, möge Ronald McDonald mir vergeben. ;-) Gilt übrigens auch für binär vorliegende Libs, wer sagt denn überhaupt dass C dabei der Ausgangspunkt war? Könnte ja auch Brainf*ck (wieso glaubt die Foren-Software f*ck würde auf Spam hindeuten, ist die von Schwachmaten programmiert worden?) gewesen sein. Oder, Gott sei uns allen gnädig, Cobol.
Wolfgang M. schrieb: > Im Prinzip kannst du jedes beliebige Arduino Project durch den GCC > jagen. Das sollte ohne Probleme gehen. > Die Libraries im Arduino sind halt ziemlich generisch gehalten damit sie > auf jedes Board passen. Ich habe mal gesucht finde dazu aber nichts. Kann man mit dem GCC Compiler wirklich einfach eine Arduino Library einfügen und bekommt C Code der auf Cortex oder Atmega läuft? Verwirrter Anfänger schrieb: > Arduino ist C Code mit libraries! > > Hast du dir die library überhaupt auch nur mal angeguckt? das ist eine > .h Datei und eine .cpp. Ich hab die mal überflogen und das einzige > Arduino spezifische was ich dadrin gesehen habe waren die Stellen in > denen die aus Arduino Pin-Bezeichnungen (Digital1, Digital2, ...) wieder > AVR Standards machen (PB1, PB2, ...). > > Guck dir die Library doch einfach mal an, und wenn du dann zu irgendwas > spezifischen Probleme hast, frag das hier nochmal nach. Also muss man nur die Pinzuordnungen entfernen und bekommt damit eine Header Datei als Librarie welche direkt auf den Controllern von ARM und AVR laufen. Wie bekomme ich das hin. Vor allem will ich am Ende den Code für meine richtige Programmierumgebung nutzen und nicht mit dem Umwandler Compiler auf den Controller übertragen. Sofern das überhaupt geht.
Sin S. schrieb: > Also muss man nur die Pinzuordnungen entfernen und bekommt damit eine > Header Datei als Librarie welche direkt auf den Controllern von ARM und > AVR laufen. Nein, das geht natürlich nicht. Denn die Peripherie (Takterzeugung, Interfaces, Timer, Interrupthandling,...) ist vollkomen anders. Wie ich schonmal schrieb: > Für dich sind "AVR", "ARM", "Cortex M0", "Arduino" usw. nur irgendwelche > Worte. Du weißt nicht, was sie bedeuten und was dahintersteckt. Und genau das selbe trifft auch auf "GCC", "Header-Datei", "Library", "Arduino" usw. zu. BTW: wieviele Threads willst du zu deinem Problem noch aktivieren? Fass doch einfach alles in dem einen zusammen, sonst kommst du noch mehr durcheinander: Beitrag "NRF51822 wie am besten erlernen mit einem Buch? Geht das?"
:
Bearbeitet durch Moderator
Sin S. schrieb: > Ich habe mal gesucht finde dazu aber nichts. Kann man mit dem GCC > Compiler wirklich einfach eine Arduino Library einfügen und bekommt C > Code der auf Cortex oder Atmega läuft? Nein. Arduino nutzt zwar selbst auch GCC als Compiler, ist aber C++, nicht C. Dazu kommen die Arduino-Bibliohteken, die auch nicht auf magische Weise einfach da sind. > Also muss man nur die Pinzuordnungen entfernen und bekommt damit eine > Header Datei als Librarie welche direkt auf den Controllern von ARM und > AVR laufen. Nein. > Wie bekomme ich das hin. Vor allem will ich am Ende den Code für meine > richtige Programmierumgebung nutzen und nicht mit dem Umwandler Compiler > auf den Controller übertragen. Sofern das überhaupt geht. Was ist ein "Umwandler Compiler"?
Sin S. schrieb: > Wie bekomme ich das hin. Vor allem will ich am Ende den Code für meine > richtige Programmierumgebung nutzen und nicht mit dem Umwandler Compiler > auf den Controller übertragen. Sofern das überhaupt geht.
1 | //+++++ lowlevel
|
2 | #define ll_cs_port C
|
3 | #define ll_cs_pin 0
|
4 | |
5 | #define ll_cs_high sbi(PORT(ll_cs_port),ll_cs_pin)
|
6 | #define ll_cs_low cbi(PORT(ll_cs_port),ll_cs_pin)
|
7 | |
8 | #define lcd_cs_high ll_cs_high
|
9 | #define lcd_cs_low ll_cs_low
|
Ein Programm hat üblicherweise einen lowlevel-teil, in welchem i/o-pins an den controller angepasst werden. Das unterscheidet sich bei arduino und gcc, da die arduino-pins anders definiert sind als die Definitionen im Datenblatt. Den lowlevel-Teil muss man bei der Verwendung von arduino-Bibliotheken anpassen - den ganzen Rest kann man meist ohne Anpassungen übernehmen. "lcd_cs_low" ist oben die arduino-Funktion, die in gcc übersetzt wurde.
grundschüler schrieb: > da die arduino-pins anders definiert sind als die Definitionen > im Datenblatt. Den lowlevel-Teil muss man bei der Verwendung von > arduino-Bibliotheken anpassen - den ganzen Rest kann man meist ohne > Anpassungen übernehmen. Ja, so weit die hehre Theorie. Aber im echten Leben geht es ja nicht nur um ein paar simple IO-Pins, sondern darum, dass jede einzelne, noch so winzige Komponente beginnend ab der Takterzeugung über Timer, Schnittstellen, Interrupts, ... anders initialisiert und angesteuert werden muss. Das einzige, was man "ohne Anpassungen übernehmen" kann, sind dann bestenfalls Berechnungen, die keinerlei Hardware brauchen. Und selbst da muss man ganz genau hinschauen, dass einem nicht sowas wie ein Alginment oder Little/Big-Endian in die Suppe spucken.
Sin S. schrieb: > Ich habe mal gesucht finde dazu aber nichts. Kann man mit dem GCC > Compiler wirklich einfach eine Arduino Library einfügen und bekommt C > Code der auf Cortex oder Atmega läuft? Und dafür hast Du 10 Jahre gebraucht? duckundweg
Sin S. schrieb: > Ich habe mal gesucht finde dazu aber nichts. Warum gräbst du einen zehn Jahre alten Thread aus?
Warum antwortet ihr auf so etwas? Genauso entsteht der ganze Müll, den manche als Spam bzw. trollig ansehen!
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.