MPLAB,Microchip (www.microchip.com) tarafından geliştirilmiş entegre tasarım ortamıdır.MPASM derleyicisi,assembly kodlarını yazmak için geliştirilmiş metin editörü,MPSIM simülatörü ve proje yöneticisi içeren MPLAB,tasarımcılar için oldukça yararlı bir araçtır.MPLAB tasarım ortamında yukarıda sözü edilen olanaklardan yararlanabilmek için assembly kodlarıyla program yazmak gerekir.Ancak diğer dillerin derleyicilerinin de son günlerde çok popüler oluşu,yeni versiyonlarında diğer firmaların derleyicilerinin de kullanılabilmesini olanaklı hale getirmiştir.Böylece örneğin DOS ortamı için hazırlanmış olan Picbasic derleyicilerini,MPLAB ortamından kullanabilme olanağı sağlayarak metin editörü ve derleyici programlarını aynı ortamda çalıştırarak kullanılan program sayısı ikiye düşürülmüş olacaktır. (Microchip HI-TECH, IAR, Byte Craft, B. Knudsen, CCS ve microEngineering Labs firmalarının derleyicileri için entegrasyon sağlamaktadır ve tabii ki bu firmaların derleyicilerinin tam sürümleri ücretlidir)
MPLAB programını elde etmek için bu adresten yararlanabilirsiniz. Microchip'in kendi assembly derleyicsi ve yazılım geliştirme ortamı ücretsiz olarak sunulmaktadır.
Not: MPLAB C18 (PIC18 serisi için özel olarak optimize edilmiş) ve C30 (PIC24 ve dsPIC serisi için özel olarak optimize edilmiş) C dili ile yazılım geliştirenler için özel olarak hazırlanmış derleyicilerdir ve ücretlidirler. Bununla beraber student edition sürümü bazı kısıtlamalara sahip olmakla beraber ücretsizdir.
MPLAB IDE’nin Project Manager aracı bizim adım adım kodumuzu yazıp derlememizi sağlar. Bir MPLAB projesi sırayla şu adımlarla oluşturulur:
• Select Device (Cihazı seç)
MPLAB IDE’nin sunacağı imkanlar cihazdan cihaza değişir. Bir projeye başlamadan önce cihaz seçimi mutlaka yapılmalıdır.
• Create Project (Projeyi oluştur)
MPLAB proje sihirbazı bunun için kullanılır.
• Put files in Project (Projenin içine gerekli dosyaların yerleştirilmesi)
Proje için iki dosya kullanılmalıdır (template file ve linker script). Bu dosyalar MPLAB IDE klasörünün alt klasörleri için yer almaktadır. Bunları kullanmak kod yazmaya başlamamızı kolaylaştırır.
• Create Code (Kodun oluşturulması)
Şablon dosyasına (template file) bazı kodlar eklenir (I/O portuna yükselen değerler göndermek için)
• Build Project (Projeyi yapılandır, derle)
Oluşturduğumuz kodlar derlenir ve PIC mikrodenetleyicimizin anlayabileceği bir makine diline (hex dosyası) dönüştürülür.
• Test Code with Simulator (Simulatör ile test et)
Son olarak, kod simulatör yardımıyla test edilir.
1)CİHAZI SEÇMEK
MPLAB IDE ekranındaki Configure menüsünden “Select Device” sekmesine tıklayın. Karşınıza çıkan listeden projenizde kullanacağınız PIC’in model numarasını girin ve ok tuşuna basın.
Küçük baloncuklar MPLAB IDE nin bu cihaz için hangi bileşenleri desteklediğini gösterir.
• Yeşil ışık tam olarak desteklendiğini gösterir
• Sarı ışık MPLAB yazılımına yapılıcak eklentilerle gerekli desteğin sağlanılabileceğini gösterir.
• Kırmızı ışık bileşenin desteklenmediğini gösterir.
2)PROJEYİ OLUŞTURMAK
Sıradaki adım proje sihirbazını kullanarak bir proje oluşturmak. Proje derlenecek olan dosyaların organize edilmesini sağlar. Biz bu projemizde sadece bir assembly dosyası kullanacağız ve bu da bir linker script olacak. Project menüsünden Project Wizard’ı seçin.
Welcome penceresi üstünde next düğmesine basın ve geçin.
Bundan sonra karşınıza gelecek pencerede karşınıza PIC seçimi yapıyoruz. Daha önce seçmiş cihazı bize gösterecektir. Eğer göstermiyorsa kendimiz tekrar aynı cihazı seçmeliyiz.
3)DİL ARAÇLARINI PROJEYE DAHİL ETMEK
Proje sihirbazının ikinci adımında projede kullanacağımız dil araçlarını kuruyoruz. Araç listesinden “Microchip MPASM Toolsuite’i seçin”. Bunu seçtikten sonra “MPASM Assembler” ve “MPLINK Objeck Linker” görünür hale gelecektir. Bu dosyaların yerlerini görmek için teker teker üstlerine tıklayın.
4)PROJEYİ İSİMLENDİRMEK
Sonraki adımda projemizi isimlendirip, kaydetme yolunu seçiyoruz.
5)PROJEYE DOSYALARI EKLEMEK
Dördüncü adımda proje sihirbazı projemiz için dosya seçimine izin verir. Bir kaynak kodu dosyası henüz seçilmedi, o zaman biz MPLAB IDE şablon dosyasını kullanacağız. Şablon dosyaları bir projeye başlangıç oluşturması için hazırlanmış basit dosyalardır. Herhangi bir kaynak kodunun önemli kısımlarını bünyesinde barındırırlar. Bu tabii ki sizin kodları yazmanızı veya düzenlemenizi kolaylaştıracaktır. Her PIC için ayrı şablon dosyası bulunmaktadır. Örneğin siz bu listeden f452tmpo.asm dosyasını seçin.(Dosya yolu: C:\Program Files\Microchip\MPASM Suite\Template\Object\)
İlgili dosyayı add butonuna basarak ekliyoruz ve yanındaki kutucuğu işaretliyoruz. Şimdi sıra linker scripti eklemeye geldi. Linker script dosyaları için de her PIC’e göre özel script dosyaları vardır. Biz örnek olarak 18F452 kullandığımızdan 18F452.lkr dosyasını seçin.(Dosya yolu: C:\Program Files\Microchip\MPASM Suite\LKR)
Next butonuna tıkladığımızda karşımıza en son özet ekranı çıkacaktır.
6)KOD YAZMAK
Şablon dosyasını çift tıklayarak açın ya da aşağıda gösterildiği gibi üstünde sağ tuş tıklayarak edit sekmesini seçin:
Dosya’nın ilk satırında dosya hakkında bilgi veren yorumlarla karşılaşırsınız. Bu kısımları olduğu gibi bırakmak sizin zararınıza olmaz.
İlk bölümlerdeki kodlar kesme ve konfigürasyon biti ayarları gibi gelişmiş fonksiyonları içeren kısımlardır. Yazacağımız kod “main” ile ifade edilen sembolün alt kısmında yer alacaktır.
Main sembolünün altına şu örnek kodu yazın:
Main:
clrf WREG
movwf PORTC ; PORTC’yi temizle
movwf TRISC ; PORTC’yi çıkış yap
Init
clrf COUNT
IncCount
incf COUNT
movf COUNT,W
movwf PORTC ; PORTC’de COUNT’u görüntüle
call Delay
goto IncCount ; Sonsuz döngü
Delay
movlw 0x40 ; Dış gecikme döngüsü uygula
movwf DVAR2
Delay0
movlw 0xFF
movwf DVAR ; İç gecikme döngüsü uygula
Delay1
decfsz DVAR
goto Delay1
decfsz DVAR2
goto Delay0
return
(Not: Bu kodu yazarak PORTC yazmacının(register) değerini belirlenen zaman dongüsü içinde artırmayı hedefliyoruz)
Kodumuzun bu bölümünde, COUNT, DVAR ve DVAR2 olmak üzere üç değişken ismi tanımlıyoruz. Bu değişkenlerin devreye sokulmamış veri (Uninitialized data) için kullanılan UDATA bölümündeki şablon dosyası için tanımlanması gerekir. Şablon dosyasının bu bölümünde zaten üç değişken bulunmaktadır ve bizimkiler de aynı yazım şekli kullanılarak onların altına eklenebilir. Her değişken 8-bit, yani 1 byte kadar bellekte yer kaplar.
7)PROJEYİ DERLEMEK
Ana menüden Project’i seçip “Build All” seçeneğine tıklayın. Eğer kodunuzda hiç hata yoksa aşağıdaki gibi görüntülenecektir:
Eğer hata varsa outpu penceresinde bulunan hatalar görüntülenecektir. Hata durumunda output penceresinin uyarısına göre kullandığınız kaynak dosyalarına veya koddaki yazım hatalarını gözden geçirin ya da uygun derleyicinin seçilip seçilmediğini kontrol edin.
8)YAZDIĞIMIZ KODU SİMULATÖR İLE TEST ETMEK
Simulatör PIC cihazlarının komutlarını PC üzerinde sanal olarak gerçekleştiren bir yazılımdır. PC’nin hızına, kodun karmaşıklığına, işletim sistemine bağlı olarak “gerçek zamanlı” olarak çalışmayabilir. Bununla beraber yazdığımız kodu etkin bir biçimde sanal bir şekilde test etmemizi sağladığından kullanıcıya zaman kazandırır. Bu yazı için MPLAB SIM’i kullanacağız.
Debugger menüsünden “Select Tool” seçeneğine tıklayın. MPLAM SIM’i seçtikten sonra da ekranda değişik pencereler açılacaktır. Bu değişim aşağıdaki gibi gerçekleşir:
Daha sonra, Debugger>Reset>Processor Reset seçeneğini tıklayın ve bunun sonunda bize programın başlangıcını gösteren yeşil bir okla karşılaşacaksınız. Bu şablon dosyasına ait olan kısım. Bellekteki ilk yönerge main adlı etikete atlar ki burada yazdığımız kod bulunur.
Kodu satır satır simüle etmek ve doğrulamak için debugger>Step Into seçeneğini seçin. Ok bir sonraki satıra inecek ve o satır çalıştırlacaktır.
Kodun doğru çalıştığını görmek ve PORTC’ye artan değer atamak için PORTC’ye gönderilen değerlerin incelenmesi gerekir. View>watch sekmesine tıkladığımızda karşımıza boş bir pencere gelir. Pencerenin üstünde iki açılır listeden “Add SFR (Özel fonksiyon yazmacı)” a tıklayın. Açılan listeden PORTC yazmacını (register) seçin.
Sağdaki açılır liste ise programda bulunan sembolleri gözlemlemek için kullanılır. Bastığımızda karşımıza programdaki değişkenlerin listesi gelecektir. COUNT değişkenini seçin.
Şimdi yazmaçların ve değişkenlerin adreslerini ve aldıkları değerleri buradan gözlemleyebiliriz. Şuan programı çalıştırmadığımız için aldıkları değer 0 olarak gözükecektir.
Şimdi sağ üst köşedeki ikonlardan “run” ikonuna basalım. Watch penceresine baktığımızda sabit bir değer görürüz. Bunun sebebi döngünün gözle fark edilemeyecek derecede hızlı tamamlanmasıdır. Değerlerdeki artışı teker teker görüntülemek istiyorsanız “PORTC üzerinde COUNT’u göster” açıklaması bulunan satır üzerinde çift tıklayıp bir durma noktası (breakpoint) oluşturun.
Bunu yaptıktan sonra run düğmesine her basışımızda değerlerin birer birer arttığını görürsünüz. Bu demek oluyor ki programımız amacına uygun çalışıyor!
Hatırlarsanız ilk denememizde işlem çok kısa bir sürede gerçekleştiği için bu değişimi görememiştik. Bunun ne kadar sürdüğünü merak edenleriniz olabilir. Bunu öğrenmek için ilk önce koymuş olduğumuz durma noktasını kaldırın (Debugger>Reset). Daha sonra Debugger>Stopwatch seçeneğini seçip run tuşuna basın. 4MHz lik bir kristal kullandığınız varsayılarak yapılan hesaplamada programın çalışma süresi yaklaşık 49 milisaniyedir. Daha fazla gecikme döngüsü uyguluyarak bu süreyi artırmak mümkündür.
MPLAB programını elde etmek için bu adresten yararlanabilirsiniz. Microchip'in kendi assembly derleyicsi ve yazılım geliştirme ortamı ücretsiz olarak sunulmaktadır.
Not: MPLAB C18 (PIC18 serisi için özel olarak optimize edilmiş) ve C30 (PIC24 ve dsPIC serisi için özel olarak optimize edilmiş) C dili ile yazılım geliştirenler için özel olarak hazırlanmış derleyicilerdir ve ücretlidirler. Bununla beraber student edition sürümü bazı kısıtlamalara sahip olmakla beraber ücretsizdir.
MPLAB IDE’nin Project Manager aracı bizim adım adım kodumuzu yazıp derlememizi sağlar. Bir MPLAB projesi sırayla şu adımlarla oluşturulur:
• Select Device (Cihazı seç)
MPLAB IDE’nin sunacağı imkanlar cihazdan cihaza değişir. Bir projeye başlamadan önce cihaz seçimi mutlaka yapılmalıdır.
• Create Project (Projeyi oluştur)
MPLAB proje sihirbazı bunun için kullanılır.
• Put files in Project (Projenin içine gerekli dosyaların yerleştirilmesi)
Proje için iki dosya kullanılmalıdır (template file ve linker script). Bu dosyalar MPLAB IDE klasörünün alt klasörleri için yer almaktadır. Bunları kullanmak kod yazmaya başlamamızı kolaylaştırır.
• Create Code (Kodun oluşturulması)
Şablon dosyasına (template file) bazı kodlar eklenir (I/O portuna yükselen değerler göndermek için)
• Build Project (Projeyi yapılandır, derle)
Oluşturduğumuz kodlar derlenir ve PIC mikrodenetleyicimizin anlayabileceği bir makine diline (hex dosyası) dönüştürülür.
• Test Code with Simulator (Simulatör ile test et)
Son olarak, kod simulatör yardımıyla test edilir.
1)CİHAZI SEÇMEK
MPLAB IDE ekranındaki Configure menüsünden “Select Device” sekmesine tıklayın. Karşınıza çıkan listeden projenizde kullanacağınız PIC’in model numarasını girin ve ok tuşuna basın.
Küçük baloncuklar MPLAB IDE nin bu cihaz için hangi bileşenleri desteklediğini gösterir.
• Yeşil ışık tam olarak desteklendiğini gösterir
• Sarı ışık MPLAB yazılımına yapılıcak eklentilerle gerekli desteğin sağlanılabileceğini gösterir.
• Kırmızı ışık bileşenin desteklenmediğini gösterir.
2)PROJEYİ OLUŞTURMAK
Sıradaki adım proje sihirbazını kullanarak bir proje oluşturmak. Proje derlenecek olan dosyaların organize edilmesini sağlar. Biz bu projemizde sadece bir assembly dosyası kullanacağız ve bu da bir linker script olacak. Project menüsünden Project Wizard’ı seçin.
Welcome penceresi üstünde next düğmesine basın ve geçin.
Bundan sonra karşınıza gelecek pencerede karşınıza PIC seçimi yapıyoruz. Daha önce seçmiş cihazı bize gösterecektir. Eğer göstermiyorsa kendimiz tekrar aynı cihazı seçmeliyiz.
3)DİL ARAÇLARINI PROJEYE DAHİL ETMEK
Proje sihirbazının ikinci adımında projede kullanacağımız dil araçlarını kuruyoruz. Araç listesinden “Microchip MPASM Toolsuite’i seçin”. Bunu seçtikten sonra “MPASM Assembler” ve “MPLINK Objeck Linker” görünür hale gelecektir. Bu dosyaların yerlerini görmek için teker teker üstlerine tıklayın.
4)PROJEYİ İSİMLENDİRMEK
Sonraki adımda projemizi isimlendirip, kaydetme yolunu seçiyoruz.
5)PROJEYE DOSYALARI EKLEMEK
Dördüncü adımda proje sihirbazı projemiz için dosya seçimine izin verir. Bir kaynak kodu dosyası henüz seçilmedi, o zaman biz MPLAB IDE şablon dosyasını kullanacağız. Şablon dosyaları bir projeye başlangıç oluşturması için hazırlanmış basit dosyalardır. Herhangi bir kaynak kodunun önemli kısımlarını bünyesinde barındırırlar. Bu tabii ki sizin kodları yazmanızı veya düzenlemenizi kolaylaştıracaktır. Her PIC için ayrı şablon dosyası bulunmaktadır. Örneğin siz bu listeden f452tmpo.asm dosyasını seçin.(Dosya yolu: C:\Program Files\Microchip\MPASM Suite\Template\Object\)
İlgili dosyayı add butonuna basarak ekliyoruz ve yanındaki kutucuğu işaretliyoruz. Şimdi sıra linker scripti eklemeye geldi. Linker script dosyaları için de her PIC’e göre özel script dosyaları vardır. Biz örnek olarak 18F452 kullandığımızdan 18F452.lkr dosyasını seçin.(Dosya yolu: C:\Program Files\Microchip\MPASM Suite\LKR)
Next butonuna tıkladığımızda karşımıza en son özet ekranı çıkacaktır.
6)KOD YAZMAK
Şablon dosyasını çift tıklayarak açın ya da aşağıda gösterildiği gibi üstünde sağ tuş tıklayarak edit sekmesini seçin:
Dosya’nın ilk satırında dosya hakkında bilgi veren yorumlarla karşılaşırsınız. Bu kısımları olduğu gibi bırakmak sizin zararınıza olmaz.
İlk bölümlerdeki kodlar kesme ve konfigürasyon biti ayarları gibi gelişmiş fonksiyonları içeren kısımlardır. Yazacağımız kod “main” ile ifade edilen sembolün alt kısmında yer alacaktır.
Main sembolünün altına şu örnek kodu yazın:
Main:
clrf WREG
movwf PORTC ; PORTC’yi temizle
movwf TRISC ; PORTC’yi çıkış yap
Init
clrf COUNT
IncCount
incf COUNT
movf COUNT,W
movwf PORTC ; PORTC’de COUNT’u görüntüle
call Delay
goto IncCount ; Sonsuz döngü
Delay
movlw 0x40 ; Dış gecikme döngüsü uygula
movwf DVAR2
Delay0
movlw 0xFF
movwf DVAR ; İç gecikme döngüsü uygula
Delay1
decfsz DVAR
goto Delay1
decfsz DVAR2
goto Delay0
return
(Not: Bu kodu yazarak PORTC yazmacının(register) değerini belirlenen zaman dongüsü içinde artırmayı hedefliyoruz)
Kodumuzun bu bölümünde, COUNT, DVAR ve DVAR2 olmak üzere üç değişken ismi tanımlıyoruz. Bu değişkenlerin devreye sokulmamış veri (Uninitialized data) için kullanılan UDATA bölümündeki şablon dosyası için tanımlanması gerekir. Şablon dosyasının bu bölümünde zaten üç değişken bulunmaktadır ve bizimkiler de aynı yazım şekli kullanılarak onların altına eklenebilir. Her değişken 8-bit, yani 1 byte kadar bellekte yer kaplar.
7)PROJEYİ DERLEMEK
Ana menüden Project’i seçip “Build All” seçeneğine tıklayın. Eğer kodunuzda hiç hata yoksa aşağıdaki gibi görüntülenecektir:
Eğer hata varsa outpu penceresinde bulunan hatalar görüntülenecektir. Hata durumunda output penceresinin uyarısına göre kullandığınız kaynak dosyalarına veya koddaki yazım hatalarını gözden geçirin ya da uygun derleyicinin seçilip seçilmediğini kontrol edin.
8)YAZDIĞIMIZ KODU SİMULATÖR İLE TEST ETMEK
Simulatör PIC cihazlarının komutlarını PC üzerinde sanal olarak gerçekleştiren bir yazılımdır. PC’nin hızına, kodun karmaşıklığına, işletim sistemine bağlı olarak “gerçek zamanlı” olarak çalışmayabilir. Bununla beraber yazdığımız kodu etkin bir biçimde sanal bir şekilde test etmemizi sağladığından kullanıcıya zaman kazandırır. Bu yazı için MPLAB SIM’i kullanacağız.
Debugger menüsünden “Select Tool” seçeneğine tıklayın. MPLAM SIM’i seçtikten sonra da ekranda değişik pencereler açılacaktır. Bu değişim aşağıdaki gibi gerçekleşir:
Daha sonra, Debugger>Reset>Processor Reset seçeneğini tıklayın ve bunun sonunda bize programın başlangıcını gösteren yeşil bir okla karşılaşacaksınız. Bu şablon dosyasına ait olan kısım. Bellekteki ilk yönerge main adlı etikete atlar ki burada yazdığımız kod bulunur.
Kodu satır satır simüle etmek ve doğrulamak için debugger>Step Into seçeneğini seçin. Ok bir sonraki satıra inecek ve o satır çalıştırlacaktır.
Kodun doğru çalıştığını görmek ve PORTC’ye artan değer atamak için PORTC’ye gönderilen değerlerin incelenmesi gerekir. View>watch sekmesine tıkladığımızda karşımıza boş bir pencere gelir. Pencerenin üstünde iki açılır listeden “Add SFR (Özel fonksiyon yazmacı)” a tıklayın. Açılan listeden PORTC yazmacını (register) seçin.
Sağdaki açılır liste ise programda bulunan sembolleri gözlemlemek için kullanılır. Bastığımızda karşımıza programdaki değişkenlerin listesi gelecektir. COUNT değişkenini seçin.
Şimdi yazmaçların ve değişkenlerin adreslerini ve aldıkları değerleri buradan gözlemleyebiliriz. Şuan programı çalıştırmadığımız için aldıkları değer 0 olarak gözükecektir.
Şimdi sağ üst köşedeki ikonlardan “run” ikonuna basalım. Watch penceresine baktığımızda sabit bir değer görürüz. Bunun sebebi döngünün gözle fark edilemeyecek derecede hızlı tamamlanmasıdır. Değerlerdeki artışı teker teker görüntülemek istiyorsanız “PORTC üzerinde COUNT’u göster” açıklaması bulunan satır üzerinde çift tıklayıp bir durma noktası (breakpoint) oluşturun.
Bunu yaptıktan sonra run düğmesine her basışımızda değerlerin birer birer arttığını görürsünüz. Bu demek oluyor ki programımız amacına uygun çalışıyor!
Hatırlarsanız ilk denememizde işlem çok kısa bir sürede gerçekleştiği için bu değişimi görememiştik. Bunun ne kadar sürdüğünü merak edenleriniz olabilir. Bunu öğrenmek için ilk önce koymuş olduğumuz durma noktasını kaldırın (Debugger>Reset). Daha sonra Debugger>Stopwatch seçeneğini seçip run tuşuna basın. 4MHz lik bir kristal kullandığınız varsayılarak yapılan hesaplamada programın çalışma süresi yaklaşık 49 milisaniyedir. Daha fazla gecikme döngüsü uyguluyarak bu süreyi artırmak mümkündür.