Liste des préprocesseurs de carte Arduino #defines

9

Lorsque l'on sélectionne une carte dans Arduino IDE, une définition de préprocesseur est ajoutée à l'un des fichiers en arrière-plan.

Après beaucoup de chasse et une bonne fortune, j'ai trouvé que le format de cette définition est:

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

Certains sont faciles à deviner ( ARDUINO_AVR_UNOpar exemple), mais d'autres le sont moins. Le Pro Micro a '16' ou '8' ajouté à la définition en fonction de la vitesse. Je ne sais pas si la définition est différente pour 5V ou 3,3V. Je n'ai pas réussi à deviner la définition du Mega2560, mais ce n'est pas évident.

Question 1 : Existe-t-il une liste des définitions possibles?

Question 2 : Existe-t-il une distinction, en ce qui concerne la compilation et l'implication du préprocesseur, entre BoardX -5V et BoardX -3.3V, et comment cette distinction est-elle définie?

CharlieHanson
la source
Pourquoi en avez-vous besoin? Il serait probablement plus utile de différencier les processeurs (par exemple ATMega328), au lieu des cartes.
Gerben
1
J'ai un projet multi-nœuds qui utilise un Uno, un Leonardo et un <nom collectif> de Pro Minis. Le code est presque identique pour les trois versions mais pour faciliter le débogage, je veux pouvoir télécharger (ou au moins compiler à partir de) le même code pour tout.
CharlieHanson
Activez Fichier> Préférences> Compiler verbeux. Ensuite, créez / vérifiez et inspectez la sortie. Vous verrez les définitions -D transmises au compilateur. Cela permet de déterminer facilement la différence entre vos planches.
Visual Micro

Réponses:

10

La liste des symboles de la carte peut être générée par cette commande shell:

$ 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

Les cartes sont définies par la propriété "build.board" dans le fichier boards.txt .

mini.build.board=AVR_MINI

Cette propriété est utilisée par la recette de génération avec le préfixe ARDUINO_.

-DARDUINO_{build.board} 

À votre santé!

Mikael Patel
la source
+1, merci pour cette liste. C'est dommage qu'il ne crache pas les versions à double vitesse pour lever tout doute, mais cela répond plus que bien à la question.
CharlieHanson
La propriété de la carte est la même pour les deux versions de pro-mini, mais pas pour les méga. Peut-être que boards.txt devrait être mis à jour avec des noms distinctifs pour les variantes pro-mini, par exemple AVR_MINI_16MHZ, AVR_MINI_8MHZ.
Mikael Patel
Pour ceux qui cherchent - j'essayais de trouver la définition d'un NodeMCU ESP8266 - donc sur la base des informations de cette réponse, c'est ARDUINO_ESP8266_NODEMCU Merci!
Phil
3

Mikael a la bonne réponse, mais il existe plusieurs fichiers boards.txt selon les cartes installées avec board manager, modifiant la commande pour:

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

et l'exécuter à partir de votre répertoire Arduino de base recueille l'ensemble complet.

facture
la source
2

Le premier blanc est la plate - forme . Il s'agit de "AVR" pour les AVR, "SAM" pour les Arduinos basés sur SAM, etc. Ceci est dérivé du répertoire de la plate-forme contenant le noyau.

Le deuxième blanc est le tableau . Cela vient de l'entrée dans boards.txtle noyau lui-même, et c'est l'identifiant avant la première période.

Il n'y a pas de différence entre les processus de compilation en ce qui concerne les tensions; toute différence de vitesse est indiquée F_CPUet la planche elle-même ne doit pas être vérifiée pour cela.

Il n'y a donc pas de liste définitive, car la liste est de taille arbitraire en raison de sa source.

Ignacio Vazquez-Abrams
la source
Cela n'est vrai que lorsque boards.txt ne définit pas de build.boardvaleur et qu'une est automatiquement générée par l'IDE Arduino.
per1234
1

Ajout de détails à la réponse de Bill ajoutant à Mikael:

Les packages que vous téléchargez via le Board Manager résident (à partir du 1.8.9 et de nombreuses versions précédentes):

linux: / home / (votre login) /. arduino15

Vous pouvez également exécuter le script d'une ligne de Bill dans votre dossier d'installation Arduino, pour obtenir les cartes `` intégrées ''.

user2543191
la source