LOADING

Type to search


Share

Arduino kullanan amatörler için oldukça verimli bir programlama platformu. Fakat zamanla iş profesyonelleşmeye başladıkça, ihtiyçlar bazen tıkanma noktasına geliyor. Çünkü kullanmayı öğrenirken, gereksinimleri karşılayıp karşılamadığını göz ardı ediyoruz. Bazen daha hızlı olsun istiyoruz, bazen daha çok yer olsun istiyoruz ama 16Mhz lik mega ile aya araç gönderebilirsiniz : Yeterki değişken kullanım performansı, kodlama yapısı gibi şeylere aşina olun.

Arduino Mega 2560 ATmega2560 mikrodenetleyici içeren bir Arduino kartıdır. Arduino Uno ‘dan sonra en çok tercih edilen Arduino kartı olduğu söylenebilir. Bir üst noktası Arduino DUE dir fakat mega ile aralarında platform farkı olduğunu söylemek gerekir. Zira DUE, sam cortex işlemci ailesine aittir ve 32-bit ARM cortex mikro işlemcisi kullanmaktadır. Ve 16 Mhz lik işlemci hızı yanında 84 Mhz ile neredeyse 5 kattan daha hızlıdır.

Zaman zaman arduinoyu nasıl daha performanslı kodlarsınız diye yazılar hazırlıyorum. Ve en önemli noktanın standart arduino IDE kodlaması haricinde makine diline daha yakın olan True C ile kodlanması gerektiğini söylediğimi biliyorsunuzdur.

Yani   digitalWrite(13,LOW);  yerine   PORTB |= _BV(PB5);   kullanmak gibi.

İlk bakışta anlamsız ve öğrenmesi zor gelebilir ama ilk komut ile bir portu açtığınızı ve kapattığınızı düşünürseniz yavaş yavaş anlam kazanmaya başlayacaktır.

Örnek olarak 6 adet değişkenimin yer aldığı kodu veriyorum. Standart değişkenleri int ile tanımlıyoruz;
int thermoCLK = 5; // Thermocouple SPI
int thermoCS = 6; // Thermocouple SPI
int thermoDO = 7; // Thermocouple SPI
int SSR_PIN = A5; // SolidState Relay Trigger Pin
int PIN_SD_CS = 53; // SD SPIMega
int PIN_BUZZER = A4; // Buzzer PIN

Çalışmanız programın 30560 bayt (12 %) saklama alanını kullandı. Maksimum 253952 bayt.
Global değişkenler belleğin 3254 byte kadarını (39%) kullanıyor. Yerel değişkenler için 4938 byte yer kalıyor. En fazla 8192 byte kullanılabilir.

Ve daha sonra aynı değişkenleri #define olarak tanımlıyoruz;
#define thermoCLK 5 // Thermocouple SPI
#define thermoCS 6 // Thermocouple SPI
#define thermoDO 7 // Thermocouple SPI
#define SSR_PIN A5 // SolidState Relay Trigger Pin
#define PIN_SD_CS 53 // SD SPIMega
#define PIN_BUZZER A4 // Buzzer PIN

Çalışmanız programın 30502 bayt (12 %) saklama alanını kullandı. Maksimum 253952 bayt.
Global değişkenler belleğin 3248 byte kadarını (39%) kullanıyor. Yerel değişkenler için 4944 byte yer kalıyor. En fazla 8192 byte kullanılabilir.

Gördüğünüz gibi sadece #define kullanarak yerel değişkenlerde ve program alanında küçülme yaşadık. Diyeceksiniz ki bu nedir 10 bayt için mi bu kadar yazı okuduk 🙂 6 adet değişken için ufak gelebilir ama şu anda üzerinde çalıştığım programda bir çok değişken, array vb tanımlamalar kullanıyorum, sizde programınızın kapasitesini arttırıkça bu tip optimizasyonlara yönelme ihtiyacı duyacaksınız. İşte ihtiyacınıza nereden başlamanız gerektiğini artık biliyorsunuz.


Tags:
Anthony Burak DURSUN

Adjans Digital Agency CEO, Gömülü sistemler, yazılım, fotoğraf çekmek, tasarım, teknoloji konularına hisli, evli, 4 kedi babası, asabi, anksiyetik bir kişi. Tekrarlayan şeyleri sevmez, her an her şey hakkında yazabilir, konuşabilir. Önceki hayatında marangoz olduğunu düşünüyor.

  • 1

Leave a Comment

Your email address will not be published. Required fields are marked *

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.