
Daha önceki yazıda MSP430 kurulumu Linux altında yapılıp test edilmişti. Bu kez ise MSP430 LaunchPad için Linux altında yazılacak ilk basit uygulama anlatılıyor. Çalışma Ubuntu 11.04 üzerinde yapılmış olsa da, benzer paket yapısına sahip eski Ubuntu sürümlerinde de büyük ihtimalle aynı mantıkla ilerler.
İlk uygulama olarak en klasik örnek seçilmiş: kart üzerindeki kırmızı LED’i yakıp söndürmek. Bu tip ilk denemeler küçük görünse de aslında önemli.
Çünkü derleyicinin düzgün çalıştığını, başlık dosyasının doğru seçildiğini, programın karta aktarılabildiğini ve donanım tarafında temel iletişimin kurulduğunu hızlıca göstermiş oluyor.
Mikrodenetleyiciyle ilk kez uğraşanlar için başlangıç seviyesi kart mantığını oturtmak açısından da bu tip örnekler faydalıdır.
Gerekli paketlerin kurulması
İçerik
Aşağıdaki komutlar x86 yani 32 bit Linux makinede ve özellikle Gnome arayüzü kullanılan sistemlerde çalışacak şekilde düşünülmüş.
Uçbirimde bu paketleri kurarak derleme ortamı hazırlanabilir.
Yazacağımız ilk kodlar (Ubuntu paketleri için)
$ sudo aptitude install git-core gcc-4.4 texinfo patch libncurses5-dev $ sudo aptitude install zlibc zlib1g-dev libx11-dev libusb-dev libreadline6-dev
Bu adım tamamlandıktan sonra artık ilk uygulama için temel ortam hazır hale geliyor.
İlk MSP430 LED uygulaması
Bu örnekte P1.0 pini ile LaunchPad üzerindeki kırmızı LED sürülüyor.
Yeni bir ilkuygulama.c dosyası oluşturup aşağıdaki kodlar yazılabilir.
#include <msp430g2231.h>
int main(void) {
volatile int i;
// Watchdog timer'ı durdur
WDTCTL = WDTPW | WDTHOLD;
P1DIR = 0x01;
P1OUT = 0x00;
// Sonsuz döngü
for (;;) {
P1OUT ^= 0x01;
// gecikme için yazılan kod
for (i = 0; i < 0x6000; i++);
}
}
Kodun mantığı oldukça basit. Önce watchdog timer durduruluyor.
Ardından P1DIR = 0x01 ile P1.0 çıkış olarak ayarlanıyor.
Sonrasında sonsuz döngü içinde P1OUT ^= 0x01 komutu ile pinin durumu tersleniyor.
Araya konulan basit gecikme döngüsü sayesinde LED sürekli çok hızlı yanıp sönmek yerine gözle fark edilecek hızda değişiyor.
Derleme işlemi
Programı derlerken çıktı dosya adının yükleme aşamasıyla aynı olması işinizi kolaylaştırır.
Bu yüzden aşağıdaki biçim daha düzenli olur:
$ /opt/msp430-gcc-4.4.5/bin/msp430-gcc -Os -o ilkuygulama.elf ilkuygulama.c
Buradaki yol sizde farklıysa, kendi kurduğunuz msp430-gcc dizinine göre düzenleyebilirsiniz.
Bu tarz derleme ve zamanlama işlerinde hesap tarafı büyürse mikrodenetleyici hesaplayıcı araçlar da ayrıca işe yarayabiliyor.
Programın karta yüklenmesi
MSP430 LaunchPad kit ile gelen USB kablosunu karta bağlayın ve diğer ucunu bilgisayara takın.
Ardından mspdebug ile programı karta gönderip çalıştırabilirsiniz.
$ sudo mspdebug rf2500 (mspdebug) prog ilkuygulama.elf Erasing... Programming... Writing 104 bytes to fc00... Writing 32 bytes to ffe0... (mspdebug) run Running. Press Ctrl+C to interrupt...
Bu aşamadan sonra kırmızı LED’in yanıp sönmesi gerekir.
Eğer çalışmıyorsa genelde ilk kontrol edilecek yerler şunlardır: kartın doğru algılanıp algılanmadığı, derlenen dosya adının doğru yazılıp yazılmadığı, kullanılan başlık dosyasının takılı MSP430 entegresiyle uyumlu olup olmadığı ve USB bağlantısının sağlamlığı.
Bu örnek neden önemli
LED yakıp söndürme örneği çok basit görünür ama MSP430 ile Linux ortamında ilk başarılı uygulama sayılır.
Çünkü burada aynı anda birkaç şey doğrulanmış olur: toolchain düzgün çalışıyor, C kodu derleniyor, hedef mikrodenetleyiciye erişiliyor ve temel GPIO kontrolü sorunsuz.
Bundan sonra buton okuma, timer kullanma, UART veya ADC gibi adımlara geçmek daha kolay olur.
Farklı ailelerle kıyas yapmak isteyenler için PIC24 ve PIC32 örnekleri de ayrıca ilginç olabilir.
Kısacası Linux altında MSP430 ile çalışmak isteyenler için bu örnek iyi bir ilk adım.
Ortam doğru kurulduysa, birkaç satırlık kodla LaunchPad üzerindeki LED’i kontrol etmek mümkün ve bu da sonraki uygulamalar için sağlam başlangıç sağlıyor.