Çalışma süresi
Bildiğim kadarıyla kart tipini tespit edemezsiniz, ancak ATmega cihaz kimliğini okuyabilirsiniz. Bu sorunun nasıl yapılabileceğini kontrol edin: Çalışırken bir ATmega veya ATtiny cihaz imzası okunabilir mi? Bu yöntemi kullanırken, sadece pinout'u değil, birkaç kayıt atamasının da değişeceğine dikkat edin. Bu nedenle kodunuz daha karmaşık hale gelebilir. Avantaj olduğunu eğer tüm değişen kayıt atamaları ve diğer donanım bağımlılıklarını geçici yönetmek, doğrudan 'dan cihazlarınızı programlamak için tek bir Hex dosyası kullanabilirsiniz avrdude
.
Derleme zamanı
Kart / denetleyici türünü anlamanın başka bir yolu derleme zamanıdır. Temelde, kodun parçalarını derler veya Arduino IDE'de yapılandırılan cihaz türüne bağlı olarak makrolar ayarlarsınız. Örnek olarak bu kod sniplet'ini kontrol edin:
#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
Kod pasajı utanmadan https://github.com/gillham/logic_analyzer/wiki adresinden kopyalandı . Cihaza özgü bazı daha fazla hile için bu kodu kontrol edin.
Ana makinenizin işletim sistemine bağlı olarak, desteklenen denetleyici türleri aşağıdaki dosyada bulunabilir:
- Linux:
/usr/lib/avr/include/avr/io.h
- Pencereler:
...\Arduino\hardware\tools\avr\avr\include\avr\io.h
C-önişlemcisinin kullanımı (yukarıdaki kodun işlendiği) muhtemelen bu site için kapsam dışıdır. Ayrıntılı sorular için http://stackoverflow.com daha iyi bir yer olacaktır.
Linux'taysanız, desteklenen tüm denetleyici türlerini yazarak kolayca bulabilirsiniz:
grep 'defined (__AVR' /usr/lib/avr/include/avr/io.h | sed 's/^[^(]*(\([^)]*\))/\1/'