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?


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é!


+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.


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.


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 ''.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.