ใช้เวลา
ตามความรู้ของฉันคุณไม่สามารถตรวจพบประเภทของบอร์ด แต่คุณสามารถอ่าน ID อุปกรณ์ ATmega ตรวจสอบคำถามนี้ว่าจะทำอย่างไร: ลายเซ็นอุปกรณ์ ATmega หรือ ATtiny สามารถอ่านได้ในขณะที่ทำงานหรือไม่? โปรดสังเกตว่าเมื่อใช้วิธีนี้การมอบหมายการลงทะเบียนหลายรายการจะเปลี่ยนไปไม่ใช่แค่ pinout ดังนั้นรหัสของคุณอาจมีความซับซ้อนมากขึ้น ข้อดีคือถ้าคุณจัดการเพื่อหลีกเลี่ยงทั้งหมดเปลี่ยนการกำหนดลงทะเบียนและการอ้างอิงฮาร์ดแวร์อื่น ๆ ที่คุณสามารถใช้ไฟล์ .hex avrdude
เดียวในการเขียนโปรแกรมอุปกรณ์ของคุณโดยตรงจาก
รวบรวมเวลา
อีกวิธีหนึ่งในการคิดประเภทบอร์ด / คอนโทรลเลอร์คือเวลารวบรวม โดยทั่วไปคุณจะรวบรวมชิ้นส่วนของรหัสหรือชุดแมโครขึ้นอยู่กับประเภทอุปกรณ์ที่กำหนดค่าใน Arduino IDE ตรวจสอบตัวอย่างรหัสนี้สำหรับตัวอย่าง:
#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
#define DEBUG_CAPTURE_SIZE 7168
#define CAPTURE_SIZE 7168
#elif defined(__AVR_ATmega328P__)
#define DEBUG_CAPTURE_SIZE 1024
#define CAPTURE_SIZE 1024
#else
#define DEBUG_CAPTURE_SIZE 532
#define CAPTURE_SIZE 532
#endif
ตัวอย่างรหัสถูกคัดลอกมาจากhttps://github.com/gillham/logic_analyzer/wiki อย่างไร้รอยต่อตรวจสอบรหัสนั้นเพื่อดูอุปกรณ์ที่ใช้กลอุบายบางอย่างเพิ่มเติม
ขึ้นอยู่กับระบบปฏิบัติการของโฮสต์ประเภทคอนโทรลเลอร์ที่รองรับสามารถพบได้ในไฟล์ต่อไปนี้:
- ลินุกซ์:
/usr/lib/avr/include/avr/io.h
- ของ windows:
...\Arduino\hardware\tools\avr\avr\include\avr\io.h
การใช้ตัวประมวลผลล่วงหน้า C (ซึ่งจัดการโค้ดข้างต้น) อาจไม่อยู่ในขอบเขตสำหรับไซต์นี้ http://stackoverflow.comจะเป็นสถานที่ที่ดีกว่าสำหรับคำถามโดยละเอียด
หากคุณอยู่บน Linux คุณสามารถค้นหาประเภทคอนโทรลเลอร์ที่รองรับทั้งหมดได้อย่างง่ายดายโดยพิมพ์:
grep 'defined (__AVR' /usr/lib/avr/include/avr/io.h | sed 's/^[^(]*(\([^)]*\))/\1/'