You are on page 1of 9

Machine Translated by Google

Geçici Haftalık Program


• Hafta x1 - Derse Giriş
• Hafta x2 - Mimarlık

• 3. Hafta - Assembly Diline Giriş


Mikroişlemciler • 4. Hafta - Assembly Dili Kullanımı, Bellek ve Hatalar
2020 Sonbaharı
• 5. Hafta - Yerleşik C ve Araç Zinciri

• 6. Hafta - İstisnalar ve Kesintiler


• 7. Hafta - GPIO, Harici Kesintiler ve Zamanlayıcılar
• 8. Hafta - Zamanlayıcılar
• 9. Hafta - Seri İletişim I
7. Harici Kesintiler ve GPIO • Hafta xA - Seri İletişim II

• Hafta xB - Analog Arayüzleme


• Hafta xC - DMA
• Hafta xD - RTOS
• Hafta xE - Kablosuz İletişim

https://micro.furkan.space 2 https://micro.furkan.space

İnceleme: CMSIS İnceleme: Kesintiler


• Cortex Mikrodenetleyici Yazılım Arayüzü Standardı • Donanım tarafından tetiklenen eşzamansız yazılım rutini
• Çevre biriminden veya harici aygıttan gelen donanım
(CMSIS) bir yazılım çerçevesidir
sinyaliyle tetiklenir
kesme ve sistem kontrol fonksiyonları gibi işlemci • Asenkron - dünyanın herhangi bir yerinde gerçekleşebilir
özelliklerine standart bir yazılım arayüzü sağlamak . programı
• Yazılım rutini kesintiye yanıt olarak çalışır
• Mikrodenetleyicilerin temel mekanizması
• ARM tarafından sağlanır ve çoğu Cortex-M'yi hedefler
• Yoklama yerine verimli, olaya dayalı işleme sağlar
işlemciler
• Farklı takım zincirleriyle kullanılabilir ve • Program durumu, karmaşıklığı ve konumundan bağımsız
IDE'ler olarak olaylara hızlı yanıt sağlar
• Gömülü sistemlerin işletim sistemi olmadan yanıt vermesini sağlar
• Birden fazla paketten oluşur

3 https://micro.furkan.space 4 https://micro.furkan.space
Machine Translated by Google

İnceleme: Örnek C programı İnceleme: Atomik olmayan paylaşılan veriler

statik int sayısı = 0; • İşleve çağrı yapılmaz • Temel sorun yarış durumudur
Yarış Durumu: Beklenmedik kritik durumlar nedeniyle anormal davranış
• Donanım otomatik olarak
geçersiz düğmesiISR(geçersiz) { olayların zamanlamasının göreceli bağına bağımlılık. Örneğin sonucu
// LED'i değiştir
servise atlar
kod okuma ve yazmanın göreceli zamanlamasına bağlıdır
GPIOC->ODR ^= (1 << 6); kesinti operasyonlar.
sayım++; • Değişkenlerin olması gerekiyorsa
• Ön alım, ISR'nin diğer kodu kesmesine ve muhtemelen verilerin üzerine
}
paylaşılıyorsa global yazmasına olanak tanır

olarak bildirilmeleri gerekir • Nesneye atomik (bölünemez) erişim sağlanmalıdır


int ana(geçersiz) {
• Yerel atomik nesne boyutu, işlemcinin talimat setine ve kelime boyutuna bağlıdır
// LED'i ve Düğmeleri başlat • Ayrıca bu durum
// Kesmeyi başlat hem optimizasyon hem
• Başka bir yol da kritik kod içindeki kesintileri devre dışı bırakmak / etkinleştirmektir
de yarış koşulları bölümler
while(1) {

// Hiçbir şey yapma açısından dikkatli Kritik kod bölümü: Olası bir kod oluşturan kod bölümü

} düşünmeyi gerektirir yarış kondisyonu. Bu nedenle bir senkronizasyon mekanizması gereklidir


0 değerini döndür ; özel kullanımı sağlamak için kritik bölümün giriş ve çıkışında
}
5 https://micro.furkan.space 6 https://micro.furkan.space

S. SSD segmentlerime ne oluyor? Genel Amaçlı Giriş / Çıkış (GPIO)


• LED'ler akımla çalışır ve sınırlı miktarda akım • Çeşitli cihazları, ekranları, sensörleri ve aktüatörleri
gerektirirler bağlamak için bir mikro denetleyicide farklı türde
arayüzler bulunur.
• Çok düşük olduğundan çalışmaz
• Bu arayüzleri kullanarak bağlanmak için mikrodenetleyici
• Çok yüksek olursa LED'in yıpranmasına neden olur Fiziksel pinler giriş veya çıkış olarak yapılandırılabilir.
• Veri sayfasını kontrol edin • Çeşitli iletişim ve protokolleri desteklemek için bu pinler alternatif
işlevler olarak da yapılandırılabilir.
bunu sonraki derslerde tartışacağız.
• Genel amaçlı bir giriş çıkış pini yapılandırılabilir
dijital çıkış veya dijital giriş olarak çalışır ve ilgili kayıt
değerini voltaj seviyelerine dönüştürerek çalışır . (yani
1 yazmak 3,3V'ye ve 0'dan 0V'a dönüşür)

7 https://micro.furkan.space 8 https://micro.furkan.space
Machine Translated by Google

Genel Amaçlı Giriş / Çıkış (GPIO) GPIO Çevresel kayıtları: MODER


• Aşağıda GPIO pininin nasıl çalıştığına ilişkin basit bir bağlantı şeması • Her GPIO pini MODER'dan şu şekilde yapılandırılabilir:
bulunmaktadır. (yani iki farklı seviyede aktifleştirilmiş üç durumlu • 00 Dijital giriş
tampon.) • 01 Dijital çıkış
• 10 Alternatif fonksiyon

• 11 Analog giriş (sıfırlama durumu)


• MODER'da her pin 2 bitlik alanla ilişkilendirilir

9 https://micro.furkan.space 10 https://micro.furkan.space

STM32G0'da GPIO Çevre Birimi kayıtları STM32G0'da GPIO Çevre Birimi


• Her çıkış pini itme-çekme olacak şekilde yapılandırılabilir

(sıfırlama durumu) veya açık drenaj (yüksek z). (OTİP)

• Her bir G/Ç çıkış hızı, düşük ve yüksek hızlar arasında

yapılandırılabilir. (OSPEEDR)

• Her bir I/O pini, dahili yukarı veya aşağı çekme özelliğine sahip olacak

şekilde yapılandırılabilir . (PUPDR)

• Her çıktı ODR kullanılarak yazılabilir ve okunabilir

IDR kayıtlarını kullanma .

• G/Ç pinleri, AFRL ve AFRH kayıtları kullanılarak alternatif fonksiyon üzerinde

çalışacak şekilde seçilebilir . Önümüzdeki haftadan itibaren bunları

konuşacağız ve kullanacağız.

11 https://micro.furkan.space 12 https://micro.furkan.space
Machine Translated by Google

Harici Kesintiler GPIO Mux'tan ÇIKIŞ

• Bazen dışarıdan gelen bir sinyaldeki değişikliğin farkına • Farklı bağlantı noktalarından aynı pin numarası
varıp o değişime göre hareket etmek isteriz. Aynı kesme rutinine MUX uygulandı
• Bu basit bir düğmeye basmak veya bir
iletişim sinyali.
• Ayrıca CPU için uyku modlarından uyandırma kaynağı
olarak da çalışabilir.
• Mikrodenetleyiciler genellikle bu tür durumlar için 1
veya daha fazla kesme özellikli pin içerir.

13 https://micro.furkan.space 14 https://micro.furkan.space

ÇIKIŞ Kayıtları ÇIKIŞ Operasyonu


• RTSR1 Yükselen tetikleyici seçim kaydı
• FTSR1 Düşen tetikleyici seçim kaydı
• SWIER1 Yazılım kesintisi olay kaydı -
kesintiler yazılım tarafından tetiklenebilir
• {RF}PR1 Yükselen / Düşen bekleyen kayıt - tetiklenen
kesintiler (hw/sw) 1 yazılarak temizlenebilir
• EXTICRx Seçim kaydı. Her harici kesme, GPIO bağlantı
noktasının (MUX kontrolü) seçimi için 8 bitlik alanlara
sahiptir.
• IMR Maskesi kaydı. Her harici kesinti çalışma için
maskelenebilir

15 https://micro.furkan.space 16 https://micro.furkan.space
Machine Translated by Google

ÇIKIŞ Yapılandırması Zamanlayıcı Çevre Birimi

EXTI->EXTICR[0] |= (2U << 8*1); // PortC MUX'u seçin. 0'da 0-3, • Zaman tutma , gömülü sistemler için önemli bir
1'de 4-7, 2'de 8-11, 3'te 12-15 bulunur kavramdır ve genellikle tam zamanlama bilgisi
EXTI->FTSR1 |= (1U << 1); // Px1'de düşen kenar isteriz (özellikle iki olay arasında).
ÇIKIŞ->IMR1 |= (1U << 1); // Px1'i maskele • Bu görevin CPU'ya yüklenmesi tam zamanın
belirlenmesini zorlaştırır ve verimsiz hale getirir.
Daha sonra ilgili kesme isteği için NVIC'yi kurun
• Mikrodenetleyici satıcıları belirli bir zamanlayıcı içerir
Harici Kesmeler 3'e gruplandırılmıştır (işleyicilerin
yanı sıra) temelde özel sayaçlardan oluşan modüller
• EXTI0_1_IRQn bu, verilen değerlere doğru/aşağı doğru sayar ve
• EXTI2_3_IRQn sayımın ne zaman bittiğini gösterir.
• EXTI4_15_IRQn • Bu modüller çeşitli işlevler içerebilir
Tam adlar ve organizasyon için startup_xxx koduna yukarı/aşağı sayma, tek atış, devam eden sayım gibi
göz atın
17 https://micro.furkan.space 18 https://micro.furkan.space

Kesintili Temel Zamanlayıcı blok şeması Zamanlayıcı / Sayaç

• Zamanlayıcının saat kaynağı seçilebilir.

• Sayaç modu - olayları gösteren (örneğin bir montaj


hattından geçen parçaların sayısı) (asenkron)
sayma darbeleri
• Zamanlayıcı modu - (senkronizasyon) saat darbelerini sayma
• Sayım yönü sabit veya seçilebilir

• Sayım değeri MCU tarafından okunabilir/yazılabilir


• Sayımın aşırı/düşük akış eylemi seçilebilir

• Bir kesinti oluştur


• Sayaç değerini yeniden yükleyin ve saymaya devam edin
• Çıkış sinyalini değiştir
19 https://micro.furkan.space 20 https://micro.furkan.space
Machine Translated by Google

Temel Zamanlayıcı işlemi MAX değerinin hesaplanması


• Kayıttan başlangıç değerini yükle • Her T saniyede bir kesme oluşturmak için,
• Sayaç her saatle birlikte geri saymaya başlar ilişkili yeniden yükleme kayıt değerini bulmamız gerekir.
nabız • Zamanlayıcının bağlı olduğu işlemci saat frekansına ve
• Ön ölçekleyiciyle de çarpılabilir veri yolu frekansına bağlıdır.
• Zamanlayıcı değeri sıfıra ulaştığında • Örneğin, 16 MHz'de çalışan bir işlemci için 300 ms'lik
• Kesinti oluştur periyoda (veya kesinti oranına) sahip bir
• Zamanlayıcıyı kayıttan yeniden yükle zamanlayıcı oluşturmak için
• 300 ms x 16 MHz = 4800000 yazın .

kaydı yeniden yükle.

• T * F, zamanlayıcı çevresel bit sayısıyla temsil


edilebilmelidir. (yani 32 bit)
21 https://micro.furkan.space 22 https://micro.furkan.space

Örnek: Kronometre STM32G0'daki zamanlayıcılar

• Diyelim ki bir kronometre uygulamak istiyoruz. G0'da zamanlayıcıyla ilgili farklı modüller var
• 100 us çözünürlükle zamanı ölçün ARM çekirdeğinin içinde

• Geçen süreyi görüntüleyin, ekranı her 10 ms'de bir güncelleyin • SistemTick Zamanlayıcısı

• Sayacı her 100'de bir artırın. Çevre birimleri olarak


zamanlayıcı. • Genel Amaçlı Zamanlayıcılar
• 16 MHz saat hızına sahip olduğumuzu varsayarsak yeniden yükleme değeri:
• Gelişmiş Kontrol Zamanlayıcıları - giriş yakalama,
16M x 100us - 1 = 1599 çıkış karşılaştırması ve PWM gibi çeşitli ek işlevler
• Her 100'de bir görüntülenmesi biraz zahmetli olacaktır ve
gözlerimiz için pek de gerekli değildir, o yüzden ekranı her • Bekçi Zamanlayıcıları
Bunları daha sonra
10 ms'de bir güncelleyelim. • Bağımsız WDG konuşacağız
• WDG penceresi kurs
• Güncellemeyi nasıl uygularsınız?

23 https://micro.furkan.space 24 https://micro.furkan.space
Machine Translated by Google
SysTick Zamanlayıcısı SysTick Zamanlayıcısı

• Bir İşletim Sisteminin çoklu görevi desteklemek amacıyla • NVIC'ye entegre edilmiştir ve SysTick istisnası oluşturur
periyodik içerik değiştirme işlemini gerçekleştirmesine izin vermek (#15)
için , programın yürütülmesinin zamanlayıcı gibi bir donanım • Temel 24 bit aşağı sayıcı
aygıtı tarafından kesilmesi gerekir .
• Sıfıra ulaştıktan sonra otomatik olarak yeniden yüklenir ve
• Zamanlayıcı kesintisi tetiklendiğinde bir istisna yeniden yükleme değeri programlanabilir
İşletim sistemi görev zamanlamasını yöneten işleyici yürütülür • İşletim sistemi dışı kullanımlar için, temel zaman işleyişi,
• İşleyici ayrıca diğer işletim sistemi bakım görevlerini
zamanlama ölçümü olarak veya periyodik olarak yürütülmesi
de gerçekleştirebilir.
gereken görevler için bir kesme kaynağı olarak kullanılabilir .
• Cortex-M işlemciler için SysTick adı verilen basit bir zamanlayıcı
• İstisna oluşturma programlanabilir ve eğer devre dışı bırakılırsa
Bu periyodik kesme isteğini oluşturma işlevini gerçekleştirmek
yoklama yöntemiyle, yani sayacın mevcut değerinin kontrol
için işlemcinin içine dahil edilmiştir .
edilmesiyle kullanılabilir.
• İşletim sistemi dışı kullanımlar için bu, genel bir zamanlayıcı görevi görür.

25 https://micro.furkan.space 26 https://micro.furkan.space

SysTick Kayıtları SysTick Operasyonu

SysTick ile ilgili 4 kayıt var


• CTRL - Sayım bayrağını, saat kaynağını, istisnayı tutar
etkinleştirme ve SysTick etkinleştirme alanları
• LOAD - Sıfıra ulaştıktan sonra yeniden yükleme değerini korur
• VAL - Geçerli sayaç değerini tutar
• CALIB - Kalibrasyon verilerini (eğim, ref, vs) tutar

27 https://micro.furkan.space 28 https://micro.furkan.space
Machine Translated by Google

SysTick Yapılandırması STM32G0'daki zamanlayıcılar

SysTick->CTRL = 0; // SysTick'i devre dışı bırak


SysTick->LOAD = 999; // 999'dan 0'a doğru geri sayım
SysTick->VAL = 0; // Geçerli değeri temizle
SysTick->CTRL = 0x7; // Systick'i etkinleştir, istisna,
// ve işlemci saatini kullan

Alternatif olarak, CMSIS'i kullanarak şunları çağırabilirsiniz:

SysTick_Config(1000);

29 https://micro.furkan.space 30 https://micro.furkan.space

STM32G0'daki zamanlayıcılar STM32G0 - Genel amaçlı zamanlayıcı bloğu

• Bu zamanlayıcılar aşağıdakiler için kullanılabilir:

• standart yukarı/aşağı sayaç modu


• giriş sinyallerinin darbe uzunluklarının ölçülmesi (giriş
esir almak)
• çıkış dalga formlarının oluşturulması (çıkış karşılaştırması)

• darbe genişliği modülasyonu üretimi


• kesinti / DMA üretimi
• 16/32 bit olabilirler, bu yüzden dikkatli olun
• Zamanlayıcıyı harici sinyallerle kontrol etmek ve
birkaç zamanlayıcıyı birbirine bağlamak için
senkronizasyon devresini içerir

31 https://micro.furkan.space 32 https://micro.furkan.space
Machine Translated by Google

Ön ölçekleyicili temel sayaç 1 -> 2 Ön ölçekleyicili temel sayaç 1 -> 4

33 https://micro.furkan.space 34 https://micro.furkan.space

Bu hafta

• Yiu'dan Bölüm 10.3'ü okuyun


• RM0444'ten Bölüm 6'yı okuyun
• Lab3 atandı ve 30 Kasım'da teslim edilecek
• HW4 gelecek ve 9 Aralık'ta teslim edilecek
• Proje 2 atanacak ve 21 Aralık'ta
teslim edilecek

35 https://micro.furkan.space

You might also like