Arduino ve Üçüncü Parti Derleyici Karşılaştırması – Arduino Ne Kadar Yeterli ?

Bir önceki yazımda AVR ile Arduino’yu karşılaştırmıştım. Bu karşılaştırma bir seviyede olanlar için oldukça gereksiz olsa da bir şeyler öğrenmeniz açısından faydalı olacaktır. Şimdi ise Sırp Mikroelektronika firmasının yaptığı AVR için MikroC derleyicisi ile Arduino’yu karşılaştıracağım. Böylelikle Arduino’nun sıradan bir derleyici karşısında ne derecede olduğunu görebileceksiniz. Mikroelektronika firmasının Arduino kadar büyük bir firma olduğunu da hiç sanmıyorum. PIC ile haşır neşir olanlar için bile pek duyulmuş bir firma değildir. Bu firmanın ürünleri temel olarak çeşitli mikrodenetleyiciler için üretilmiş C derleyicilerinden oluşmaktadır. Herhangi bir üretici firmaya bağlı olmadıkları için üçüncü parti derleyici ve geliştirme stüdyosu ortaya koymaktalar. Arduino’ya bu yönden benzerlikleri var.

Arduino’nun ilkel olsa da kendine ait bir derleme stüdyosu, kütüphane fonksiyonları ve geliştirme kartları vardır. Aynı şekilde mikroelektronika firmasının da derleme stüdyosu, derleyicisi, kütüphaneleri ve geliştirme kartları vardır. O yüzden iki ürünü karşılaştırmak daha verimli olacaktır. Şimdi AVR için MicroC derleyicisini tanımak adına Mikroelektronika internet sayfasına girelim.

MikroC derleyicisinde 1200 kütüphane fonksiyonu, 109 örnek kod olduğunu görüyoruz. Aynı zamanda da 207 adet mikrodenetleyiciyi destekliyor. Arduino ise kendi ürettiği kartları desteklemekte. Derleyicide çeşitli araçlar ve yardımcı programlar var. Arduino derleyicisinde adeta notepad üzerinden kod yazıyormuşuz gibi oluyordu. Derleyicinin kütüphane desteği güzel ve kullanıcılar derleyici üzerinden yazdığı kütüphaneleri LibStock ortamına yükleyebiliyor.

Resim: https://cdn.mikroe.com/img/compilers/mikroc/avr/default/highlights/mikroc-avr-library-manager.jpg

Aynı zamanda Code Assistant adı verilen kod yazmada yardımcı bir gömülü program var. Böyelikle daha kolay kod yazmamış sağlanmış oluyor. Bazı fonksiyonları çağırmada oldukça işimize yarar görünüyor.

Resim: https://cdn.mikroe.com/img/compilers/mikroc/avr/default/highlights/mikroc-avr-code-assistant.jpg

Ayrıca bundan başka mikrodenetleyici programlamada kullanılmak üzere pek çok aracı ihtiva ediyor. Bu yönden derleyici gerçek bir geliştirme stüdyosu havası yakalamış oluyor.

Resim: https://cdn.mikroe.com/img/compilers/mikroc/avr/default/highlights/mikroc-avr-built-in-tools-ide-a.jpg

Bu çok gelişmiş bir geliştirme stüdyosu olmasa da gelişmiş stüdyoları çok da aratmayacak bir seviyededir. Şimdi ise Arduino’nun derleyicisine bakalım ve bize ne sunduğunu görelim.

Kısaca söylemek gerekirse, hiçbirşey. Bu derleyiciyi üç yıldan fazla süredir kullanıyorum. Daha doğru düzgün bir port algılama özelliğine bile sahip değil. Taktığımız kartın portunu çoğu zaman kendimiz seçmek zorunda kalıyoruz. Notepad kadar basit kalsa da çoğu zaman kararsız çalışıyor. Derleme hataları çok acayip yerlerden geliyor bazen biz bile çözemiyoruz. Oldukça yavaş derleme yapması da cabası. Kod yazmamızda yardımcı bir özelliği yok. Bir araç yok. Notepad üzerine kod yazıyoruz ve doğru düzgün derlemesini umuyoruz. Bazen yazdığım bir program 5 kartta çalışıyor birinde çalışmıyor. Tekrar derleyip yükleyince düzgün çalışıyor nedense (!).

Önceki yazıda dediğim gibi eğitim amaçlı gayet basit ve kullanımı kolay bir derleyici. Boş bir sayfa ve iki düğmeden başka bir şey yok. Gayet kullanımı kolay. Fakat ne zaman bizin programlarımız para eder seviyeye gelirse o zaman başımıza bela oluyor. Bu derleyicinin zaman içerisinde onlarca sürümünü çıkardılar. Neredeyse her birinin ayrı bir hatası vardı geri düzeltip tekrar yayınladılar. Eskiden stabilizasyonu çok daha kötüydü. Her yeni sürümde eski kütüphanelerin çalışmama ihtimali yüzünden AVR kodu üzerine kütüphane yazmamız şart gibi görünüyor.

Şimdi geliştirme stüdyolarını bırakıp programlama dilindeki fonksiyonlara ve kütüphanelere bakalım. Bakalım hangi derleyici daha kolay program yazmamızı sağlarken aynı zamanda da mikrodenetleyicinin özelliklerini tam anlamıyla kullanmamızı sağlıyor. Öncelikle Arduino dilinden (Bunu kendileri de kullanır.) başlayalım. Bunun ne kadar bir mikrodenetleyici dili olduğunu görelim. Dilin temeline bakmak için referans sayfasını açıyoruz ve mikrodenetleyiciye dair ne olduğuna bir bakıyoruz.

Burada C diline ait programlama özelliklerini bir kenara bırakmamız gerekir. Matematik ve karakter işlemleri mikrodenetleyicinin donanımı ile alakalı değildir. Burada donanımla alakalı en temel üç fonksiyon görüyoruz. digitalRead(), digitalWrite() ve pinMode() fonksiyonları ile bütün giriş ve çıkış işlemlerini yapıyoruz. Arduino’nun en kullanışlı fonksiyonlarının bunlar olduğunu söyleyebilirim. Çünkü AVR-GCC’de bir ayaktan çıkış almak için bu fonksiyonla kıyaslayınca oldukça karmaşık bir kod yazmamız gerekliydi. Aynı zamanda tone(), pulseIn(), shifhOut() fonksiyonları da temel giriş ve çıkış üzerine yazılmış kullanışlı fonksiyonlardır. tone() fonksiyonu ne kadar sınırlı bir kullanıma sahip olsa da kare dalga frekans üretmek için kullanılabilir. delay() ve delayMicroseconds() fonksiyonlarının karşılığı ise AVR-GCC derleyicisinde bile kütüphane olarak mevcuttur. delay() yerine _delay_ms() fonksiyonunu kullanıyoruz.

millis() fonksiyonu ise zamanlayıcıları kullanan bir fonksiyondur ve program açılışından itibaren kaç mili saniye geçtiğini bize bildirir. Zamanlayıcıları sadece millis() fonksiyonuna bağlı kalarak kullanmak oldukça verimsiz bir iştir. Zamanlayıcıları on derste anlatmıştık ve pek çok özelliğinin olduğundan bahsetmiştik. Bu özellikleri Arduino ile kullanamıyoruz. Analog işlemler için ise üç fonksiyon bulunmaktadır. Bu hazır fonksiyonlar bize tek bir kullanım şekli vermektedir ve ayarlanabilirlikten yoksundur. Bundan başka iki adet kesme ayağını kesme olarak kullanabileceğimiz fonksiyonlar vardır.

Hepsini özetlersek eğer Arduino’da kütüphane kullanmazsak yapabileceklerimiz şunlardır,

Led yakıp söndürebiliriz, hoparlörden belli bir frekansta ses çıkışı elde edebiliriz, analog değer okuyabiliriz, delay ile mikrodenetleyiciyi geciktirebiliriz ve iki kesme ayağını kullanabiliriz.

Arduino’nun resmi kütüphanelerinin yarısının da ürettikleri pahalı kartları çalıştırmaya yönelik olduğunu söyleyelim.

Burada ayrıca üçüncü parti başka bir derleyiciden bahsetmek istiyorum. PIC için CCS C derleyicisini incelediğimde basit giriş ve çıkış fonksiyonlarının bile Arduino’ya kıyasla oldukça zengin olduğunu gördüm.  Program dili olarak Arduino’ya çok benzer olan ve Standart C’den uzak olan CCS C derleyicisinde tekli ayak giriş ve çıkışı olduğu gibi port olarak da giriş ve çıkış olarak tanımlamak ve kullanmak mümkün. Aynı zamanda toggle gibi çeşitli giriş ve çıkış için özellikli fonksiyonlar mevcut. Sadece giriş ve çıkışta olduğu gibi her mikrodenetleyici birimi için fonksiyonlar mevcut. WDT’den tutun Timer’a, PWM’e kadar ayarlama yapabileceğimiz ve isteiğimiz gibi kullanabileceğimiz fonksiyonlar mevcut. Bunu da mikrodenetleyicinin datasheet’ini okumadan ve yazmaçlara müdahale etmeden kolaylıkla yapabiliyoruz.

Yapmamız gereken Arduino’da olduğu gibi referansı okumak ve program yazmak.

CCS C derleyicisinin kullanma kılavuzunu şuradan indirip okuyabilir. Ne kadar fazla fonksiyon sunduğunu görebilirsiniz.

https://www.ccsinfo.com/downloads/ccs_c_manual.pdf

Şimdi AVR için MikroC derleyicisine geri dönelim. Bu derleyici aynı CCS C derleyicisi ya da başka bir üçüncü parti derleyicide olduğu gibi tam özellikli olup donanım erişimi konusunda bize sıkıntı yaşatmıyor. Çünkü bu derleyiciyi kullanarak ışıkları yanıp sönen oyuncaklar değil gerçek projeler yapmamız gerekli. Buna yönelik bir derleyici ortaya koymalarının yanında programlayıcıları rahat ettirecek derleyici içerisinde gelen kütüphanelere de sahipler.

Derleyicinin kullanma kılavuzunda yer alan kütüphanelerin bazıları şunlardır.

Kullanma kılavuzu toplamda 610 sayfa olup aynı zamanda programlamaya dair bilgiler de içermektedir. Her birinin örnek kodu mevcut olup başkasının yazdığı bir yazıya veya kütüphaneye pek mecbur kalmayız. Kılavuzu şuradan indirip okuyabilirsiniz.
http://download.mikroe.com/documents/compilers/mikroc/avr/mikroc-avr-manual-v100.pdf

Şimdi gelelim fiyat karşılaştırmasına 🙂 Bu derleyicileri bedavadan verecek değiller. MikroC derleyicisi ömür boyu süreli bir lisans veriyor ve 250 dolardan satılıyor. CCS C derleyicisinin en üst sürümü ise 600 dolardan satılıyor. Arduino derleyicisi ise ücretsiz. Ama şunu sormamız gerekir. Arduino derleyicisini değil 250, 50 dolardan satsa idi müşteri bulur muydu ? Para ile satılan bir derleyici kalitesinde olmadığı için ücretsiz olması kullanılması için tek seçenek gibi görünüyor.

Kaynaklar,

Kapak Resmi, https://cdn-shop.adafruit.com/1200×900/191-05.jpg

UYARI!!

Gökhan Dökmetaş

"Arduino Eğitim Kitabı" ve "Arduino ve Raspberry PI ile Nesnelerin İnterneti" kitaplarının yazarı. Başkent Teknoloji ve Dedektör Merkezi'nde Ar-ge Sorumlusu. Araştırmacı-Yazar.

You may also like...

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.