arm tabanlı mikrodenetleyici temelleri ve programlama
DESCRIPTION
ARM Tabanlı Mikrodenetleyici Temelleri ve Programlama. TUNA AYAN www.tuna-ayan.com [email protected]. BAŞLAMADAN ÖNCE. GPIO(Çevresel Aygıtlar) StellarisWare İle Programlama Interrupt OLED Ekran Debug İşlemi. GPIO (Çevresel Aygıtlar). GPIO Nedir? - PowerPoint PPT PresentationTRANSCRIPT
TUNA AYAN
www.tuna-ayan.com
ARM Tabanlı Mikrodenetleyici
Temelleri ve Programlama
• GPIO(Çevresel Aygıtlar)
• StellarisWare İle Programlama
• Interrupt
• OLED Ekran
• Debug İşlemi
BAŞLAMADAN ÖNCE
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 Aygıtlar)
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.
• Opsiyonel olarak 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 Modülüne Ait Fonksiyonel Tanımlamalar:
• Data Kontrolü
• Interrupt Kontrolü
• Mod Kontrolü
• Pad Kontrolü
GPIO (ÇEVRESEL AYGITLAR)
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 pinlerinin interrupt ö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.
Algoritma:
1. Cihaz üzerinde kullanacağımız port aktif hale getirilir.SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOX);
2. Port üzerinde kullanacağımız pin seçilir ve özellikleri ayarlanır.GPIOPinTypeGPIOOutput(GPIO_PORTX_BASE,GPIO_PIN_5 | GPIO_PIN_6);
3. Varsa özel ayarlar yapılır.
4. Yapmak istediğimiz işlemler gerçekleştirilir.GPIOPinWrite(GPIO_PORTX_BASE,GPIO_PIN_Y,!GPIO_PIN_Y);
STELLARİSWARE İLE PROGRAMLAMA
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 (Nested Vectored Interrupt 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:
1. İnterrupt özellikleri ayarlanır.(örn. Düşen kenar)GPIOIntTypeSet(GPIO_PORTX_BASE, GPIO_PIN_Y, GPIO_FALLING_EDGE);
2. Pin üzerindeki interrupt yakalama aktif hale getirilir.GPIOPinIntEnable(GPIO_PORTX_BASE, GPIO_PIN_Y);
3. Genel interrupt açılır.IntEnable(INT_GPIOX);
4. 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.
• Organic Light Emitting 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:
1. Hızı ayarlanır.Display96x16x1Init(true);
2. 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
• In Circuit Debugger Interface olarak açılabilir.
• Stellaris LM3S811 üzerinde bilgisayar ile arasındaki debugger ICDI tipi debugger dır.
• Bilgisayar ve stellaris arasında debug ara yüzünü kolayca oluşturur.