Arduinoボードプリプロセッサのリスト#defines


9

Arduino IDE内でボードを選択すると、プリプロセッサ定義が舞台裏のファイルの1つに追加されます。

多くの狩猟と幸運の後、私はこの定義の形式が次のとおりであることを発見しました:

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

簡単に推測できるものもありますが(ARDUINO_AVR_UNOたとえば)、他のものはそうではありません。プロマイクロでは、速度に応じて、定義に「16」または「8」が追加されています。5Vと3.3Vで定義が異なるかどうかはわかりません。Mega2560の定義を推測することはできませんでしたが、明白なことは何もありません。

質問1:可能な定義の存在にリストはありますか?

質問2BoardX -5VとBoardX -3.3Vの間で、コンパイルとプリプロセッサの関与に関する違いはありますか?この違いはどのように定義されていますか?


何のために必要ですか?ボードではなく、プロセッサ(たとえばATMega328)を区別する方がおそらく便利でしょう。
Gerben

1
Uno、Leonardo、およびPro Miniの<集合名詞>を使用するマルチノードプロジェクトがあります。コードは3つのバージョンでほぼ同じですが、デバッグを容易にするために、すべてのコードをアップロード(または少なくともコンパイル)できるようにしたいと考えています。
CharlieHanson

「ファイル」>「設定」>「詳細なコンパイル」をオンにします。次に、出力をビルド/検証して検査します。コンパイラーに渡される-D定義が表示されます。これにより、ボード間の違いを簡単に判別できます。
Visual Micro

回答:


10

ボードシンボルのリストは、次のシェルコマンドで生成できます。

$ 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

ボードは、boards.txtファイルの「build.board」プロパティで定義されます。

mini.build.board=AVR_MINI

このプロパティは、ARDUINO_-prefixとともにビルドレシピで使用されます。

-DARDUINO_{build.board} 

乾杯!


+1、そのリストをありがとう。それは疑いを取り除くためにデュアルスピードバージョンを吐き出さないのは残念ですが、これは十分に十分に質問に答えます。
CharlieHanson

ボードプロパティは、メガではなくプロミニの両方のバージョンで同じです。多分、boards.txtはプロミニバリアントの特徴的な名前、例えばAVR_MINI_16MHZ、AVR_MINI_8MHZで更新する必要があります。
ミカエルパテル

探している人のために-私はNodeMCU ESP8266の定義を見つけようとしていました-したがって、この回答の情報に基づいて、それはARDUINO_ESP8266_NODEMCUですありがとう!
Phil

3

Mikaelは正しい答えを持っていますが、ボードマネージャーでインストールされているボードに応じて複数のboards.txtファイルがあり、コマンドを次のように変更します。

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

ベースのArduinoディレクトリから実行すると、セット全体が収集されます。


2

最初の空白はプラットフォームです。これは、AVRの場合は「AVR」、SAMベースのArduinoの場合は「SAM」です。これは、コアを含むプラットフォームディレクトリから取得されます。

2番目のブランクはボードです。これはboards.txt、コア自体のエントリから取得され、最初のピリオドの前の識別子です。

電圧に関しては、コンパイルプロセスに違いはありません。速度の違いが与えられてF_CPUおり、ボード自体はこれについてチェックされるべきではありません。

ソースが原因でリストが任意のサイズになるため、明確なリストはありません。


これは、boards.txtでbuild.board値が定義されておらず、Arduino IDEによって値が自動的に生成される場合にのみ当てはまります。
per1234 2017

1

ビルの答えに詳細を追加するミカエルに追加する:

Board Managerを介してダウンロードしたパッケージは、次の場所にあります(1.8.9およびそれ以前の多くのリビジョン)。

linux:/ home /(あなたのログイン)/。arduino15

ArduinoのインストールフォルダーでBillの1行のスクリプトを実行して、「組み込み」ボードを取得することもできます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.