Lista de pré-processadores da placa Arduino #defines

9

Quando alguém seleciona uma placa no IDE do Arduino, uma definição de pré-processador é adicionada a um dos arquivos dos bastidores.

Depois de muita caça e boa sorte, descobri que o formato dessa definição é:

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

Alguns são fáceis de adivinhar ( ARDUINO_AVR_UNOpor exemplo), mas outros são menos. O Pro Micro tem '16' ou '8' anexado à definição, dependendo da velocidade. Não sei se a definição é diferente para 5V ou 3.3V. Não consegui adivinhar a definição para o Mega2560, mas não é nada óbvio.

Pergunta 1 : Existe uma lista das possíveis definições?

Pergunta 2 : Existe alguma distinção, no que diz respeito à participação da compilação e do pré-processador, entre o BoardX -5V e o BoardX -3.3V, e como essa distinção é definida?

CharlieHanson
fonte
Para que você precisa disto? Provavelmente seria mais útil diferenciar entre processadores (por exemplo, ATMega328), em vez de placas.
Gerben 23/01
11
Eu tenho um projeto de vários nós que usa um Uno, um Leonardo e um <nome coletivo> do Pro Minis. O código é quase idêntico para as três versões, mas para facilitar a depuração, quero poder fazer upload (ou pelo menos compilar a partir) do mesmo código para tudo.
precisa saber é o seguinte
Ative Arquivo> Preferências> Compilar Verbose. Em seguida, crie / verifique e inspecione a saída. Você verá os -D define que são passados ​​para o compilador. Isso facilita a determinação da diferença entre suas placas.
Visual Micro

Respostas:

10

A lista de símbolos da placa pode ser gerada por este comando do 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

As placas são definidas pela propriedade "build.board" no arquivo boards.txt .

mini.build.board=AVR_MINI

Essa propriedade é usada pela receita de construção junto com o prefixo ARDUINO_.

-DARDUINO_{build.board} 

Felicidades!

Mikael Patel
fonte
+1, obrigado por essa lista. É uma pena que não cuspa as versões de dupla velocidade para remover qualquer dúvida, mas isso responde à pergunta mais do que bem.
precisa saber é o seguinte
A propriedade board é a mesma para as duas versões do pro-mini e não para o mega. Talvez o boards.txt deva ser atualizado com nomes distintos para as variantes pro-mini, por exemplo, AVR_MINI_16MHZ, AVR_MINI_8MHZ.
Mikael Patel
Para quem estava procurando - eu estava tentando encontrar a definição para um NodeMCU ESP8266 - então, com base nas informações desta resposta, é ARDUINO_ESP8266_NODEMCU Obrigado!
Phil
3

Mikael tem a resposta certa, mas existem vários arquivos boards.txt dependendo das placas instaladas com o gerenciador de placas, modificando o comando para:

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

e executá-lo no diretório base do Arduino coleta todo o conjunto.

conta
fonte
2

O primeiro espaço em branco é a plataforma . Isso é "AVR" para AVRs, "SAM" para Arduinos baseados em SAM, etc. Isso é derivado do diretório da plataforma que contém o núcleo.

O segundo espaço em branco é o quadro . Isso vem da entrada no boards.txtpróprio núcleo e é o identificador antes do primeiro período.

Não há diferença entre os processos de compilação com relação às tensões; qualquer diferença de velocidade é fornecida F_CPUe a placa em si não deve ser verificada.

Portanto, não há lista definitiva, pois a lista é de tamanho arbitrário devido à sua origem.

Ignacio Vazquez-Abrams
fonte
Isso ocorre apenas quando o boards.txt não define um build.boardvalor e um é gerado automaticamente pelo IDE do Arduino.
per1234
1

Adicionando detalhes à resposta de Bill e acrescentando à de Mikael:

Os pacotes dos quais você faz o download através do Board Manager residem (a partir de 1.8.9 e muitas revs anteriores):

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

Você também pode executar o script de uma linha de Bill na pasta de instalação do Arduino, para obter as placas 'embutidas'.

user2543191
fonte