220 likes | 466 Views
ARM Tabanlı Mikrodenetleyici Temelleri ve Programlama. TUNA AYAN www.tuna-ayan.com tunayan@gmail.com. BAŞLAMADAN ÖNCE. GPIO(Çevresel Aygıtlar) StellarisWare İle Programlama Interrupt OLED Ekran Debug İşlemi. GPIO (Çevresel Aygıtlar). GPIO Nedir?
E N D
ARM Tabanlı Mikrodenetleyici Temelleri ve Programlama TUNA AYAN www.tuna-ayan.com tunayan@gmail.com
BAŞLAMADAN ÖNCE GPIO(Çevresel Aygıtlar) StellarisWare İle Programlama Interrupt OLED Ekran Debugİşlemi
GPIO (Çevresel Aygıtlar) GPIO Nedir? Genel amaçlı giriş ve çıkış pinlerine GPIO denir. Bu pinler programcı tarafından kontrol edilebilir, programlanabilir ve yönlendirilebilir. LM3S811 üzerinde GPIO pinleri 5 adet port altında toplanmıştır.
GPIO (ÇEVRESEL AYGITLAR) Özellikleri: GPIO Modülü, her portta 8 adet pin kullanımına olanak sağlar. Bu pinlerin genel özellikleri; Giriş yada çıkış olarak tanımlanabilirler. Opsiyonelolarak pull-up, pull-down seçenekleri ile kullanılabilirler. Çevresel aygıt pini olarak kullanılabilirler. Her pinin birden fazla görevi vardır. Bu görevler arasında seçim yapılmasına olanak sağlar.
GPIO (ÇEVRESEL AYGITLAR) GPIO Modülüne Ait Fonksiyonel Tanımlamalar: Data Kontrolü Interrupt Kontrolü Mod Kontrolü Pad Kontrolü
GPIO (ÇEVRESEL AYGITLAR) Data Kontrolü: Pin için giriş çıkış ayarları bu kısımda gerçekleştirilir. Stellaris üzerindeki GPIODIR register’ı ile gerçekleşir. Gerekli pini giriş olarak tanımlamak için ‘0’ değeri, çıkış olarak tanımlamak için ‘1’ değeri yazılır.
GPIO (ÇEVRESEL AYGITLAR) Interrupt Kontrolü: GPIO pinlerinininterrupt özelliğinin açılıp kapanmasını sağlar. Hangi durumlarda interrupt geleceğinin belirlenmesini sağlar. Mod Kontrolü: GPIO pininin hangi işlevini kullanacağımızı belirler.
GPIO (ÇEVRESEL AYGITLAR) Pad Kontrolü: Pad ayarlamaları için kullanılır. Donanımsal olarak kullanım değişikliklerinde tercih edilir. Opsiyonel olarak open-drain seçimi yapılmasına olanak sağlar.
STELLARİSWARE İLE PROGRAMLAMA Algoritma: Cihaz üzerinde kullanacağımız port aktif hale getirilir.SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOX); Port üzerinde kullanacağımız pin seçilir ve özellikleri ayarlanır.GPIOPinTypeGPIOOutput(GPIO_PORTX_BASE,GPIO_PIN_5 | GPIO_PIN_6); Varsa özel ayarlar yapılır. Yapmak istediğimiz işlemler gerçekleştirilir.GPIOPinWrite(GPIO_PORTX_BASE,GPIO_PIN_Y,!GPIO_PIN_Y); Uygulama
INTERRUPT Interrupt Nedir? Bir uygulamanın, daha önemli bir uygulamanın gerçekleşmesi için kesilmesi işlemidir. Interrupt bağlandığı yerdeki spesifik hareketlere göre ayarlanabilir, kontrol edilebilir, kendi içerisinde de önem sırasına göre kullanılabilir. ARM tabanlı MCU’lar üzerinde NVIC (NestedVectoredInterrupt Controller) bulunur.
INTERRUPT NVIC Nedir? Stellaris üzerinde 26 adet NVIC interrupt kullanılabilir. 0-7 arasında öncelik sırasına göre interrupt’lar kendi aralarında da sıralanabilir.(önceliği en büyük olan 0) GPIO pinlerine bağlanabilir. Maskelenebilir, Maskelenemeyen harici NMI interrupt’ı vardır. Vektörel olarak tanımlanır, kolay kullanım avantajı sağlar.
INTERRUPT NVIC Nasıl Kullanılır: Proje içerisindeki startup.s dosyası içerisinden kolaylıkla kullanılabilir. Vektörel olarak isimlendirilmiş alanda interrupt olduktan sonra dallanılacak fonksiyon adresini belirtilir. Fonksiyon adresi tanımlanır.
STELLARİSWARE İLE PROGRAMLAMA Algoritma: İnterrupt özellikleri ayarlanır.(örn. Düşen kenar)GPIOIntTypeSet(GPIO_PORTX_BASE, GPIO_PIN_Y, GPIO_FALLING_EDGE); Pinüzerindeki interrupt yakalama aktif hale getirilir.GPIOPinIntEnable(GPIO_PORTX_BASE, GPIO_PIN_Y); Genel interruptaçılır.IntEnable(INT_GPIOX); Interrupt fonksiyonu içerisinde Interrupt bayrağı temizlenir.GPIOPinIntClear(GPIO_PORTX_BASE, GPIO_PIN_Y);
OLED EKRAN OLED Ekran Nedir? OLED ekran LCD ekran teknolojisine rakip olarak çıkmıştır. Işık yayan diyot(LED) familyasının son türüdür. OrganicLightEmitting Device açılımına sahiptir. Düşük güçte çalışmalarından dolayı genellikle mobil uygulamalarda kullanılırlar.
OLED EKRAN Stellaris OLED Ekran ÖZellikleri: Üzerinde SSD0303 sürücü bulunmaktadır. Bu sürücü sayesinde fonksiyonlar yardımıyla kolayca yazı ve resim ekleyebiliyoruz. Monochrome(tek renk) ekranı vardır. 96x16 Çözünürlük destekliyor.
OLED EKRAN Resim Ekleme: Resim gösterimi matris tanımlanarak yapılabilmektedir. Stellaris üzerindeki OLED ekran ile resim gösterimi matris dolumu ile gerçekleşir.
OLED EKRAN Algoritma: Hızı ayarlanır.Display96x16x1Init(true); String yazılır.Display96x16x1StringDraw("Merhaba", 0, 0);
DEBUG Debug Nedir? Türkçesi hata ayıklama olan bu yöntem programcıya kodunu adım adım inceleme imkanı sunar. Adım adım kod çalıştırmanın yanında anlık değişkenlerimizin değerini de okumak mümkündür. Başlarda simülasyon düzeyinde olan bu işlemler artık gömülü sistemlerde cihazın üstünde debug yapma özelliği getirmiştir. Aynı zamanda zorunlu hale de gelmiştir.
DEBUG JTAG Nedir? Joint Test Action Group olarak açılabilir. Bir debug çeşididir. İşlemciler üzerindeki alt blokları kontrol eder. Gömülü sistemlerde adım adım çalışmayı sağlar. 1990 yılında test mekanizması olarak çıkmıştır.
DEBUG JTAG Elemanları:
DEBUG JTAG Nasıl Çalışır?
DEBUG ICDI InCircuitDebuggerInterface olarak açılabilir. Stellaris LM3S811 üzerinde bilgisayar ile arasındaki debugger ICDI tipi debuggerdır. Bilgisayar ve stellaris arasında debug ara yüzünü kolayca oluşturur.