Lista de preprocesador de placa Arduino #defines

9

Cuando uno selecciona una placa dentro de Arduino IDE, se agrega una definición de preprocesador a uno de los archivos detrás de escena.

Después de mucha caza y buena suerte, descubrí que el formato de esta definición es:

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

Algunos son fáciles de adivinar ( ARDUINO_AVR_UNOpor ejemplo), pero otros lo son menos. El Pro Micro tiene '16' u '8' anexados a la definición dependiendo de la velocidad. No sé si la definición es diferente para 5V o 3.3V. No he logrado adivinar la definición del Mega2560, pero no es nada obvio.

Pregunta 1 : ¿Existe una lista de las posibles definiciones?

Pregunta 2 : ¿Hay alguna distinción, en lo que respecta a la compilación y la participación del preprocesador, entre BoardX -5V y BoardX -3.3V, y cómo se define esta distinción?

CharlieHanson
fuente
¿Para qué lo necesitas? Probablemente sería más útil diferenciar entre procesadores (por ejemplo, ATMega328), en lugar de placas.
Gerben
1
Tengo un proyecto de múltiples nodos que usa un Uno, un Leonardo y un <nombre colectivo> de Pro Minis. El código es casi idéntico para las tres versiones, pero para facilitar la depuración quiero poder cargar (o al menos compilar) el mismo código para todo.
CharlieHanson el
Active Archivo> Preferencias> Compilar detallado. Luego construya / verifique e inspeccione la salida. Verá las definiciones -D que se pasan al compilador. Esto facilita determinar la diferencia entre sus tablas.
Visual Micro

Respuestas:

10

La lista de símbolos de tablero se puede generar mediante este comando de 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

Los tableros están definidos por la propiedad "build.board" en el archivo boards.txt .

mini.build.board=AVR_MINI

La receta de compilación utiliza esta propiedad junto con el prefijo ARDUINO_.

-DARDUINO_{build.board} 

¡Salud!

Mikael Patel
fuente
+1, gracias por esa lista. Es una pena que no escupe las versiones de doble velocidad para eliminar cualquier duda, pero esto responde la pregunta más que bien.
CharlieHanson el
La propiedad de la placa es la misma para ambas versiones de pro-mini, pero no para mega. Quizás boards.txt debería actualizarse con nombres distintivos para las variantes pro-mini, por ejemplo, AVR_MINI_16MHZ, AVR_MINI_8MHZ.
Mikael Patel
Para aquellos que buscan, estaba tratando de encontrar la definición para un NodeMCU ESP8266, así que, según la información en esta respuesta, es ARDUINO_ESP8266_NODEMCU ¡Gracias!
Phil
3

Mikael tiene la respuesta correcta, pero hay varios archivos boards.txt dependiendo de las placas instaladas con el administrador de la placa, modificando el comando para:

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

y ejecutarlo desde el directorio base de Arduino recopila todo el conjunto.

cuenta
fuente
2

El primer espacio en blanco es la plataforma . Esto es "AVR" para AVR, "SAM" para Arduinos basados ​​en SAM, etc. Esto se deriva del directorio de la plataforma que contiene el núcleo.

El segundo espacio en blanco es el tablero . Esto proviene de la entrada en boards.txtel núcleo mismo, y es el identificador antes del primer período.

No hay diferencia entre los procesos de compilación con respecto a los voltajes; se indica cualquier diferencia de velocidad F_CPUy no se debe verificar el tablero en sí.

Por lo tanto, no hay una lista definitiva, ya que la lista tiene un tamaño arbitrario debido a su origen.

Ignacio Vazquez-Abrams
fuente
Esto es cierto solo cuando boards.txt no define un build.boardvalor y Arduino IDE genera uno automáticamente.
por1234
1

Agregando detalles a la respuesta de Bill agregando a Mikael:

Los paquetes que descarga a través de Board Manager residen (a partir de 1.8.9 y muchas revoluciones anteriores):

linux: / home / (su inicio de sesión) /. arduino15

También puede ejecutar el script de una línea de Bill en su carpeta de instalación de Arduino, para obtener los paneles 'incorporados'.

usuario2543191
fuente