Elenco del preprocessore della scheda Arduino #define


9

Quando si seleziona una scheda all'interno dell'IDE di Arduino, una definizione del preprocessore viene aggiunta a uno dei file dietro le quinte.

Dopo molta caccia e buona fortuna ho scoperto che il formato di questa definizione è:

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

Alcuni sono facili da indovinare ( ARDUINO_AVR_UNOad esempio), ma altri lo sono meno. Pro Micro ha "16" o "8" aggiunti alla definizione in base alla velocità. Non so se la definizione è diversa per 5 V o 3,3 V. Non sono riuscito a indovinare la definizione per il Mega2560, ma non è niente di ovvio.

Domanda 1 : esiste un elenco delle possibili definizioni?

Domanda 2 : Esiste una distinzione, per quanto riguarda la compilazione e il coinvolgimento del preprocessore, tra BoardX -5V e BoardX -3.3V, e come viene definita questa distinzione?


A cosa ti serve? Probabilmente sarebbe più utile distinguere tra processori (ad esempio ATMega328), anziché schede.
Gerben,

1
Ho un progetto multi-nodo che utilizza Uno, un Leonardo e un <nome collettivo> di Pro Minis. Il codice è quasi identico per le tre versioni ma per facilitare il debug voglio poter caricare (o almeno compilare da) lo stesso codice per tutto.
CharlieHanson,

Attiva File> Preferenze> Compila dettaglio. Quindi compilare / verificare e ispezionare l'output. Vedrai le definizioni -D passate al compilatore. Ciò semplifica la determinazione della differenza tra le tue schede.
Visual Micro,

Risposte:


10

L'elenco dei simboli della scheda può essere generato da questo comando 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

Le schede sono definite dalla proprietà "build.board" nel file boards.txt .

mini.build.board=AVR_MINI

Questa proprietà viene utilizzata dalla ricetta build insieme al prefisso ARDUINO_.

-DARDUINO_{build.board} 

Saluti!


+1, grazie per quell'elenco. È un peccato non sputare le versioni a doppia velocità per rimuovere qualsiasi dubbio, ma questo risponde alla domanda più che abbastanza bene.
CharlieHanson,

La proprietà board è la stessa per entrambe le versioni di pro-mini mentre non per mega. Forse boards.txt dovrebbe essere aggiornato con nomi distintivi per le varianti pro-mini, ad esempio AVR_MINI_16MHZ, AVR_MINI_8MHZ.
Mikael Patel,

Per quelli che cercavano - stavo cercando di trovare la definizione per un NodeMCU ESP8266 - quindi in base alle informazioni in questa risposta, è ARDUINO_ESP8266_NODEMCU Grazie!
Phil

3

Mikael ha la risposta giusta, ma ci sono più file boards.txt a seconda delle schede installate con il board manager, modificando il comando in:

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

ed eseguendolo dalla directory di base di Arduino raccoglie l'intero set.


2

Il primo spazio vuoto è la piattaforma . Questo è "AVR" per AVR, "SAM" per Arduinos basati su SAM, ecc. Deriva dalla directory della piattaforma contenente il core.

Il secondo spazio è il tabellone . Ciò deriva dall'entrata nel boards.txtnucleo stesso ed è l'identificatore prima del primo periodo.

Non vi è alcuna differenza tra i processi di compilazione per quanto riguarda le tensioni; viene data qualsiasi differenza di velocità F_CPUe la scheda stessa non deve essere controllata per questo.

Quindi non esiste un elenco definitivo, poiché l'elenco ha dimensioni arbitrarie a causa della sua origine.


Questo è vero solo quando boards.txt non definisce un build.boardvalore e viene generato automaticamente dall'IDE di Arduino.
per1234,

1

Aggiunta di dettagli alla risposta di Bill aggiunta a Mikael:

I pacchetti scaricati tramite Board Manager risiedono in (a partire dalla 1.8.9 e molti giri precedenti):

linux: / home / (il tuo login) /. arduino15

Puoi anche eseguire lo script di una riga di Bill nella cartella di installazione di Arduino, per ottenere le schede "incorporate".

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.