Liste der Arduino-Board-Präprozessoren #defines

9

Wenn man eine Karte in der Arduino IDE auswählt, wird einer der Dateien hinter den Kulissen eine Präprozessordefinition hinzugefügt.

Nach viel Jagd und etwas Glück stellte ich fest, dass das Format dieser Definition lautet:

#define ARDUINO_<PROCESSOR-DESCRIPTOR>_<BOARDNAME>

Einige sind leicht zu erraten ( ARDUINO_AVR_UNOzum Beispiel), andere weniger. Dem Pro Micro sind je nach Geschwindigkeit '16' oder '8' an die Definition angehängt. Ich weiß nicht, ob die Definition für 5V oder 3,3V unterschiedlich ist. Ich habe es nicht geschafft, die Definition für den Mega2560 zu erraten, aber es ist nichts Offensichtliches.

Frage 1 : Gibt es eine Liste der möglichen Definitionen?

Frage 2 : Gibt es einen Unterschied zwischen BoardX -5V und BoardX -3.3V in Bezug auf Kompilierung und Präprozessorbeteiligung, und wie ist dieser Unterschied definiert?

CharlieHanson
quelle
Wofür brauchst du es? Es wäre wahrscheinlich sinnvoller, zwischen Prozessoren (z. B. ATMega328) anstelle von Karten zu unterscheiden.
Gerben
1
Ich habe ein Multi-Node-Projekt, das ein Uno, ein Leonardo und ein <Sammelbegriff> von Pro Minis verwendet. Der Code ist für die drei Versionen nahezu identisch, aber um das Debuggen zu vereinfachen, möchte ich in der Lage sein, für alles denselben Code hochzuladen (oder zumindest daraus zu kompilieren).
CharlieHanson
Aktivieren Sie Datei> Einstellungen> Ausführlich kompilieren. Erstellen / überprüfen und überprüfen Sie dann die Ausgabe. Sie sehen die -D-Definitionen, die an den Compiler übergeben werden. Dies macht es einfach, den Unterschied zwischen Ihren Boards zu bestimmen.
Visual Micro

Antworten:

10

Die Liste der Platinensymbole kann mit diesem Shell-Befehl generiert werden:

$ grep board= boards.txt | cut -f2 -d= | sort -u
AVR_ADK
AVR_BT
AVR_DUEMILANOVE
AVR_ESPLORA
AVR_ETHERNET
AVR_FIO
AVR_GEMMA
AVR_LEONARDO
AVR_LILYPAD
AVR_LILYPAD_USB
AVR_MEGA
AVR_MEGA2560
AVR_MICRO
AVR_MINI
AVR_NANO
AVR_NG
AVR_PRO
AVR_ROBOT_CONTROL
AVR_ROBOT_MOTOR
AVR_UNO
AVR_YUN

Die Boards werden durch die Eigenschaft "build.board" in der Datei board.txt definiert .

mini.build.board=AVR_MINI

Diese Eigenschaft wird vom Build- Rezept zusammen mit dem ARDUINO_-Präfix verwendet.

-DARDUINO_{build.board} 

Prost!

Mikael Patel
quelle
+1, danke für diese Liste. Es ist eine Schande, dass es die Dual-Speed-Versionen nicht ausspuckt, um Zweifel auszuräumen, aber dies beantwortet die Frage mehr als gut genug.
CharlieHanson
Die Board-Eigenschaft ist für beide Versionen von Pro-Mini gleich, nicht jedoch für Mega. Möglicherweise sollte board.txt mit eindeutigen Namen für die Pro-Mini-Varianten aktualisiert werden, z. B. AVR_MINI_16MHZ, AVR_MINI_8MHZ.
Mikael Patel
Für diejenigen, die suchen - ich habe versucht, die Definition für eine NodeMCU ESP8266 zu finden - also basierend auf den Informationen in dieser Antwort ist es ARDUINO_ESP8266_NODEMCU Danke!
Phil
3

Mikael hat die richtige Antwort, aber es gibt mehrere Boards.txt-Dateien, abhängig von den installierten Boards mit Board Manager. Ändern Sie den Befehl wie folgt:

grep board= `find . -name boards.txt` | cut -f2 -d= | sort -u

Wenn Sie es von Ihrem Basis-Arduino-Verzeichnis aus ausführen, wird der gesamte Satz erfasst.

Rechnung
quelle
2

Das erste Leerzeichen ist die Plattform . Dies ist "AVR" für AVRs, "SAM" für SAM-basierte Arduinos usw. Dies wird aus dem Plattformverzeichnis abgeleitet, das den Kern enthält.

Das zweite Leerzeichen ist die Tafel . Dies kommt vom Eintrag im boards.txtKern selbst und ist die Kennung vor der ersten Periode.

Es gibt keinen Unterschied zwischen Kompilierungsprozessen in Bezug auf Spannungen; Geschwindigkeitsunterschiede sind angegeben F_CPUund die Platine selbst sollte nicht darauf überprüft werden.

Es gibt also keine endgültige Liste, da die Liste aufgrund ihrer Quelle eine beliebige Größe hat.

Ignacio Vazquez-Abrams
quelle
Dies gilt nur, wenn board.txt keinen build.boardWert definiert und dieser automatisch von der Arduino IDE generiert wird.
per1234
1

Hinzufügen von Details zu Bills Antwort und Hinzufügen zu Mikaels:

Die Pakete, die Sie über den Board Manager herunterladen, befinden sich in (ab 1.8.9 und vielen Umdrehungen zuvor):

Linux: / home / (Ihr Login) /. arduino15

Sie können auch Bills einzeiliges Skript in Ihrem Arduino-Installationsordner ausführen, um die integrierten Boards zu erhalten.

user2543191
quelle