Gibt es eine Möglichkeit für ein Projekt das mit mehreren Prozessoren arbeitet die einzelnen Projekte durch "umschalten" auszuwählen? Ich würde gerne den Sourecode vom Arduino UNO und einen STM32 Nucleo durch Auswählen des Bords auswählen. Da beide Targets ein Hardware-Projekt ist, würde ich somit gerne beide Projekte als getrennte Sourcen in einem Sketch arbeiten. Kann mir jemand bitte helfen welche Vorgehensweise ich machen muss? Ich habe mit #if defined(_AVR_ATmega328_) #endif zuerst versucht den entsprechenden Code zu verwenden. aber die precomp-direktive klappt nicht.
Da sieht man doch den Wink mit dem Zaunpfahl vielleicht doch mal "richtig" programmieren zu lernen und eine "richtige" IDE zu verwenden.
Content B. schrieb: > klappt nicht klappt doch, nur muss man es richtig machen entweder #if defined(_AVR_) oder #if defined(ESP32) oder #if defined(_AVR_ATmega1284P_) fehlt evtl. das P? #if defined(_AVR_ATmega328P_)
Joachim B. schrieb:
1 | entweder #if defined(_AVR_) |
2 | oder #if defined(ESP32) |
3 | oder #if defined(_AVR_ATmega1284P_) |
4 | |
5 | fehlt evtl. das P? |
6 | |
7 | #if defined(_AVR_ATmega328P_)
|
Joachim B. schrieb: > Content B. schrieb: >> klappt nicht > > klappt doch, nur muss man es richtig machen > > entweder #if defined(AVR) > oder #if defined(ESP32) > oder #if defined(AVR_ATmega1284P) > > fehlt evtl. das P? > #if defined(AVR_ATmega328P) Joachim B. schrieb: > fehlt evtl. das P? Nein, das geht eben nicht! Ich kann durch einfaches Serial.println("Chip 1"); bzw Serial.println("Chip 2"); die unterscheidlichen Boards differenzieren. Aber beim Einbinden der .h gibt es dann Fehler wie die Meldung dass etwas nicht existiert. Entferne ich dann das andere Projektteil, lasse aber die #if defined stehen, so klappt es. Sobald jedoch ein Code beim anderen hinzu kommt, geht das compile shief
Je nach Target werden unterschiedliche Toolchains verwendet. Ein Projekt mit verschiedenen Toolchains mag das Buildsystem nicht, ist aber auch sehr unüblich. Warum nicht zwei getrennte Projekte und den gemeinsamen Teil in eine Library packen?
>Aber beim Einbinden der .h gibt es dann Fehler wie die >Meldung dass etwas nicht existiert. Zeig mal ein konkretes Beispiel. Du musst die Files einbinden, die zum jeweiligen Prozessor passen. Das kannst Du mit den Beispielen von Joachim tun. Wenn du die zwei Hacken Datei->Voreinstellungen->Ausfürhliche Ausgabe "Kopilierung" + "Hochladen" setzt, siehst du auch, welchen Syntax die Compile-Switches tasächlich haben.
Das wird nicht funktionieren! So einen Plan hatte ich auch schon. Habe auf einem Projekt zwei uC (ESP und AVR). Der Precompilerbefehl #if defined(_AVR_ATmega8_) #endif #if defined(ESP32) #endif funktioniert nicht wenn man einen ganzen Sketch rein kopiert. Bei mir war es plötzlich der Fehler dass die #include "SPIFFS.h" nicht funktionierte. Vermutlich ein Bug der IDE. Also falls jemand eine Lösung hat wäre ich auch dankbar.
Ich würde dir empfehlen, das Projekt auf platformio (mit framework=arduino) umzustellen. Da kannst du dann verschiedene "envs" für deine Prozessoren anlegen, wenn nötig mit "src_dir=..." auch jeder CPU einen eigenen Satz an Sources verpassen, und trotzdem das ganze auf einen Rutsch durchkompilieren. https://docs.platformio.org/en/stable/projectconf/index.html Als Bonus kriegst du deine Dependencies versioniert, es kann also nicht ein ungeplantes Library- oder Arduino-Core-Update dein Projekt lahmlegen.
Guten Abend, ich habe nun es geschafft meine zwei Sketche in eines einzubinden. Es war sehr kompliziert für mich, aber am Ende gab es einen ganz einfachen Grund:
1 | { |
2 | } |
Εrnst B. schrieb: > Ich würde dir empfehlen, das Projekt auf platformio (mit > framework=arduino) umzustellen. Sorry, aber du hast es leider nicht kapiert! Wenn die Farbe an der Wand nicht haftet, kaufst du auch kein neues Haus. Also weshalb so ein besheuerter Vorschlag?
Content B. schrieb: > Sorry, aber du hast es leider nicht kapiert! Hast du dir Platformio überhaupt angesehen? Damit kannst du Arduino-Code Schreiben/Compilieren, Arduino-Bibliotheken verwenden und auch sonst alles machen, was dir die Arduino-IDE ermöglicht. PLUS: Du kriegst eine vernünftige, gut versionierbare Verwaltung von Build-Environments, verschiedenen Targets/Boards, Bibliotheken usw. IAW: So wie ich dein Problem verstanden habe, ein perfektes Werkzeug für dich. Aber ich will dir da nichts einreden, mit einem Hammer kriegt man die Schraube ja auch irgendwie in die Wand.
Εrnst B. schrieb: > Hast du dir Platformio überhaupt angesehen? Wieso sollte ich? Es ging um Arduino!
Content B. schrieb: > Wieso sollte ich? Es ging um Arduino! Deshalb habe ich es vorgeschlagen. Das Arduino/Wiring-Framework ist nicht mit der Arduino-IDE verheiratet.
Εrnst B. schrieb: > Content B. schrieb: >> Wieso sollte ich? Es ging um Arduino! > > Deshalb habe ich es vorgeschlagen. > Das Arduino/Wiring-Framework ist nicht mit der Arduino-IDE verheiratet. Nur der Vollständigkeit halber: Im Beruf nutze ich PlatformIO und da kann ich diese Sketche so nutzen. Privat würde ich gerne das selbe auch mit der Arduino-IDE können. Dein Vorschlag, ich solle PlatformIO nutzen ist daher für die Tonne, da es dich überhaupt nicht zu interessieren scheint wieso ich das so will.
Content B. schrieb: > Dein > Vorschlag, ich solle PlatformIO nutzen ist daher für die Tonne, da es > dich überhaupt nicht zu interessieren scheint wieso ich das so will. Warum denn so pampig? Ich hätte Dir das gleiche empfohlen. Die Info, dass du PlattformIO kennst und nutzt hast du uns nicht mitgegeben.
Content B. schrieb: > Guten Abend, > > ich habe nun es geschafft meine zwei Sketche in eines einzubinden. Es > war sehr kompliziert für mich, aber am Ende gab es einen ganz einfachen > Grund: > { > } Ich verstehe Deine Antwort nicht. Warum/Wo hat ein Klammernpaar geholfen?
Content B. schrieb: > Beruf nutze ich PlatformIO bla bla, dann würdest du nicht die Arduino IDE verwenden wollen.
Content B. schrieb: > Im Beruf nutze ich PlatformIO und da kann ich diese Sketche so nutzen. > Privat würde ich gerne das selbe auch mit der Arduino-IDE können. Dein > Vorschlag, ich solle PlatformIO nutzen ist daher für die Tonne, da es > dich überhaupt nicht zu interessieren scheint wieso ich das so will. Du bist aber unfreundlich. Fragst nach Ideen, und wenn Ideen kommen, die du auch ablehnen kannst und darfst, wenn es dir nicht passt, fährst du Menschen persönlich an. Menschen lesen über dein Scheißproblem, investieren Zeit und wollen dir helfen. Aber dir ist nicht mehr zu helfen. Und das hat mit Arduino nicht mehr zu tun.
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.