Daftar # preparcessor papan Arduino # definisi


9

Ketika seseorang memilih papan di dalam Arduino IDE, definisi preprosesor ditambahkan ke salah satu file di belakang layar.

Setelah banyak berburu dan sedikit keberuntungan saya menemukan bahwa format definisi ini adalah:

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

Beberapa mudah ditebak ( ARDUINO_AVR_UNO, misalnya), tetapi yang lain kurang begitu. Pro Micro telah '16' atau '8' ditambahkan ke definisi tergantung pada kecepatan. Saya tidak tahu apakah definisi ini berbeda untuk 5V atau 3.3V. Saya belum berhasil menebak definisi untuk Mega2560, tetapi tidak ada yang jelas.

Pertanyaan 1 : Apakah ada daftar definisi yang mungkin ada?

Pertanyaan 2 : Apakah ada perbedaan, sejauh menyangkut kompilasi dan keterlibatan preprosesor, antara BoardX -5V dan BoardX -3.3V, dan bagaimana perbedaan ini didefinisikan?


Untuk apa Anda membutuhkannya? Mungkin akan lebih berguna untuk membedakan antara prosesor (misalnya ATMega328), bukan papan.
Gerben

1
Saya memiliki proyek multi-simpul yang menggunakan Uno, Leonardo dan <kata benda kolektif> Pro Minis. Kode hampir identik untuk tiga versi tetapi untuk memudahkan debugging saya ingin dapat mengunggah (atau paling tidak mengkompilasi dari) kode yang sama untuk semuanya.
CharlieHanson

Aktifkan File> Preferensi> Kompilasi Verbose. Kemudian bangun / verifikasi dan periksa hasilnya. Anda akan melihat -D mendefinisikan yang diteruskan ke kompiler. Ini membuatnya mudah untuk menentukan perbedaan antara papan Anda.
Visual Micro

Jawaban:


10

Daftar simbol papan dapat dihasilkan oleh perintah shell ini:

$ 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

Papan didefinisikan oleh properti "build.board" di file boards.txt .

mini.build.board=AVR_MINI

Properti ini digunakan oleh resep bangunan bersama dengan awalan ARDUINO_.

-DARDUINO_{build.board} 

Bersulang!


+1, terima kasih untuk daftar itu. Sayang sekali tidak memuntahkan versi dual-speed untuk menghilangkan keraguan, tetapi ini menjawab pertanyaan lebih dari cukup baik.
CharlieHanson

Properti papan adalah sama untuk kedua versi pro-mini sementara tidak untuk mega. Mungkin boards.txt harus diperbarui dengan nama khusus untuk varian pro-mini, mis. AVR_MINI_16MHZ, AVR_MINI_8MHZ.
Mikael Patel

Bagi mereka yang mencari - saya mencoba untuk menemukan define untuk NodeMCU ESP8266 - jadi berdasarkan info dalam jawaban ini, itu adalah ARDUINO_ESP8266_NODEMCU Terima kasih!
Phil

3

Mikael memiliki jawaban yang tepat, tetapi ada beberapa file papan.txt tergantung pada papan yang diinstal dengan manajer papan, memodifikasi perintah untuk:

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

dan menjalankannya dari direktori Arduino basis Anda mengumpulkan seluruh set.


2

Kosong pertama adalah platform . Ini adalah "AVR" untuk AVR, "SAM" untuk Arduinos berbasis SAM, dll. Ini berasal dari direktori platform yang berisi inti.

Blank kedua adalah board . Ini berasal dari entri dalam boards.txtinti itu sendiri, dan merupakan pengidentifikasi sebelum periode pertama.

Tidak ada perbedaan antara proses kompilasi sehubungan dengan tegangan; perbedaan kecepatan diberikan F_CPUdan papan itu sendiri tidak harus diperiksa untuk ini.

Jadi tidak ada daftar yang pasti, karena daftar tersebut berukuran sewenang-wenang karena sumbernya.


Ini benar hanya ketika boards.txt tidak menentukan build.boardnilai dan satu secara otomatis dihasilkan oleh Arduino IDE.
per1234

1

Menambahkan detail pada jawaban Bill dan menambahkannya ke Mikael:

Paket yang Anda unduh melalui Board Manager berada di (pada 1.8.9 dan banyak revs sebelumnya):

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

Anda juga dapat menjalankan skrip satu baris Bill di folder instalasi Arduino Anda, untuk mendapatkan papan 'builtin'.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.