STM32F103C8 ile Standart Peripheral Library Dersleri|
4. Bölüm
Standart Peripheral Library Derslerimizin 4. bölümünde kesme komutunu inceleyeceğiz. Detaylar yazımızda.
17.06.2020 tarihli yazı 11531 kez okunmuştur.
Artık GPIO birimini nasıl kullanacağımızı daha iyi biliyoruz. Hayal edelim ki GPIO birimi üzerinde kullandığımız bir giriş pini hayati öneme sahip. Yani burdan aldığımız bilgiye göre mikrodenetleyicimiz yaptığı işi bırakıp çok hızlı cevap vermeli ve ya işlem yapmalı. Tam bu nokta da Interrupt(kesme) birimi yardımımıza koşar ve programın işlemesini bırakarak istediğimiz komutların çalışmasını sağlar.
INTERRUPT(Kesme) Nedir?
Interrupt yani Türkçe anlamı kesme birimi donanımıza dahili ve ya harici tetikleme ile devreye giren , program devam ederken devreye girdiği anda programı kesip alt programı çalıştıran birimdir. Kesme birimine ihtiyacımız her profesyonel sistemlerde mutlaka vardır. Çünkü sistemimiz herhangi bir anda yalnız bir işlem yapabilir. Bir işlem üzerindeyken donanımımız belki dışardan müdahaleyi görmeyebilir ve bu sistemde hata meydana çıkarabilir.
►İlginizi Çekebilir: STM32F103C8 ile Standart Peripheral Library Dersleri 1. Bölüm
Özellikle hayati öneme sahip (Acil stop butonu, haberleşme protokolünden gelen veri vs.) durumlarda kesme ile devam eden program durdulur. İşlemci programda kaldığı yeri kayıt eder. Kesme için yazdığımız alt program çalışır. Alt programın bitiminde programımız kaldığı yerden devam eder. Bugün mikrodenetleyicimiz ile beraber harici kesmeleri öğreneceğiz. Şimdi hep beraber ST firmasının bizim için hazırladığı Reference manual yardımı ile kesmeleri nasıl kullanmamız gerektiğini inceleyelim.
STM32F103 için Kesmeler
Öncelikle kesmelerimizi kullanabileceğimiz yöntemlerden bahsedelim. Burada karşımıza 3 mod çıkmaktadır.
STM32F103 mikrodenetleyimizde 80 GPIO üzerinde bahsedilen bu 3 mod istediğimiz gibi harici kesme olarak kullanılabilir.
İncelememiz gereken diğer bir nokta ise hangi pinler hangi line üzerinden kontrol edildiğidir. Yine reference manuel üzerinde vektör tablomuzu incelersek buradan;
Rising Mode
Bu modumuz bize yükselen kenarda çalışacağını ifade eder. Normalde lojik sıfır olan pinimize yükselen kenar tetikleme geldiğinde kesmemiz aktif olur ve alt programı çalıştırır.
►İlginizi Çekebilir: STM32F103C8 ile Standart Peripheral Library Dersleri 2. Bölüm
Falling Mode
Bu modumuz ise düşen kenar geldiğinde aktif olmaktadır.Rising-Falling Mode
Bu modumuz kullanığımız pinde hem yükselen hem düşen kenarda devreye girmektedir. Yani herhangi bir anda pin üzerinde lojik seviye değişikliği olduğunda kesmemiz aktif olmaktadır.STM32F103 mikrodenetleyimizde 80 GPIO üzerinde bahsedilen bu 3 mod istediğimiz gibi harici kesme olarak kullanılabilir.
İncelememiz gereken diğer bir nokta ise hangi pinler hangi line üzerinden kontrol edildiğidir. Yine reference manuel üzerinde vektör tablomuzu incelersek buradan;
► EXTI0 - EXTI Line0 interrupt
►EXTI1 - EXTI Line1 interrupt
►EXTI2 - EXTI Line2 interrupt
►EXTI3 - EXTI Line3 interrupt
►EXTI4 - EXTI Line4 interrupt
►EXTI9_5 - EXTI Line[9:5] interrupts
►EXTI15_10 - EXTI Line[15:10] interrupts
bilgilerine ulaşabiliriz.
Bu tablo bize şunu anlatır ; GPIO portlarımızın 0. pinlerini EXTI Line0 üzerinden, 1. pinlerini EXTI Line1 üzerinden, 2. pinlerini EXTI Line2 , 3. pinlerini EXTI Line3 , 4. pinlerini EXTI Line4 , 5 ile 9 arasında ki pinlerini EXTI Line[9:5] ve 10 ile 10 arasında ki pinlerini EXTI Line[15:10] üzerinden kullanabiliriz. Şimdi bilgilerimiz nasıl kullanacağımızı öğrenebiliriz.
Bu tablo bize şunu anlatır ; GPIO portlarımızın 0. pinlerini EXTI Line0 üzerinden, 1. pinlerini EXTI Line1 üzerinden, 2. pinlerini EXTI Line2 , 3. pinlerini EXTI Line3 , 4. pinlerini EXTI Line4 , 5 ile 9 arasında ki pinlerini EXTI Line[9:5] ve 10 ile 10 arasında ki pinlerini EXTI Line[15:10] üzerinden kullanabiliriz. Şimdi bilgilerimiz nasıl kullanacağımızı öğrenebiliriz.
STM32F103 ile Interrupt Kullanımı
“stm32f103_exti.h” kütüphanemizi incelediğimiz de tanımlamız gerekenleri görebiliriz.
typedef struct
{
uint32_t EXTI_Line
EXTIMode_TypeDef EXTI_Mode
EXTITrigger_TypeDef EXTI_Trigger;
FunctionalState EXTI_LineCmd
}EXTI_InitTypeDef;
Burada gördüğümüz EXTI ayarlarımızı ,NVIC ayarlarımızı ve GPIO ayarlarımız örnek proje üzerinde uygulama ile görelim.
typedef struct
{
uint32_t EXTI_Line
EXTIMode_TypeDef EXTI_Mode
EXTITrigger_TypeDef EXTI_Trigger;
FunctionalState EXTI_LineCmd
}EXTI_InitTypeDef;
Burada gördüğümüz EXTI ayarlarımızı ,NVIC ayarlarımızı ve GPIO ayarlarımız örnek proje üzerinde uygulama ile görelim.
Örnek Proje
►İlginizi Çekebilir: STM32F103C8 ile Standart Peripheral Library Dersleri 3. Bölüm
Burada GPIO pinimizi belirledikten sonra EXTI ve NVIC tanımlamaları ile kesmemizin nasıl çalışacağını tamamlayıp alt program yazmak için uygun ortam oluşturabildik. Bir sonraki dersimizde görüşmek üzere…
Kaynak:
►st.com
Yazar: Yasin Tekin
Kaynak:
►st.com
Yazar: Yasin Tekin
YORUMLAR
Aktif etkinlik bulunmamaktadır.
- Dünyanın En Görkemli 10 Güneş Tarlası
- Dünyanın En Büyük 10 Makinesi
- 2020’nin En İyi 10 Kişisel Robotu
- Programlamaya Erken Yaşta Başlayan 7 Ünlü Bilgisayar Programcısı
- Üretimin Geleceğinde Etkili Olacak 10 Beceri
- Olağan Üstü Tasarıma Sahip 5 Köprü
- Dünyanın En İyi Bilim ve Teknoloji Müzeleri
- En İyi 5 Tıbbi Robot
- Dünyanın En Zengin 10 Mühendisi
- Üretim için 6 Fabrikasyon İşlemi
- DrivePro Yaşam Döngüsü Hizmetleri
- Batarya Testinin Temelleri
- Enerji Yönetiminde Ölçümün Rolü: Verimliliğe Giden Yol
- HVAC Sistemlerinde Kullanılan EC Fan, Sürücü ve EC+ Fan Teknolojisi
- Su İşleme, Dağıtım ve Atık Su Yönetim Tesislerinde Sürücü Kullanımı
- Röle ve Trafo Merkezi Testlerinin Temelleri | Webinar
- Chint Elektrik Temel DIN Ray Ürünleri Tanıtımı
- Sigma Termik Manyetik Şalterler ile Elektrik Devrelerinde Koruma
- Elektrik Panoları ve Üretim Teknikleri
- Teknik Servis | Megger Türkiye
ANKET