Mikrodenetleyicilerde Zamanlama ve Sayaçlar
Zamanlama ve Sayaçlar (Timers & Counters)
Mikrodenetleyicilerde zamanlama (timing) ve sayaçlar (counters), hassas gecikmeler oluşturmak, görevleri belirli aralıklarla çalıştırmak veya olayları saymak için kullanılır. Bu özellikler, kesintiler (interrupts), PWM sinyalleri ve olay zamanlamaları gibi birçok kritik işlemi yönetmede önemlidir.
1. Zamanlayıcılar (Timers)
Zamanlayıcılar, belirli bir süreyi takip eden ve mikrodenetleyicinin dahili saat frekansı (clock) ile çalışan donanım modülleridir. Kullanım alanları:
- Kesintiler (Interrupts)
- PWM (Darbe Genişlik Modülasyonu)
- Gecikmeler (Delays)
- Olay zamanlama (Event Timing)
- Sayısal saatler ve kronometreler
Mikrodenetleyicilerde genellikle birden fazla zamanlayıcı bulunur. Örneğin:
- 8-bit Timer → 0-255 arasında sayar.
- 16-bit Timer → 0-65535 arasında sayar.
- 32-bit Timer → Çok daha büyük sayıları takip edebilir.
a) Zamanlayıcı Çalışma Prensibi
Zamanlayıcılar, belirli bir saat sinyali (clock signal) ile çalışır. Saat sinyali, mikrodenetleyicinin içindeki osilatör tarafından üretilir ve belirli bir frekansta çalışır.
Örnek:
Bir 16 MHz saat frekansına sahip bir mikrodenetleyicide, zamanlayıcı her bir döngüde 1/16.000.000 saniyelik bir artış yapar.
Eğer bir zamanlayıcı, ön bölücü (prescaler) ile 1024'e bölünürse:
Bu, her sayaç artışının 1 / 15.625 ms süreceği anlamına gelir.
2. Sayaçlar (Counters)
Sayaçlar, bir harici kaynaktan gelen sinyalleri sayan modüllerdir. Örneğin:
- Dijital darbe sayımı
- Dış olayların tespiti (butona basma, motorun tur sayısı vb.)
- Frekans ölçümleri
Sayaçlar, harici sinyaller tarafından tetiklenirken, zamanlayıcılar genellikle mikrodenetleyicinin dahili saat kaynağını kullanır.
a) Sayaç Çalışma Prensibi
- Bir butona her basıldığında sayaç değeri 1 artar.
- Bir motorun döngüsünü ölçmek için, bir manyetik sensör kullanılarak her turda bir darbe (pulse) sayılabilir.
Örnek: Motor devrini ölçmek için sayıcı kullanma
- Manyetik sensör her tam turda 1 darbe üretir.
- 60 saniye boyunca sayaç artışı sayılır.
- Sayaç değeri 60 ile çarpılarak RPM (Revolutions Per Minute - Dakikadaki Devir) hesaplanır.
3. Zamanlayıcı Modları
Mikrodenetleyicilerde zamanlayıcılar genellikle üç farklı modda çalışır:
a) Normal Mod
- Zamanlayıcı belirlenen değere ulaştığında sıfırlanır ve tekrar saymaya başlar.
- Kesinti (interrupt) oluşturmak için kullanılır.
- Gecikme üretme işlemlerinde sıkça kullanılır.
b) CTC Modu (Clear Timer on Compare Match)
- Sayaç belirli bir eşleşme değerine ulaştığında sıfırlanır.
- Belirli bir sürede kesme üretmek için idealdir.
- PWM üretmek için kullanılabilir.
c) PWM Modu (Pulse Width Modulation)
- Analog sinyal üretmek için kullanılır.
- Motor hız kontrolü, LED parlaklık kontrolü gibi uygulamalarda yaygındır.
4. Ön Bölücü (Prescaler) ve Zamanlayıcı Hesaplamaları
Zamanlayıcıların çalışma hızını kontrol etmek için ön bölücü (prescaler) kullanılır.
Ön bölücü, zamanlayıcıyı daha yavaş çalıştırarak zaman aralıklarını uzatmaya yarar. Yaygın ön bölücü değerleri: 1, 8, 64, 256, 1024.
📌 Örnek:
Eğer bir zamanlayıcı 16 MHz'de çalışıyorsa ve 1024 ön bölücü kullanılıyorsa:
Bu durumda zamanlayıcı her bir artışta yaklaşık 64 mikro saniye sürecektir.
5. Kesintilerle (Interrupts) Zamanlayıcı Kullanımı
Kesintiler, mikrodenetleyicinin belirli bir süre sonunda bir işlem yapmasını sağlar.
📌 Örnek: 1 saniyede bir LED yakıp söndürme (Timer Interrupt)
const int ledPin = 13;
void setup() {
pinMode(ledPin, OUTPUT);
noInterrupts(); // Kesintileri devre dışı bırak
TCCR1A = 0; // Timer1 yapılandırması
TCCR1B = 0;
TCNT1 = 3036; // 1 saniyelik gecikme için başlangıç değeri
TCCR1B |= (1 << CS12); // 256 ön bölücü
TIMSK1 |= (1 << TOIE1); // Timer overflow kesmesini etkinleştir
interrupts(); // Kesintileri etkinleştir
}
ISR(TIMER1_OVF_vect) {
TCNT1 = 3036; // Yeniden başlat
digitalWrite(ledPin, !digitalRead(ledPin)); // LED durumunu değiştir
}
void loop() {
}
Açıklama:
- 1 saniyede bir kesme (interrupt) oluşturulur.
- Her kesmede LED durumu değiştirilir (yak/söndür).
6. Uygulama Alanları
Kullanım Alanı | Açıklama |
---|---|
Zaman Gecikmesi (Delay) | Belirli bir süre bekleme oluşturur. |
PWM Sinyalleri | Motor hız kontrolü, LED parlaklık ayarlama. |
Saat ve Kronometre | Gerçek zamanlı sayaçlar oluşturma. |
Kesme (Interrupt) Kullanımı | Belirli aralıklarla olay tetikleme. |
Frekans Ölçümü | Dış sinyallerin frekansını hesaplama. |
Dijital Olay Sayma | Butona basma sayısı, motor devri ölçme. |
Sonuç
- Zamanlayıcılar, belirli periyotlarla işlem yapmak için kullanılır.
- Sayaçlar, harici sinyalleri saymak için kullanılır.
- Kesintiler (Interrupts) ile zamanlayıcılar belirli aralıklarla işlem yapabilir.
- Ön bölücü (Prescaler), zamanlayıcı hızını ayarlamak için kullanılır.
- PWM çıkışı, analog sinyaller üretmek için kullanılabilir.
Bu bilgilerle mikrodenetleyici projelerinde zamanlama işlemlerini verimli bir şekilde kullanabilirsiniz! 🚀
Yorumlar
Yorum Gönder