Bu senenin başında ARM kiti ararken burada gördüğüm yarışmaya katılmış ve mbed NXP LPC1768 için istek formu doldurmuştum. Aradan geçen 2,5 ayın sonunda NXP, Circuit Cellar ve Elektor’un evime gönderdiği kargoyla birlikte oldukça fazla şaşırdım.
Kargo içeriğinde bir adet mini usb kablosu ve 7x3cm boyutlarında bir mbed NXP LPC1768 kiti vardı. Kiti bilgisayara taktığımda bilgisayarım bölümünde MBED adında bir birim oluşturdu. Hemen ilk programımı mbed.org’a girerek oluşturdum ve sitenin bana sunduğu .bin uzantılı dosyayı MBED birimine atıp, kit üzerinde bulunan butona basarak ilk uygulamamı (led yak söndür) 10 saniye içerisinde gerçekleştirdim. Daha sonra ise kit’in üzerinde bulunan 4 adet led ile normal aç/kapa ve PWM ile karaşimşek uygulaması yaptım. Bu uygulamaya ait kodları, videoyu, bu kit ile ilgili iyi ve eksik bulduğum noktaları aşağıda bulabilirsiniz.

//            www.FxDev.org
// Yazar: FIRAT DEVECi
// mbed NXP LPC1768 Led Efektleri

#include "mbed.h"

int main()
{
    int i=0, t=0;
    float j=0, k=0;
    while(1)
    {
        DigitalOut LED_1(LED1);
        DigitalOut LED_2(LED2);
        DigitalOut LED_3(LED3);
        DigitalOut LED_4(LED4);

        for(i=0;i<5;i++)
        {
            LED_1=1;    LED_2=0;    LED_3=0;    LED_4=0;
            wait_ms(100);
            LED_1=0;    LED_2=1;    LED_3=0;    LED_4=0;
            wait_ms(100);
            LED_1=0;    LED_2=0;    LED_3=1;    LED_4=0;
            wait_ms(100);
            LED_1=0;    LED_2=0;    LED_3=0;    LED_4=1;
            wait_ms(100);
            LED_1=0;    LED_2=0;    LED_3=1;    LED_4=0;
            wait_ms(100);
            LED_1=0;    LED_2=1;    LED_3=0;    LED_4=0;
            wait_ms(100);
        }

        PwmOut LED1_PWM(LED1);
        PwmOut LED2_PWM(LED2);
        PwmOut LED3_PWM(LED3);
        PwmOut LED4_PWM(LED4);

        for(t=0;t<10;t++)
        {
            for(i=0;i<50;i++)
            {
                LED1_PWM = 1-j;
                LED2_PWM = 0.60-k;
                LED3_PWM = 0.10+k;
                LED4_PWM = j;

                j=j+0.02;
                k=k+0.01;
                wait_ms(10);
             }
            j=0; k=0;
            for(i=0;i<50;i++)
            {
                LED1_PWM = j;
                LED2_PWM = 0.10+k;
                LED3_PWM = 0.60-k;
                LED4_PWM = 1-j;

                j=j+0.02;
                k=k+0.01;
                wait_ms(10);
            }
            j=0; k=0;
        }
    }
}

Yaptığım uygulamaya ait videoyu aşağıdan izleyebilirsiniz.YouTube Preview Image

mbed NXP LPC1768 İyi Yanı- Size çok güzel bir header sunuyor ki üzerinde ethernet entegresi dahi var.
- Küçük uygulamalarda (örneğin sumo, çizgi izleyen robot yapımı gibi) özellikle hazır kütüphaneleri sayesinde sizi çok fazla uğraştırmıyor.
- Programlama işlemleri oldukça hızlı ve geçici hafızası oldukça büyük.
- Biz öğrencileri 49€ ödemekten kurtarması çok iyi.

mbed NXP LPC1768 Kötü Yanı- Online compiler olması internetsiz bir bilgisayarda deneme yapmayı imkansız kılıyor.
- Kütüphane içerikleri görünmüyor.
- Uzun süreli çalışmalarda ısınma problemi oluyor.
- Debug seçeneği yok.

mbed NXP LPC1768 kartı ile uygulama yaptıktan sonra ne zamandır ilgimi çeken PIC24F serisi ile bugün bir deneme yapma şansım oldu. ExpKits EX16L kiti ile yaptığım bu uygulamada PIC24FJ64GA002‘nin RB13, RB14 ve RB15. bacaklarına bağlı RGB ledi 3 bağımsız PWM kullanarak sürdüm ve ortaya bir renk deseni çıkardım. Aşağıda videosunu görebileceğiniz uygulama çok basit de olsa dsPIC ve türevlerine başlayacaklar için PWM ve pin yönlendirmelerinin nasıl yapılacağı hakkında ipucu vereceğine inanıyorum.YouTube Preview ImageYukarıdaki videodan da okuduğunuz üzere, aşağıda gördüğünüz uygulamaya ait kodları MPLAP X’de derledim ve hiç bir sorunla karşılaşmadım.

//            www.FxDev.org
// Yazar: FIRAT DEVECi
// PIC24FJ64GA002 ve 3 PWM ile RGB Led Sürme
#include "p24Fxxxx.h"
#include "lcd.h"

_CONFIG1(JTAGEN_OFF & GCP_OFF & GWRP_OFF & BKBUG_OFF & COE_OFF & ICS_PGx1 & FWDTEN_OFF & WINDIS_OFF);
_CONFIG2(IESO_OFF & SOSCSEL_LPSOSC & WUTSEL_FST & FNOSC_FRCPLL & FCKSM_CSDCMD & OSCIOFNC_OFF & IOL1WAY_ON & I2C1SEL_PRI & POSCMOD_NONE)

int main(void)
{
    unsigned long i=0;
    TRISB=0x00;
    DelayMs(100);

    RPOR6bits.RP13R = 18;   // PWM1 RB13'e atandı
    RPOR7bits.RP14R = 19;   // PWM2 RB14'e atandı
    RPOR7bits.RP15R = 20;   // PWM3 RB15'e atandı

    T2CON=0x0000;           // Timer2 kapalı, 16bit mode, 1:1, Fosc/2
    TMR2=0;
    PR2=255;                // 16bitlik çözünürlük, 244Hz @32/2Mhz

    OC1CON=0x0006;          // PWM modunda, Timer2 saat kaynağı
    OC2CON=0x0006;          // PWM modunda, Timer2 saat kaynağı
    OC3CON=0x0006;          // PWM modunda, Timer2 saat kaynağı

    T2CON = 0x8000;         // Timer2 çalıştırılıyor

    OC1RS=1;
    OC2RS=1;
    OC3RS=1;

    lcd_init();             // LCD ön ayarları yükleniyor

    lcd_gotoxy(1,1);        // Tanıtım bilgileri yazılıyor
    lcd_yaz("FxDev.org Sunar!");
    lcd_gotoxy(2,1);
    lcd_yaz(" RGB LED Demo");
    DelayMs(2000);
    lcd_clear();

    for(;;)                         // 0'dan 250'ye PWM Duty Değerleri 10'ar
    {                               // 10'ar artırılıyor
        OC1RS=(i%256)+1;
        OC2RS=((i/256)*10)%256;
        OC3RS=((i/6656)*10)%256;
        i+=10;
        if(i>16777215)
            i=0;
        lcd_gotoxy(1,1);            //  Anlık PWM değerleri LCD'ye yazılıyor
        lcd_yaz("P1:");
        veri_yolla((OC1RS/100)+48);
        veri_yolla((OC1RS%100)/10+48);
        veri_yolla((OC1RS%10)+48);
        lcd_yaz("  P2:");
        veri_yolla((OC2RS/100)+48);
        veri_yolla((OC2RS%100)/10+48);
        veri_yolla((OC2RS%10)+48);
        lcd_gotoxy(2,1);
        lcd_yaz("P3:");
        veri_yolla((OC3RS/100)+48);
        veri_yolla((OC3RS%100)/10+48);
        veri_yolla((OC3RS%10)+48);
    }

}

Yukarıdaki kodlardan da görüleceği üzere PIC24F ile PWM sürmek oldukça sade ve kolaydır. Özellikle 16F ve 18F’lere nazaran duty registerinin bir bütün halinde olması işlemlerimizi bir nebze daha kolaylaştırmaktadır.
Farklı mikrodenetleyicileri kullanmayı seven biri olarak ister ARM olsun ister PIC olayın özü registerlerdir diyerek bu yazımı sonlandırırken herkesin bayramını kutlar, vizelerde başarılar dilerim.

* Müzik: The Corrs – Toss The Feathers
* Kit temini için ExpKits sahibi Göktuğ Bey’e teşekkürler.