Konu Anlatımı
Zamanlayıcı ve Kesme Kullanımı
Mikrodenetleyicide zamanlayıcı ve kesme kullanımı, programın belirli anlarda kendiliğinden yönlendirilmesini sağlayan temel düzendir. Zamanlayıcı, önceden kurulan süre dolduğunda ya da sayaç belirli bir değere ulaştığında bir olay üretir. Bu olay genellikle kesme isteği olarak kullanılır ve programın o andaki akışı, yazılımcı tarafından hazırlanmış işleyiciye aktarılır. Böylece uzun beklemelerde işlemci boşta kalmaz, ana program kendi işlerini sürdürür.
1. Ne Öğreneceğiz ve Ön Bilgi
Bu konuyu öğrenmek için önce sayaç, karşılaştırma değeri ve saat bölücüsü kavramları bilinmelidir. Zamanlayıcı, saat darbelerini sayan bir birimdir; her darbede sayaç bir artar. Sayaç hedef değerine ulaştığında ya da başlangıç değerini aşıp sıfırlanacağı noktaya geldiğinde olay doğar. Kesme ise bu olayı işlemciye bildiren, programı yarıda kesmeden çalışan yapıdır. Ön bilgi olarak giriş ve çıkış pinlerinin kullanımı ile değişken kavramı yeterlidir.
- Zamanlayıcı: süreyi veya sayaç olayını sayan donanım birimi.
- Kesme: olay gerçekleştiğinde çalışan ayrı kod parçası.
- Kesme kullanımı: bu kod parçasını kurma, sıraya alma ve güvenli yürütme süreci.
Konunun çekirdeği şudur: kesme bir programı yarıda bırakıp başka bir programa geçmez, onun yerine geçmez. Kesme işleyicisi bittiğinde ana program kaldığı yerden sürer. Bu yüzden kesme kullanımı, programı baştan sona yeniden yazmadan yeni bir zamanlama davranışı eklemenin en temiz yoludur.
2. Temel Kavramlar ve Sınıflandırma
Zamanlayıcılar iki temel çalışma biçimiyle kurulur. Serbest çalışan sayaç biçiminde sayaç sıfırdan başlar ve taşma anında olay üretir. Karşılaştırma modu biçiminde ise hedef değer önceden yazılır ve sayaç o değere ulaştığında olay doğar. Kesme kaynakları da kaynağa göre ikiye ayrılır: donanım kesmesi ve yazılım kesmesi.
| Kavram | Tanım | Kim tetikler |
| Zamanlayıcı | Darbe sayan donanım birimi | Saat darbesi |
| Donanım kesmesi | Çevre biriminin doğrudan bildirdiği olay | Sayaç taşması, dış uç, hata |
| Yazılım kesmesi | Program komutuyla üretilen istek | Yazılımın kendisi |
| Kesme işleyicisi | Kesme geldiğinde çalışan kod | Olay anı |
| Olay bayrağı | Oluşan olayı işleyiciye bildiren işaret | Kesme kaynağı |
Kesme işleyicisi kendi içinde de iki farklı amaçla kurulur. Kısa işleyici yalnızca bir bayrağı kaldırır ve çıkar; gerçek veri işleme ana döngüye bırakılır. Uzun işleyici ise olayı baştan sona işler; bu biçim ancak işleyicinin süresi denetimle ölçülüyorsa kullanılmalıdır. İkisi arasındaki seçim, projenin zamanlama gereksinimine göre yapılır.
3. Basit Örnek ve Adım Adım Çözüm
Örnek: 1 kHz hızında çalışan bir zamanlayıcı kesmesi kurulacak. Kurgu şu adımlarla ilerler:
- Saat hızını ve kullanılacak zamanlayıcıyı belirle.
- Saat bölücüsünü hedeflenen aralığa göre seç.
- Karşılaştırma değerini yazarak olay anını tanımla.
- Kesme vektör tablosuna işleyicinin adresini yerleştir.
- Kesmeyi etkinleştirip olay bayrağını temizleyerek başlat.
Adım adım ilerleyen bu kurulumda saat bölücüsü sayacın hızını doğrudan belirler. Bölücü 64 seçildiğinde sayaç altmış dört kat daha yavaş sayar; aynı karşılaştırma değeri için geçen süre de o kat kadar uzar. Bu ilişkiyi bilmek, hedeflenen aralığa ulaşmak için gereken bölücüyü doğrudan seçmeyi sağlar.
4. İleri Örnek ve Saha Uygulaması
Saha uygulamasında bir su deposunun seviyesi düzenli aralıklarla ölçülmek istenir. Sensör okumasının kesme içinde başlatılması, ana döngüdeki ekran ve haberleşme işlerini bekletmez. Ölçüm sonucu bir tampona yazılır, ana döngü tamponu boş bulduğunda veriyi alır. Bu düzende ölçüm sıklığı ile ana programın çalışma payı birlikte korunur.
| Ölçüt | Kesmesiz düzen | Kesmeli düzen |
| Bekleme sırasında işlemci | Boşta döner | Ana işi sürdürür |
| Ölçüm sıklığı | Döngü uzunluğuna bağlıdır | Kesme aralığıyla belirlenir |
| Gecikme yanıtı | Bekleme bitene kadar gecikir | Anında verilir |
| Kod karmaşıklığı | Düşük | Orta, yorum gerektirir |
Böyle bir düzende en sık görülen sorun, kesme sıklığının gereğinden yüksek seçilmesidir. Sıklık yükseldikçe işlemci kesmelere daha çok zaman ayırır, ana döngüde kalan süre azalır ve gecikmeler belirginleşir.
5. Karşılaştırma Tablosu ve Denetim
Bir tasarımı denetlemek için üç ölçüm birlikte yapılır: işleyicinin süresi, kesme aralığı ve toplam kesme yükü. Aşağıdaki karşılaştırma, gecikme döngüsü ile kesme arasındaki farkı ve denetim noktalarını özetler.
| Özellik | Gecikme döngüsü | Kesme |
| Yerleşim | Ana programın içinde yer alır | Ayrı işleyici olarak yazılır |
| Bekleme boyunca | İşlemci meşguldür | İşlemci diğer işleri görür |
| Yeniden başlama | Döngüden çıkınca devam eder | İşleyici bitince ana programa döner |
| Ölçüm kolaylığı | Süre doğrudan bellidir | Ölçüm sayacı gerekir |
- İşleyici içindeki süreyi ölçerek ana döngüye ayrılan payı doğrula.
- Kesme aralığını bir test çevrimiyle ölçüp tasarım değeriyle karşılaştır.
- Gözlenmeyen bir gecikmenin kaynağını bulmak için işleyiciyi kısa devreyle dene.
6. Sık Yapılan Hatalar, Özet ve Kendini Dene
En yaygın hata, uzun işlemi kesme içinde yapmaktır. Kesme sırasında işlemci başka bir işe geçemediği için ana döngü bekler; işleyici kısa tutulmadıkça yanıt gecikmesi belirginleşir. İkinci yaygın hata, kesmede değiştirilen bir değişkeni ana döngüde sıradan bir değişken gibi okumaktır. Üçüncü hata ise iki çalışma biriminin aynı sayaca erişmesidir; yarıçakışma denilen bu durumda değer yarıda kalınmış gibi görünür.
- Uzun hesabı işleyiciden çıkarıp ana döngüye taşı.
- Kesmede değişen verileri derleyicinin her kullanımda tazelemesine bırak.
- Paylaşılan sayaçlarda yazma sırasını koruyacak bir yöntem seç.
- Kesme aralığını ölçüp ana programın çalışma payını koru.
Özetle zamanlayıcı, süre veya sayaç olayını üreten donanımdır; kesme ise bu olayı işleyiciye aktaran yapıdır. Zamanlayıcı ve kesme kullanımının doğru kurulması; işleyicinin kısa tutulması, veri aktarımının tek yönlü olması ve ölçümle doğrulanmasıyla mümkündür. Kendinizi denerken bir kesme kaynağı kurup aralığını ölçün, işleyici süresini hesaplayın ve sonucu bu bölümdeki tablolarla karşılaştırın.