Ana içeriğe atla

Keil ile Arm Programlama - 3 ( Timer )

Keil ile Arm Programlama

Timer Interrupt

     Selamlar. Bugünkü yazıda arm tabanlı stm32f4 devre kartımızda timer modülünü nasıl kullanacağımızı öğreneceğiz. O zaman timer'ın ne olduğu ve ne için kullanıldığını bilerek işe başlayalım.

      Her şeyden önce timer bir sayıcıdır. Zamanda ileri yönde veya geri yönde çalışarak periyodik olarak işlemcinin ana programdan çıkarak istenilen fonksiyona gitmesini sağlarlar. Bu işlemi interrupt oluşturarak gerçekleştirirler. Interrupt kelime anlamı olarak '' kesme '' demektir. Timer'lar belirlenen zaman değerleri bittiği zaman interrupt oluşturarak interrupt bloğundaki kodu yürütürler. Bu olay mikroişlemcide şu adımlarla yürütülür ;

       1 ) Program normal akışı içerisinde EEPROM üzerindeki verileri okur. Yani normal çalışma ana program döngüsündeki kodlar yerine getirilir.

      2 ) Bu çalışma sırasında Timer Flag ( interrupt bayrağı ) sürekli denetlenir.

      3 ) İnterrupt bayrağı " 1 " olduğu zaman kaldığı bellek değerine bir pointer ( gösterge ) koyar ve bayrağın gösterdiği kısma gider.

      4 ) Program interrupt kodunun olduğu kısma gittiğinde bayrak biti " 0 " durumuna getirilmelidir. Yani interrupt bayrağı temizlenmelidir. Aksi halde program sürekli interrupt kod bloğu içerisinde kalır.

    STM32F4 serisinde 8 adet timer vardır. Bu timer'ların 7 tanesi 16 bitlik, 1 tanesi 32 bitliktir. Her timer'ın birbirinden farklı özellikleri vardır ve clock frequency'leri farklı olabilir. Aşağıdaki tabloda bu özellikler gösterilmiştir. 


     
     Bu kısa giriş bilgilerinden sonra kodlarımızı buraya atacağım. Ama öncelikle bu konuya çalışırken saçlarımı ağartan timer'da zaman ayarlamasını nasıl yaptığımızı anlatmak istiyorum. İşlemcimiz çalışırken hangi zaman aralıklarında interrupt oluşmasını istiyorsak bu değeri programda kendimiz yazmalıyız. Sonuçta arm'da programın bütün konfigürasyonlarını biz yaptığımız gibi burada da bu görev bize bırakılıyor ( maalesef ). 

      STM32F4 mikroişlemcimizin timer2 clock frekansı 84 MHz'dir. Timer interrupt hangi frekans aralıklarında gerçekleşmesini belirlediğimiz formül ;

      TİMER CLOCK FREKANSI / ( PRESCALER + 1) . ( PERİOD + 1 )

      Evet arkadaşlar, her kaynaktan farklı bir bilgi alsam da sonuç olarak karar kıldığım formül budur. Ben buraya clk_frq falan yazmayacağım çünkü kendim içinde anlaşılır olmasını istiyorum. Birazdan kodda göreceğiniz üzere program içerisinde prescaler ve period değerlerini biz giriyoruz. ClockDivision değerini 1 olarak belirlememizdeki olay 84Mhz / 1 = 84 MHz'den timerın çalışma hızını ayrıca orada de belirlememizdir. Ben istiyorum ki 1 sn aralıklarla timer interrupt'ı aktif hale gelsin. O zaman T = 1 / f formülünden interrupt frekansı 1 Hz olmalıdır. ( 1 Hz saniyede 1 veri işlemek demek. )Bunun içinde bize Timer Calculator adında bir program geliştirmişler. Bu program bizim için istediğimiz frekanslara göre değerleri oluşturuyor. 



    
     Artık sona geldiğimize göre kodları buraya bırakıyorum. Hemen hemen her satırın sonuna kendimce bir açıklama yazdım. Umarım anlaşılır olmuştur. :) 


      

     
     

Yorumlar

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