TEKNİK YAZI

Tiva C Series Launcpad ile Uygulama Geliştirme [ Playlist ]

 

Uzun süreden sonra herkese tekrardan selamlar. İşlerimizin yoğun olması sebebiyle bir süre teknikyazi.com dan uzak kaldık. Bu yazı itibari ile sizlerle Tiva C Serisi hakkında video derslerle birlikte olacağız. Tüm modülleri teker teker inceleyip kodlarını yazacağız. Ve en sonunda kendi kütüphanemizi ( .lib dosyamızı ) oluşturacağız. CCS C yi herkes bilir. İşte bizde kendimize CCS C kütüphanesi kadar kolay kullanılabilir kütüphane oluşturacağız. Gördüm ki kütüphane yazarken birçok şey daha iyi öğreniliyor. Bu süreci sizlerle beraber tekrardan göreceğim. Dersler youtube da yukarıdaki linkte playlist olarak yer alacaktır. Videolar çekildikçe eklenecektir. Görüşmek üzere, iyi seyirler, başarılı projeler…

Continue reading “Tiva C Series Launcpad ile Uygulama Geliştirme [ Playlist ]” »

Altium Designer Anlatımları – Kütüphane Yönetimi/Oluşturma

Ülkemizde Altium gibi programları üretmemizi geçtim, bu tarz programları kullanabilmeyi öğrenmek isteyen kişiler için Türkçe kaynak yok denecek kadar az. Yabancı diliniz iyi olsa bile yapmak istediğinizi yapabilmek, tıkandığınız noktalarda çözüme gitmek için daha çok kaynağa, özellikle de kendi dilinizde anlatımlara ihtiyacınız oluyor.

Uzun süredir yazı yayınlayamıyorduk. Yazmak zor, gerçekten emek, birikim, tecrübe istiyor. Bir de video çekelim dedik. Yakında Tiva üzerine de farklı tarzda, çok güzel videolar yayınlayacağız inşaallah.

Bu videomuzda Altium için kütüphane kullanımını basitçe anlattım. Kendi elemanınızı oluşturmak, hazır elemanları kullanmak, hazır elemanları kendi kütüphanenize atmak, onlar üzerinde değişiklik yapmak gibi kütüphane yönetiminde temel olarak neye ihtiyacınız olabilecek herşeyi burada bulabilirsiniz.

İlk videom, biraz acemice olabilir, oldukça doğal birazda sohbet havasında anlatmaya çalıştım

 

Tiva Not-7 : EEPROM (e2prom) Yapısı , Okuma ve Yazma İşlemi

Tivaware EEPROM Api’si mikrodenetleyici üzerinde bulunan EEPROM ile basitçe etkileşim sağlayan bir yapıya sahiptir. Bu Api 3 işlevi sağlamaktadır.

  1. Okuma ve Yazma İşlemi
  2. Koruma
  3. Kesme Kontrolü

Tiva EEPROM Modülü word-by-word ( Tek yazmada 32 bit ) olarak programlanabiliyor. En güzel yanı da flash yapısından farklı olarak yazmadan önce silme gerektirmiyor.

Tiva EEPROM denetleyicisi mesela korumalı bölgelere erişim sağlamak istendiğinde kesme üreterek sizi uyarabiliyor. Bu bahsettiğim koruma hakkında daha sonradan bir yazı yazacağım. Yukarıda bahsettiğimiz gibi okuma,yazma gibi işlemlerin sonucu olarak ta kesme üretilebiliyor. Bu kesmeler sayesinde komutun başarılı olarak çalışıp çalışmadığından emin olabiliyoruz.

Tiva mikrodenetleyicilerinde EEPROM modülünün büyüklüğü mikrodenetleyici modelleri arasında farklılık gösterebilir. Bunun için Tivaware Api’sinde  EEPROMSizeGet() ve EEPROMBlockCountGet()  adında fonksiyonlar bulunmaktadır. Şimdi örneğimize geçelim.

  1. #include <stdint.h>
  2. #include <stdbool.h>
  3. #include "inc/hw_memmap.h"
  4. #include "inc/hw_types.h"
  5. #include "inc/hw_gpio.h"
  6. #include "inc/hw_ints.h"
  7. #include "driverlib/gpio.h"
  8. #include "driverlib/pin_map.h"
  9. #include "driverlib/sysctl.h"
  10. #include "driverlib/interrupt.h"
  11. #include "driverlib/eeprom.h"
  12. #include "utils/uartstdio.h"
  13.  
  14.  
  15. #define E2PROM_TEST_ADRES 0x0000 // EEPROM'un hangi adresinden itibaren işlem yapacağımızı belirttiğimiz direktif
  16.  
  17. /* Kendi oluşturduğumuz bir yapıyı direkt olarak EEPROM bölgesine yazabilir ve
  18. oradan direkt olarak aynı yapı içerisine okuyabiliriz.
  19. Sizde kendinize özgü bir yapı kurabilirsiniz. */
  20.  
  21. struct E2PROM
  22. {
  23. uint8_t degisken1;
  24. uint8_t degisken2;
  25. uint16_t degisken3;
  26. uint8_t degisken4[12];
  27. };
  28.  
  29.  
  30.  
  31. struct E2PROM e2prom_dolu_yapi = {5,7,9826, "MerhabaDunya"}; /* Yazacağımız yapi */
  32. struct E2PROM e2prom_bos_yapi = {0,0,0,""}; /* İçini dolduracağımız boş yapı */
  33.  
  34.  
  35. int main(void)
  36. {
  37. uint32_t e2size,e2block;
  38.  
  39. SysCtlClockSet(SYSCTL_SYSDIV_2_5|SYSCTL_USE_PLL|SYSCTL_OSC_MAIN|SYSCTL_XTAL_16MHZ); // islemcimizi 80 Mhz'e ayarlıyoruz.
  40.  
  41. /* UART AYARLARINI YAPIYORUZ */
  42. SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);
  43. GPIOPinConfigure(GPIO_PA0_U0RX);
  44. GPIOPinConfigure(GPIO_PA1_U0TX);
  45. GPIOPinTypeUART(GPIO_PORTA_BASE, GPIO_PIN_0 | GPIO_PIN_1);
  46. UARTStdioConfig(GPIO_PORTA_BASE,115200,SysCtlClockGet());
  47. /*******************************/
  48.  
  49. /* EEPROM AYARLARINI YAPIYORUZ */
  50. SysCtlPeripheralEnable(SYSCTL_PERIPH_EEPROM0); // EEPROM modülü aktifleştiriyoruz.
  51. EEPROMInit(); // EEPROM Modülünü çalışır hale getiriyoruz.
  52. /*******************************/
  53.  
  54. UARTprintf("EEPROM Test Programı ,, Teknikyazi.com\r\n");
  55.  
  56.  
  57. e2size = EEPROMSizeGet(); // EEPROM Modülünün büyüklüğünü alıyoruz. EEPROMSizeGet fonksiyonu uint32_t değer dönmektedir.
  58. UARTprintf("EEPROM buyuklugu %d bytes\n", e2size);
  59.  
  60. e2block = EEPROMBlockCountGet(); // EEPROM Modülünde bulunan blok sayısını alıyoruz. EEPROMBlockCountGet fonksiyonu uint32_t değer dönmektedir.
  61. UARTprintf("EEPROM Blok sayisi: %d\n", e2block);
  62.  
  63. UARTprintf("Yazma Denemesi > Adres %u: Yapi : {%u,%u,%u,%s}\n", E2PROM_TEST_ADRES, e2prom_dolu_yapi.degisken1, e2prom_dolu_yapi.degisken2, e2prom_dolu_yapi.degisken3, e2prom_dolu_yapi.degisken4);
  64. EEPROMProgram((uint32_t *)&e2prom_dolu_yapi, E2PROM_TEST_ADRES, sizeof(e2prom_dolu_yapi)); //e2prom_dolu_yapi yapısı içerisindeki dataları EEPROM'un 0x0000 adresinden itibaren yazıyoruz.
  65.  
  66. EEPROMRead((uint32_t *)&e2prom_bos_yapi, E2PROM_TEST_ADRES, sizeof(e2prom_bos_yapi)); //EEPROM'un 0x0000 adresinden itibaren bulunan dataları e2prom_bos_yapi yapısına okuyoruz.
  67. UARTprintf("Okuma Denemesi > Adres %u: Yapi : {%u,%u,%u,%s}\n", E2PROM_TEST_ADRES, e2prom_bos_yapi.degisken1, e2prom_bos_yapi.degisken2, e2prom_bos_yapi.degisken3, e2prom_bos_yapi.degisken4);
  68.  
  69. while(1)
  70. {
  71. }
  72.  
  73. }

 

Microchip Pic mikrodenetleyicileri için Seri Bootloader ( PIC 16F87X, PIC 16F88 veya PIC18F )

Herkese selamlar;

Sitemizi yeni kurduğumuzdan dolayı yazı sayımız fazla değil ve iş haricindeki vakitlerimizde genelde sıkıntı çekilen önemli konular üzerine yazılarımızı yazmaya devam edeceğiz. Bugünkü yazımızda ise genelde çok detaylı anlatılmamış olan Bootloader yazılımından bahsedeceğim.

Bootloader yazılımı mikrodenetleyicilere bir defaya mahsus yüklenen özel bir programdır.  Pickit serisi, MPLab ICD serisi veya piyasada bulunan anonim pic programlayıcılar ile her defasında elektronik kartımıza program atmak zorunda kalırız. Bootloader yazılımı sayesinde bu zahmetten birazcıkta olsa kurtuluyoruz.

Tabi bootlader kullanımı tüm Pic ailesi için kullanılan bir seçenek değildir.  Sadece bootstrap loader veya bootstrapping adı verilen özelliğe sahip olan 16F87X, 16F88 veya 18 serisi işlemciler üzerinde bootloader yazılımı kullanılabilir.

Şimdi teori kısmına fazla inmeden uygulama yazılımımızı anlatalım. Kullanacağımız bootloader yazılımının ismi PicPgm Bootloader.   Öncelikle Bootloader yazılımının mikrodenetleyici hafızasında nasıl yer aldığını görelim.

Bootloader memory mapping pic 18f

Bootloader memory mapping pic 18f

 

BOOTLOADER YAZILIMININ KENDİ MİKRODENETLEYİCİMİZE UYARLANMASI

PicPgm bootloader yazılımının source kodlarını bu linkten indirebilirsiniz.  Default olarak PIC 18F458 için yazılmış olan kodu 18F2585 için revize edeceğiz.

1.  bootloader.h dosyasının içeriğinin değiştirilmesi

#define BOOTLOADER_PIC18F2585
 
#ifdef BOOTLOADER_PIC18F2585
 
#include <18F2585.h>
#device adc=8
 
#FUSES HS
#FUSES NOPROTECT                       
#FUSES NOLVP                 
#FUSES NOWDT                    
 
#use delay(clock=10000000)
 
#endif

bootloader.h dosyasımızın içeriğini bu şekilde değiştiriyoruz. Tabi kendi projenizde kullandığınız #FUSES’ları örneğimizinkinden farklı olabilir, ekleyip veya çıkarabilirsiniz.

2. bootloader.c dosyasının içeriğinin değiştirilmesi

//.....
#use rs232(baud=115200,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8,ERRORS)
//.....

Buradaki satırdan kullanmak istediğiniz baudrate hızını ve kullancağınız PIN’leri ayarlayabilirsiniz.

//.....
#ORG BOOTLOADER_START
void main()
{
    setup_adc(ADC_OFF);
 
    if (input(BOOTLOADER_PIN)) // BOOTLOADER_PIN > PIN_A5
    {
        printf("BOOTLOADER başladı\r\n"); //Bootloader açılırsa size bu yazıyı Rs232 üzerinden gönderebilir.
        bootloader();
    }
 
    #asm
    goto RESET_VECTOR
    #endasm
} 
 
//....

Burada gördüğünüz gibi örnek olarak PIN_A5’e bir buton bağlayacağız. Daha sonrasında sisteme elektrik verildiğinde ilk olarak bootloader yazılımımızın main fonksiyonu çalışacağı için buton basılıysa eğer hemen bootloader programımız aktif hale gelecektir ve size “BOOTLOADER başladı” yazısını göndererek göndereceğimiz hex dosyasını beklemeye başlayacaktır.

3. Kendi yazılımımıza eklenmesi gereken yeni hafıza adreslerinin girilmesi

Yukarıda hafıza adreslerinin yeniden belirlenmesi şeklinde bir şekil eklemiştik. İşte kendi kodumuzun bootloader kodunun altına yerleşmesi için aşağıdaki şekilde bir kod parçası eklememiz gerekiyor.

#include <18F2585.h>
 
#fuses HS,NOPROTECT,NOLVP,NOWDT
#use delay(clock=10000000)
#use rs232(baud=115200,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)
 
//Bu alttaki iki satırı ekliyoruz.
#build (reset=0x400, interrupt=0x408)
#org 0, 0x3FF {}

 PICPgm BOOTLOADER YAZILIMI İLE HEX DOSYASININ YÜKLENMESİ

picpgm-bootloader_yazilimi

PICPgm Bootloader yazılımı arayüzü

 

 

 

 

 

 

 

Görmüş olduğunuz minik yazılımı ise bu linkten indirebilirsiniz. Programı ilk çalıştırdığınızda sistemde birkaç .dll dosyasını bulamayabilir. Bu durumda sisteminize .dll dosyalarını internetten indirip yüklerseniz program çalışacaktır. Problem yaşarsanız istediğiniz taktirde dll dosyalarını buraya yükleyebilirim. Programı çalıştırdığınızda elektronik kartınızı bağlayıp yukarıda belirtmiş olduğumuz butona basarak başlattığınızda .hex dosyasını beklemeye başlayacaktır. Browse Hex butonuna basarak yüklemek istediğiniz kendi yazılımınızı yükleyeceksiniz ve Download Hex butonuna bastığınızda kısa bir işlem sonrasında artır programınız kart üzerinde çalışıyor olacaktır. Bir sonraki farklı program yükleme isteklerinizde ise yine butona basarak sistemi açtıktan sonra PICPgm programı ile kart üzerine yeni yazılımınızı yükleyebilirsiniz.

Umarım faydalı bir yazı olmuştur. Yaşadığınız sorunları yorumlara yazarsanız yardımcı olmaya çalışırım. Selametle.

Tiva Not-2: Keil de Sıfırdan Tiva Projesi Oluşturmak

Girişini yaptığımız bir önceki yazının devamında tam bir başbelası olan KEIL de sıfırdan proje oluşturma kısmını ele alıyoruz. Öyle ki ti dan bu konuda destek aldığımda sıfırdan proje oluşturmaya çalışmayıp örnek projeler üzerindeki kodları değiştirerek  önceden yapılı ayarları kullanarak projelerimi yapmam söylendi. Çok zor bir ayar yok, en azından şimdilik öyle gördüm, işin zorluğu çok garip hatalar alıyorsunuz ve çözümü de yine ayarlardaki ufak bir noktadan. Ben şimdiye kadar karşılaştığım durumları ve yapılması gereken ayarları, bu ayarların neden yapılması gerektiğini yazmaya çalışacağım. Daha sonra yeni bilgiler edinirsem eklerim.

Öncelikle yeni çalışmaya başladıysanız tiva ile ilk olarak önceki yazımızdaki adımları tam olarak uygulayın ve her şeyin tastamam çalıştığından emin olun.

KEIL programı çok kapsamlı programdır ve bir çok hatta neredeyse piyasadaki tüm işlemcileri programlayabilecek bir derleyicidir. Bu yüzden hangi işlemciyi kullanacağımızı hangi api yi kullanacağımızı vb tüm tanımlamaları doğru şekilde yapmazsak kodlarımız derlenmez, anlam veremediğimiz hata oluşur, her şey yolunda görünse bile yüklediğimiz kod çalışmayabilir.

Programlama konusunda mutlaka yapmanızı tavsiye edeceğim bir tavsiye de kodlarınıza kodların nerelerde takıldığını görebileceğiniz bir nevi devreniz çalışırken canlı debug yapabileceğiniz noktalar koymaktır. Bu bir led sinyali olabileceği gibi seri porttan adım adım işlemlerin ilerlediğinin yazımı da olabilir. Launchpad direk olarak bilgisayara seri porttan da bağlandığı için bunu kolaylıkla yapabilirsiniz. Bu tarz yeni platformlarda çalışırken bu çok faydalı olacaktır, yazdığınız bir satırda veya bu durum karşımıza daha önce de çıktı yazılan API de hatalar olabilir.

Karşılaşılan durumlar ve tecrübeler üzerine konuşulabilecek şey çok. Bunları belki daha sonra tek bir yazı üzerinde ele alabiliriz.

KEIL de tiva mikroişlemcilerle proje oluşturmaya başlamak için ihtiyacımız olan program ve yazılımların neler olduğu ve nasıl kurulması gerektiği hakkında bilgi için önceki yazılarımızı kontrol ediniz.

Adım adım gitsek daha güzel olacak gibi duruyor:

– Keil programını çalıştırıyoruz ve açık olan tüm projeleri kapatıyoruz. Tertemiz bir keil arayüzümüzün bize bakıyor olması lazım. Her zaman keil programının en son sürümünü kullanmaya gayret etmenizi tavsiye ediyorum.

2013-11-04 16_18_49-2-Sıfırdan Proje oluşturma ve Kart TAsarım - Microsoft Word

 

 

Project> New uVisison Project kısmından yeni bir proje oluşturuyoruz.

2013-11-04 16_18_58-2-Sıfırdan Proje oluşturma ve Kart TAsarım - Microsoft Word

 

Projemiz için yeni bir klasör oluşturup projemizi ismi ile birlikte buraya kaydediyoruz.

2013-11-04 16_19_05-2-Sıfırdan Proje oluşturma ve Kart TAsarım - Microsoft Word

 

Açılan pencereden kullanacağımız işlemciyi seçiyoruz.

2013-11-04 16_19_13-2-Sıfırdan Proje oluşturma ve Kart TAsarım - Microsoft Word

 

Açılan pencerede bize startup dosyasını eklemek istiyor musunuz diye soruyor. Biz hayır diyoruz.Neden?

2013-11-04 16_19_23-2-Sıfırdan Proje oluşturma ve Kart TAsarım - Microsoft Word

 

Hem ti ın notlarında hemde bir çok workshop videolarında bu dosyayı eklememiz gerektiğinden bahseder. Bu dosyayı eklediğimizde direk olarak işlemcimizi register bazında programlamak istediğimizi belirtmiş oluruz bir anlamda. Ancak biz TivaWare API si ile programlayacağımız için bu dosyayı eklemeden devam ediyoruz.

İşlemcinin keil tarafından otomatik olarak eklediği bu başlangıç dosyası ile derleme yapmaya çalıştığımızda aşağıdaki gibi bir hata alabiliriz:

.\proje1.axf: Error: L6218E: Undefined symbol SystemInit (referred from startup_tm4c123.o).

Bu hatayı alıyorsak başlangıç dosyamız, yani vektör dosyamız hatalıdır demektir. Bu sorun ile karşılaşanlar için yardımcı olması açısından buraya not düşmek istedim.

Adımlarımıza devam edecek olursak, kullanacağımız library dosyalarını ekleyelim ilk önce,

2013-11-04 16_19_31-2-Sıfırdan Proje oluşturma ve Kart TAsarım - Microsoft Word

 

Sol taraftaki project kısmında projemizin source dosyalarına library dosyalarımızı eklemek için yukardaki resimde görüldüğü gibi dosya ekleyeceğimizi belirtiyoruz ve açılan penceren ilk olarak KEIL de Tiva programlama için tüm fonksiyonlarımızı barındıran library.lib dosyasını ekliyoruz. Dosyanın dizini:

C:\ti\TivaWare_C_Series-1.0\driverlib\rvmdk

Ve asıl kullanacağımızdan bahsettiğimiz vektör dosyamızı ekliyoruz.”startup_rvmdk.s” vektör dosyasını örnek bir projenin içerisinden çekebiliriz.

_dosya dizini:

C:\ti\TivaWare_C_Series-1.0\examples\boards\ek-tm4c123gxl\projectO

Bu iki dosyayı eklediğimize aşağıdaki gibi source group da görünmesi gerekli:

2013-11-04 16_19_38-2-Sıfırdan Proje oluşturma ve Kart TAsarım - Microsoft Word

 

Sonra, file>new yapıp yeni bir dosya açıyoruz. Bu dosya text dosyası olarak açılıyor, bu dosyayı proje klasörümüze “c” uzantılı olarak kaydediyoruz. ben main.c olarak kaydettim. Kaydettiğimiz dosyayı ise önceki adımda library leri eklediğimiz gibi source group a kaydediyoruz.

2013-11-04 16_19_44-2-Sıfırdan Proje oluşturma ve Kart TAsarım - Microsoft Word

 

2013-11-04 16_19_51-2-Sıfırdan Proje oluşturma ve Kart TAsarım - Microsoft Word

 

 

Gelelim projemizin ayarları kısmına. Buradaki ayarları da tam olarak gösterdiğimiz şekilde yapmamız gerekiyor. Problem yaşadığınız noktalar olursa problemi çözmeden diğer adımlara geçmeyiniz.

Projemizin ayarları için aşağıdaki gibi proje ayarları kısmına giriş yapıyoruz;

 

2013-11-04 16_19_57-2-Sıfırdan Proje oluşturma ve Kart TAsarım - Microsoft Word

 

İlk olarak birinci sekmede projeye başlarken de seçmiş olduğumuz işlemci adının doğru olarak seçildiğini kontrol ediyoruz.

2013-11-04 16_20_08-2-Sıfırdan Proje oluşturma ve Kart TAsarım - Microsoft Word

 

 

 

Target sekmesine geçip Kristal ayarını 16 Mhz e ayarlıyoruz. Başka bir değişiklik yapmamıza şu aşamada gerek yok.

2013-11-04 16_20_13-2-Sıfırdan Proje oluşturma ve Kart TAsarım - Microsoft Word

 

C/C++ sekmesine geçiyoruz “include paths” kısmına TivaWare dosyasının olduğu konumu bildiriyoruz. Bu şekilde kullanacak olduğumuz API için gerekli kütüphaneyi derleyiciye tanıtıyoruz.

2013-11-04 16_20_20-2-Sıfırdan Proje oluşturma ve Kart TAsarım - Microsoft Word

 

C/C++ sekmesinde yapacağımız diğer ayar ise Preprocessor Symbols kısmına resimde de görüleceği üzere “PART_TM4C123GH6PM ” yazmak. İlk derleyeceğimiz led yak söndür kodlarında bunu yazmadığımızda bir sorun yaşamıyoruz ancak ileriki uygulamalarda örneğin bir seri port uygulamasında UART0 haricinde diğer 7 uart dan birini kullanmaya çalıştığımızda pin tanımlamalarında hata alabiliyoruz.

 

2013-11-04 16_42_06-Tiva yeni proje oluşturma KEIL ayarlar ve ilk blinky (1) - Microsoft Word

Bu tanımlama tivaware apisinin pin tanımlamalarını keil e tanıtmış oluyor. Şu şekilde pinlerin tanımlı olmadığı şeklinde bir hata alıyorsunuz halbuki kod üzerinde herşey tanımlı.

2013-11-04 16_20_28-2-Sıfırdan Proje oluşturma ve Kart TAsarım - Microsoft Word

Aynı şekilde Asm sekmesinde de TivaWare dizinini include paths bölümünde gösteriyoruz. Ayrıca burada thumb mode u seçili hale getiriyoruz. Bunu işaretlemek zorunda değiliz. İşaretlemenin avantajı ARM mimarisinin sahip olduğu thumb mode da kodlarımızı derlemesi ve kod optimizasyonu açısından daha performanslı şekilde kodları derlemesi. Dediğim gibi seçmesenizde başlangıç aşamasında bişey farketmeyecektir.

 

2013-11-04 16_20_34-2-Sıfırdan Proje oluşturma ve Kart TAsarım - Microsoft Word

Debug ve Utilities sekmelerinde ise kullanacağımız Stellaris ICDI ı seçiyoruz.

2013-11-04 16_20_42-2-Sıfırdan Proje oluşturma ve Kart TAsarım - Microsoft Word

2013-11-04 16_21_02-2-Sıfırdan Proje oluşturma ve Kart TAsarım - Microsoft Word

 

 

 

Ayarlarımızı bu şekilde kaydettikten sonra sıra geldi ilk projemizi derlemeye. Örnek kod olarak direk örnekler içerisinde bulunan project0 içerisindeki kodları kopyala yapıştır yapıp derleyip deniyoruz.

Tüm ayarlarımız doğru şekilde yapılmış ise sorunsuz şekilde kodun derlendiğini görebiliriz ve direk launchpadimize yükleyebiliriz. Her hangi bir problem ile karşılaşırsanız yukarıdan adımları tekrar kontrol ederek geliniz. Kodumuzu derleyip LP ye yükledikten sonra Launchpad üzerindeki reset butonuna bastığımızda kodumuz çalışmaya başlar. Sırayla bir polis ışığı edasıyla kırmızı ve mavi ledler sıra ile yanarlar.

Bir nevi ilk yazımızın da sağlaması şeklinde olan bu yazımızın da sonuna geldik. Dokuman hazırlamak zormuş onu öğrendik en çok.

Bir sonraki yazımızda bilgisayardan kopup işin donanım kısmına geçeceğiz ve tiva işlemciler ile pcb tasarımı yaparken nelere dikkat etmeliyiz neden dikkat etmeliyiz gibi önemi çoğu kişi tarafından ciddiye alınmayan ama sonra “herşey tamam niye çalışmıyo bu??!!!…” şeklinde tepkiler verdirten konuyu ele alacağız inşaallah.

 

Tiva Not-1:Tiva Nedir? Nasıl Başlangıç Yapılır?

Texas Inst. Tiva CM4 Serisi tabanlı proje geliştirme maceralarımızı buraya not almayı düşündük. Bu sayede hem yazdıklarımız kalıcı olacak, hem de başka ihtiyacı olanlarda faydalanabilecek.

Sizinde bu işlemcilerde gördüğünüz kritik noktalar olursa bizimle paylaşırsanız seviniriz.

Not: Buraya yazacaklarımız bahsettiğimiz gibi tamamen not alma şeklinde olacağı için bizden profesyonel yazılar, ayrıntılı anlatımlar, düzgün türkçeler vb. beklemeyin. Zira ikimizde ciddi şekilde yoğun çalışan mühendisleriz.

Not2: Bu döküman Texas Instruments firmasının ARM Cortex M4 tabanlı mikroişlemci ailesi olan Tiva Serisi Mikroişlemciler ile  hızlıca programlamaya başlanması için gerekli yazılımlar, Tiva LaunchPad, ve sıfırdan yeni proje oluşturmada kullanılan Keil programının ayarlarının nasıl yapılacağı konularına yardımcı olması için hazırlanmıştır. Tiva Serisi işlemciler, TivaWare kütüphanesi, Keil programının sağladıkları, uygulama kodlarının açıklanması gibi konular ayrı birer dökümanda ele alınması gereken konulardır. Hepsini burada ele alacağız ancak acelesi olanlar bu bilgilere www.ti.com sitesinden kolayca ulaşılabilir.

hadi başlayalım…

Tiva Serisi Mikroişlemci ailesi ti ın Luminary Micro firmasını satın aldıktan sonra çıkarttığı Stellaris Serisi ARM tabanlı mikroişlemci serisi yerine Stellaris serisini revize ederek piyasaya sunduğu ARM tabanlı işlemci serisidir. Stellaris serisinde biraz ağzı yanan ti olaya hızlıca müdahale ettiğinden dolayı  Tiva serisine çok hızlı bir geçiş olmuştur ancak bir çok kod kütüphanesi, sürücüler, uygulama notları aynı şekilde tiva serisi işlemciler içinde uyumludur ve kullanılabilir. Tiva ailesi ve ek bilgiler ti ın sitesinden elde edilebilir.

Tiva  Launchpad ise Tiva serisi işlemcilerle hızlıca çalışmaya başlamak için ti ın tüm işlemci serilerinde çıkarttığı çok düşük maliyetli bir kittir. Bu kit direk olarak ti ın sitesinden 12.99$ gibi bir fiyata ücretsiz kargo ile temin edilebilir. Kitin çok uygun fiyata sahip olmasının yanı sıra üzerinde bulunan pinler vasıtasıyla kendi projelerimiz için geliştirmiş olduğumuz kartlara kod yükleyebilir ve debug yapabiliriz. Yani ek olarak işlemciyi programlamak için bir donanıma ihtiyacımız yoktur.

LP elinize ulaştığında içerisinden bir adet launchpad, bir adet usb kablo, bir adette hızlı başlangıç kılavuzu çıkmaktadır. Hızlı başlangıç kılavuzuna LP in ürün sayfasından da ulaşabilirsinir.

http://www.ti.com/general/docs/lit/getliterature.tsp?literatureNumber=spmu286a&fileType=pdf

Bu kılavuzda da bahsetmiş olduğumuz ürün sayfasına ve işlemcinin ti ın oluşturduğu ti wiki sayfasına yönlendirir.

Tiva Launchpad in özellikleri ve üzerindeki donanımlara kısaca bakacak olursak:

 

Özellikleri:

1-Üzerinde Tiva TM4C123GH6PMI ARM CORTEX M4 tabanlı mikroişlemci

2-USB uygulamaları ve bilgisayar ile bağlantı/DEBUG için USB Micro-A micro-B konnektör

3- RGB Led

4- İki adet kullanıcı butonu

5-İşlemcinin pinlerinin kullanılabileceği 2 adet header pin

6-On-Board ICDI

7-Güç Girişinin seçimi için anahtar

8-Reset Butonu

 

2013-11-01 14_16_00-Tiva işlemci programlamaya başlama - Microsoft Word

 

 

LaunchPad üzerinde hazır olarak yüklü bir program ile gelmektedir. Bu programı kiti bilgisayarımıza bağlayarak çalıştırabiliriz. Üzerinde bulunan UART entegresi ( FTDI gibi ) ile direk olarak seri port bağlantısı da yapılmaktadır ve bir seri port programı ile (Ör: Putty) işlemciye komut gönderip alabilir led parlaklık ayarı, uyku moduna geçme gibi uygulamaları yapabiliriz.

2013-11-01 14_18_05-Tiva işlemci programlamaya başlama - Microsoft Word

 

Launchpad Kit, CORTEX M4 tabanlı, sıradan işlemcilere göre üzerinde donanımsal olarak bir çok modülü fazlaca bulunduran bir işlemciye sahiptir. Bu işlemci ile  kendi projelerimizin prototip uygulamalarını geliştirmek için direk bireysel olarak ti ın kendi sitesinden 2-3 adet numune talep edebiliriz ve hiçbir ücret ödemeden bir hafta gibi bir sürede elimize numuneler ulaşmaktadır. Daha fazla numune ve adetli alımlar için distribütörler ile irtibata geçilebilir.

CORTEX M4 tabanlı olması tüm bu özellikleri sağlamasına rağmen 1000 adetlik alımda işlemcinin fiyatının 6.1 $ olması bu işlemciye geçişi daha da cazip hale getirmektedir. Bununla birlikte ti ın ARM tabanlı işlemciler için sağlamış olduğu API 32 bitlik bu işlemcilerde programlamayı çok daha hızlı şekilde yapmayı sağlamaktadır. Tüm donanım birimleri için driver library hazırlanmış ve hepsinin kullanımı için bir kullanıcı dökümanı oluşturulmuştur.

 

Tiva Serisi ile Programlama

Bu dökümanda bizim kullanmakta olduğumuz Keil uVision programı ile işlemcinin programlanması ve ayarları anlatılmıştır. Tiva Serisi CCS, IAR ve CodeBench ile de programlanabilir. Bu derleyiciler ile çalışmak isteyenler ti ın sitesinden gerekli bilgileri edinebilirler. Ayrıca kodlarda hiçbir değişiklik olmadan diğer derleyicilerde de kodlarınızı derleyebilirsiniz. Ancak derleyici ayarlarını iyi şekilde yapmak gereklidir.

 

Keil programının indirilmesi:

Normalde ücretli olan bu program deneme versiyonunda 32 kb kod sınırlaması ile tüm özelliklerini kullanıma sunmaktadır. Keil programının bu ücretsiz versiyonunu ti ın sitesinden indirilebileceği gibi Keil in sitesinden de bir form doldurarak indirilebilir.

Bu link üzerinden MDK-ARM programı indirilecektir. Yaklaşık olarak 550 Mb dır.

https://www.keil.com/download/product/

Keil programı indirildikten sonra direk olarak programı kurabiliriz.

 

Lanchpad Sürücülerinin Yüklenmesi:

http://www.ti.com/tool/stellaris_icdi_drivers

Buradaki linkten Tiva kartımızın debug ve programlama için sürücülerini indiriyoruz.  Kiti bilgisayarımıza bağladığımızda W7 de direk olarak sürücüleri bulabiliyor. Bazı durumlarda da sürücülerde problem çıkabilir. Bu yüzden sıkıntı yaşamamamız için buradaki sürücüleri indirip aygıt yöneticisinden bu sürücüleri donanımların güncel sürücüleri olarak tanıtabiliriz.

Yükleme sonrasında 2 adet yeni donanım ve bir adette seri port olarak aygıt yöneticisinde kitimizi görebiliriz.

2013-11-01 14_19_16-Tiva işlemci programlamaya başlama - Microsoft Word

 

Kitimizi bağladığımızda tüm işlemleri gerçekleştirebilmek için sürücülerimizin bu şekilde tanımlı olması gerekli. Bir hata yada uyarı var ise bunu düzeltmek için sürücüleri tekrar yükleyebilir veya ti ın sitesinden yardım alabiliriz.

 

TivaWare Kütüphanesinin Yüklenmesi:

TivaWare kütüphanesi daha öncede bahsetmiş olduğumuz Tiva serisi işlemcileri programlama için kütüphane dosyalarını ve örnek uygulamaları içermektedir. Aşağıdaki linkten TivaWare in tamamı veya sadece grafik, USB gibi kütüphane dosyaları indirilebilir:

http://software-dl.ti.com/tiva-c/SW-TM4C/latest/index_FDS.html

Bu programı kurduğumuzda, kurmuş olduğumuz dizine “ti” adında bir klasör oluşturulur ve tüm dosyaları burada bulabiliriz. Kullanmakta olduğumuz Launchpad için örnek dosyalar:

C:\ti\TivaWare_C_Series-1.0\examples\boards\ek-tm4c123gxl

2013-11-01 14_20_00-Tiva işlemci programlamaya başlama - Microsoft Word

 

Özet olarak programlamaya başlamadan önce kurmamız gereken programlar:

1- Keil MDK-ARM

2- Stellaris ICDI Drivers

3- TivaWare Library

 

Örnek Programın Derlenmesi ve İşlemciye Yüklenmesi:

Yazılımların kurulumlarını tamamladıktan sonra ilk olarak örnek projeler içinde bulunan “blinky” projesini adım adım kartımıza yükleyelim.

Bu program yüklenip çalıştığında LP driverlarının ve bağlantılarının LP nin vb tüm herşeyin sağlıklı şekilde çalıştığını bir nevi sağlama yapmış oluyoruz.

1- İlk olarak Keil programını çalıştırıyoruz ve eğer açık bir proje varsa Project > Close Project i tıklayarak açık olan projeyi kapatıyoruz.

2- Project > Open Project e tıklayıp aşağıdaki dosya dizinine ulaşıyoruz ve buradan proje dosyasını seçip açıyoruz.

C:\ti\TivaWare_C_Series-1.0\examples\boards\ek-tm4c123gxl\blinky

Projeyi açtığımızda karşımıza aşağıdaki gibi bir pencere açılıyor;

2013-11-01 14_20_55-Tiva işlemci programlamaya başlama - Microsoft Word

2013-11-01 14_32_20-Tiva işlemci programlamaya başlama - Microsoft Word

2013-11-01 14_32_57-Tiva işlemci programlamaya başlama - Microsoft Word

2013-11-01 14_33_59-Tiva işlemci programlamaya başlama - Microsoft Word

2013-11-01 14_34_39-Tiva işlemci programlamaya başlama - Microsoft Word

Tüm ayarlarımıza şekilde gösterilenler ile aynı şekilde ayarladıktan sonra OK e tıklayıp ayarlarımızı kaydediyoruz ve kodumuzu “Project>Build Target” a tıklayarak veya toolbardaki ikona tıklayarak derliyoruz. Derleme bilgilerini aşağıdaki Build Output penceresinden görebiliriz. Kodumuzda herhangi bir hata yok ise aşağıdaki gibi sorunsuz derlendiğini gösteren bildirim yer alacaktır:

2013-11-01 14_35_19-Tiva işlemci programlamaya başlama - Microsoft Word

 

 

Programımız sorunsuz derlendi ise kodumuzu işlemciye yüklemek için  Flash > Download a tıklayarak kodumuzun yükleme işlemini gerçekleştiriyoruz. Yükleme sorunsuz şekilde gerçekleştiğini output penceresinden görebiliriz:

2013-11-01 14_35_48-Tiva işlemci programlamaya başlama - Microsoft Word

 

“Flash” sekmesinin yanında bulunan Debug menüsü ile de yazmış olduğumuz kodlarda ek bir donanıma ihtiyaç kalmadan devre üzerinde Debug yapabiliriz.

ve TI ARM  CORTEX M4  dünyasına hoşgeldiniz, şimdi sıfırdan yeni proje oluşturma ve kendi kartımızı tasarlama ile yavaş yavaş devam edelim.