Ana içeriğe atla

Keil ile ARM Programlama

       ARM Tabanlı Mikrodenetleyiciler
ve
Buton - Led Uygulaması

      Bugünkü yazıda farklı bir konuya giriş yapmak istiyorum ve iş ilanlarında sıkça karşınıza çıkacak bir işlemciden bahsetmek istiyorum.  Arduino ile hobi olarak ufak bir giriş yaptığımız bu gömülü sistem mühendisliğinde asıl amaç ARM gibi önemli bir işlemciyi öğrenmek olmalıdır. Hemen hemen bütün elektronik firmaları arm mimarisine sahip işlemcileri kullanmaktadır. Bu sebeple elektronik mühendisliği yapmak isteyen herkesin bilmesi gereken bir alandır ARM.

      32 bit ve 64 bit olmak üzere 2 farklı sürümü bulunur. Az enerji tüketirler ve uygun fiyata üretilebilirler ve yüksek performans ile çalışırlar. Bu avantajlarından dolayı tabletlerde, laptoplarda ve mobil cihazlarda sıkça tercih edilmiştir. 2014 yılından beri üretilen cep telefonlarının %98'i ARM tabanlı mikroişlemcilerle yapılmıştır.




Apple'da Iphone modelinde ARM mimarisini kullanmaktadır.

      Şunu bilmekte fayda var ki ARM firması kendi başına mikroişlemci üreten bir firma değildir. Firma, arm mimarisini ürettikten sonra mikroişlemci üreten firmalara bu mimariyi lisanslar. Raspberry Pi ve STM gibi firmalar kartlarını bu mimari üzerine geliştirmişlerdir. Ben bu yazıda STM modeli üzerinden bir butonla led nasıl yakılır onu göstermeye çalışacağım. 

      Arm mimarisi temel olarak 3 gruba ayrılmaktadır ;

      1 ) Klasik Arm İşlemciler : ARM7, ARM9, ARM 11
      2 ) Gömülü sistemlere yönelik Arm işlemciler : Cortex - M0, Cortex - M1 vs.
      3 ) Uygulama seviyesindeki Arm işlemciler : Cortex - A5, Cortex - A8 vs.


      Klasik arm işlemciler daha çok motor kontrolü, sinyal işleme gibi uygulamalarda kullanılırken Cortex M ve R serisi STM, TI ve Toshiba gibi firmalar tarafından tercih edilir. Cortex A serisi ise Iphone,Ipad, Galaxy Tablet gibi elektronik cihazlarda tercih edilir.  Şunu bilmek gerekir kullanım alanları farklı olsa da programlama yöntemleri birbirine oldukça benzemektedir. Herhangi bir modeli programlamayı öğrenen bir kişi diğer modellere de kolayca adapte olacaktır. 

      Arm hakkında temel düzeyde bir bilgi sahibi olduysak butonla led yakma uygulamamıza yavaşça geçelim. Kodlara girmeden bazı temel kavramları başlıklar halinde kısaca açıklamak istiyorum. Bu şekilde kodları incelerken daha az kafamız karışabilir.

      GPIO : Elektronik devre kartı üzerinde bulunan diğer modüllerle haberleşmeyi ve diğer modülleri kontrol etmeyi sağlayan " Genel Amaçlı Giriş / Çıkış Portları " dır. Bir GPIO aynı anda hem giriş hem de çıkış portu olarak kullanılabilir. GPIO modülü zamana bağlı bir modüldür. Bu sebeple bu modülün clock bilgisi verilmelidir ve konfigürasyonları yapılmalıdır. Aksi halde çalışmaz. 

      Push / Pull : Pull Up ve Pull Down kelime anlamı olarak " yukarı çekmek " ve " aşağı çekmek " anlamlarına gelir. Pull Down'da butona basıldığında işlemciye +Vcc giderken Pull Up'da butona basıldığında işlemciye Gnd bilgisi gider. 



      
      ARM programlama yaparken bilmemiz gereken başka bir şey var ki o da şudur : Esasen butonun yalnızca Pull Down ve Pull Up dışında 3. bir durumu daha vardır. 3. durum ise " Open Drain " durumudur yani BUTON BİLGİSİNİN GİTMEDİĞİ DURUM. GPIO'u pull down yada pull up diye konfigüre etmediğimiz zaman bacak doğrudan open drain modunda çalışacaktır. Yani çıkışında 5 V varsa çıkışa 5V gider, 0V varsa çıkışa direk 0V gider. Biz ledlerimizi butonla kontrol etmek istediğimiz için buton konfigürasyonu sırasında Pull Up yada Pull Down şeklinde olduğu bilgisini de programımıza yazacağız. 

      Şimdi programa geçebiliriz ;

     




      Komutların hangi amaçla kullanıldığını açıklamak gerekirse ; 

      GPIO_InitTypeDef GPIO_InitStructure : İlk yazdığımız kod GPIO'un ( Genel Amaçlı Giriş Çıkış Portlarının ) istediğimiz şekilde kullanılabilmesi için yazdığımız bir koddur. Onun önüne yazılan GPIO_InitStructure sadece bir değişkendir. Herhangi bir şey yazılabilir. Genelde bu şekilde kullanıldığı için biz de böyle yazdık.

       GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0 )    GPIO_ReadInputDataBit istediğimiz kanaldan gelen veriyi okumak için kullanılır. Butonu konfigüre ederken A kanalını kullandığımız için A kanalındaki A0 bacağını okuduk.

        GPIO_SetBits : İstenilen bacağı aktif eder, 5V ile besler.

        GPIO_ResetBits : İstenilen bacağı pasif hale geçirir, 0V gönderir.


Yorumlar

  1. Konuyla ilgili böyle anlaşılır ve açıklayıcı bilgilere ulaşamamıştım teşekkür ederim

    YanıtlaSil

Yorum Gönder

En çok okunanlar ;

PLC Zamanlayıcı ( Timer ) Komutu Uygulamaları ve Simülasyonu

SIEMENS S7 - 200  PLC TİMER KOMUTU UYGULAMALARI ve SİMÜLASYONU      Merhaba, bugünkü yazıda PLC'de timer komutunun kullanımını öğreneceğiz ve bu komutun simülasyon üzerinde uygulamalarını gerçekleştireceğiz. Timerler PLC'de oldukça öneme sahip komutlardır. S7 - 200 PLC'de 3 çeşit zamanlayacı bulunmaktadır ;      1 ) Çekmede Gecikmeli Zaman Rölesi ( TON ) : Bu zamanlayıcı '' enable '' girişine ait komutlar doğru ise zamanlayıcı zaman süresini saymaya başlar. Bu anda zamanlayıcının zaman biti 0'dır. Zamanlayıcı'nın saydığı zaman değeri '' Present Value '' değerine eşit olduğu zaman, zamanlayıcı biti 1 olur. Enable girişi 0 olduğunda ise zaman rölesi sıfırlanır.         T32 - T96                                            >>> 1 ms        T33 - .... - T36 ve T97 - ... - T100      >>> 10 ms        T37 - .... - T63 ve T101 - .... - T255   >>> 100ms         Present Time ( PT ) değeri ola

PLC Mühürleme, Set - Reset Komutları ve Elektronik Kilitleme

SIEMENS S7 - 200 PLC  STEP 7 MICROWIN 4.0 PROGRAMI İLE MÜHÜRLEME,SET-RESET,ELEKTRONİK KİLİTLEME UYGULAMALARI ve SİMÜLASYONU      Merhaba, bugün daha önce anlattığımız konulardan daha temel ve kolay olan mühürleme, set - reset , elektronik kilitleme gibi konulara kısaca değineceğiz. Öğrenilmesi her ne kadar daha basit olsa da içerdiği önem oldukça fazladır. Bu yüzden bu konuları öğrenmeden PLC eğitimi gerçekleştirilmiş olamaz.       İlk olarak mühürleme işleminin ne olduğu ile başlayalım. Örnek verecek olursak siz start butonuna basıldığı zaman herhangi bir devre elemanının ( lamba, motor, kompresör vb. ) çalışmasını istiyorsunuz. Start butonu olarak ise normalde açık ( NO ) buton kullanmanız gerekir. Bu yüzden sizin sürekli çıkışı aktif hale getirebilmek için butona sürekli basmanız gerekir. Bu ise pek mümkün olabilecek bir şey değil. İşte bu noktada mühürleme işlemine gerek duyarız. Gelin önce mühürlemenin ladder diyagramını çizelim ve diyagram üzerinde konuyu kav

3 Fazlı ASM'lere Yıldız / Üçgen Yol Verme Kumanda Devresi ve Simülasyonu

3 FAZLI ASENKRON MOTORLARA YILDIZ / ÜÇGEN YOL VERME KUMANDA DEVRESİ SİEMENS S7 -200 LADDER DİYAGRAMI VE SİMÜLASYONU      Merhaba, bu yazıda sanayide en çok kullanılan elektrikli motor olan 3 fazlı asenkron motorlara yıldız/üçgen yol verme yöntemi ile yol verilmesini STEP 7 MicroWİN programında gerçekleştirmeyi öğreneceğiz. PLC komutlarına geçmeden önce neden yol verme yöntemlerine ihtiyaç duyuyoruz, yıldız/üçgen yol vermek ne demektir, bize ne faydası olur gibi soruları cevaplamak gerektiğini düşünüyorum. Bu yüzden ilk olarak bu soruları cevaplamaya çalışacağız.         3 fazlı asenkron motorlar kalkış anında normal çalışma durumuna göre 5 ila 7 kat arasında daha fazla akım çeker. Bu durum ise pano elemanlarının ( kondaktör, termik röle, sigorta vb. ) daha çabuk yıpranmasına sebep olur. Bu yıpranmayı önlemek için ilk kalkış anında bazı yol verme yöntemleri geliştirilmiştir. Bunlardan en çok kullanılanı ise yıldız / üçgen yol verme yöntemidir.      Yıldız/Üçgen yol verm