Gömülü Sistemler - Zamanlayıcı / Sayaç
Bir timerzaman aralıklarını ölçmek için kullanılan özel bir saat türüdür. Geçen süreyi ölçmek için sıfırdan yukarıya doğru sayan bir zamanlayıcıya genelliklestopwatch. Belirli bir zaman aralığından geri sayan ve bir zaman gecikmesi oluşturmak için kullanılan bir cihazdır, örneğin, bir kum saati bir zamanlayıcıdır.
Bir counterbir saat sinyaline göre belirli bir olay veya işlemin kaç kez gerçekleştiğini saklayan (ve bazen görüntüleyen) bir cihazdır. Mikrodenetleyicinin dışında meydana gelen olayları saymak için kullanılır. Elektronikte sayaçlar, flip-flop gibi yazmaç tipi devreler kullanılarak oldukça kolay bir şekilde uygulanabilir.
Zamanlayıcı ve Sayaç Arasındaki Fark
Bir zamanlayıcıyı sayaçtan ayıran noktalar aşağıdaki gibidir -
Zamanlayıcı | Sayaç |
---|---|
Kayıt, her makine çevrimi için artırıldı. | Kayıt, harici bir giriş pinine (T0, T1) karşılık gelen 1'den 0'a geçiş dikkate alınarak artırılır. |
Maksimum sayım oranı, osilatör frekansının 1 / 12'sidir. | Maksimum sayım oranı, osilatör frekansının 1 / 24'üdür. |
Bir zamanlayıcı, dahili saatin frekansını kullanır ve gecikme üretir. | Bir sayaç, darbeleri saymak için harici bir sinyal kullanır. |
8051'in Zamanlayıcıları ve İlişkili Kayıtları
8051'de iki zamanlayıcı vardır, Zamanlayıcı 0 ve Zamanlayıcı 1. Zamanlayıcı veya olay sayaçları olarak kullanılabilirler. Hem Zamanlayıcı 0 hem de Zamanlayıcı 1 16 bit genişliğindedir. 8051, 8 bitlik bir mimariyi izlediğinden, her 16 bit'e düşük baytlı ve yüksek baytlı iki ayrı yazmaç olarak erişilir.
Zamanlayıcı 0 Kayıt
Zamanlayıcı 0'ın 16 bitlik kaydına düşük ve yüksek bayt olarak erişilir. Düşük baytlı yazmaç TL0 (Zamanlayıcı 0 düşük bayt) ve yüksek baytlı yazmaç TH0 (Zamanlayıcı 0 yüksek bayt) olarak adlandırılır. Bu kayıtlara diğer kayıtlar gibi erişilebilir. Örneğin talimatMOV TL0, #4H değeri, Zamanlayıcı # 0'ın alt baytına taşır.
Zamanlayıcı 1 Kaydı
Zamanlayıcı 1'in 16 bitlik kaydına düşük ve yüksek bayt olarak erişilir. Düşük baytlı yazmaç TL1 (Zamanlayıcı 1 düşük bayt) ve yüksek baytlı yazmaç TH1 (Zamanlayıcı 1 yüksek bayt) olarak adlandırılır. Bu kayıtlara diğer kayıtlar gibi erişilebilir. Örneğin talimatMOV TL1, #4H değeri Zamanlayıcı 1'in alt baytına taşır.
TMOD (Zamanlayıcı Modu) Kaydı
Hem Zamanlayıcı 0 hem de Zamanlayıcı 1, çeşitli zamanlayıcı çalışma modlarını ayarlamak için aynı kaydı kullanır. Zamanlayıcı 0 için alttaki 4 bitin ve Zamanlayıcılar için üstteki dört bitin ayrıldığı 8 bitlik bir kayıttır. Her durumda, alttaki 2 bit, zamanlayıcı modunu önceden ayarlamak için kullanılır ve üstteki 2 bit, konumu belirlemek için kullanılır.
Gate - Ayarlandığında, zamanlayıcı yalnızca INT (0,1) yüksekken çalışır.
C/T - Sayaç / Zamanlayıcı seçme biti.
M1 - Mod bit 1.
M0 - Mod bit 0.
KAPI
Her zamanlayıcının bir başlatma ve durdurma aracı vardır. Bazı zamanlayıcılar bunu yazılımla, bazıları donanımla yapar ve bazılarının hem yazılım hem de donanım kontrolleri vardır. 8051 zamanlayıcılar hem yazılım hem de donanım denetimlerine sahiptir. Bir zamanlayıcının başlatılması ve durdurulması, talimat kullanılarak yazılım tarafından kontrol edilir.SETB TR1 ve CLR TR1 zamanlayıcı 1 için ve SETB TR0 ve CLR TR0 zamanlayıcı 0 için.
SETB komutu onu başlatmak için kullanılır ve CLR komutu ile durdurulur. Bu talimatlar, TMOD kaydında GATE = 0 olduğu sürece zamanlayıcıları başlatır ve durdurur. Zamanlayıcılar, TMOD kaydında GATE = 1 yapılarak harici bir kaynak tarafından başlatılabilir ve durdurulabilir.
C / T (SAAT / ZAMANLAYICI)
TMOD kaydındaki bu bit, bir zamanlayıcının bir zamanlayıcı olarak kullanılıp kullanılmayacağına karar vermek için kullanılır. delay generator veya bir event manager. C / T = 0 ise, zamanlayıcı gecikme üretimi için bir zamanlayıcı olarak kullanılır. Zaman gecikmesini yaratan saat kaynağı, 8051'in kristal frekansıdır. C / T = 0 ise, 8051'e eklenen kristal frekansı, 8051 zamanlayıcısının düzenli bir aralıkta tıklanma hızına da karar verir.
Zamanlayıcı frekansı her zaman 8051'e bağlı kristalin frekansının 1 / 12'si kadardır. Çeşitli 8051 tabanlı sistemlerin XTAL frekansı 10 MHz ila 40 MHz arasında olmasına rağmen, normalde 11.0592 MHz XTAL frekansı ile çalışıyoruz. 8051.XTAL = 11.0592 seri haberleşmesi için baud hızının 8051 sisteminin PC ile hatasız haberleşmesine izin vermesidir.
M1 / M2
M1 | M2 | Mod |
---|---|---|
0 | 0 | 13 bit zamanlayıcı modu. |
0 | 1 | 16 bit zamanlayıcı modu. |
1 | 0 | 8 bit otomatik yeniden yükleme modu. |
1 | 1 | Dökülen mod. |
Farklı Zamanlayıcı Modları
Mod 0 (13 Bit Zamanlayıcı Modu)
Mod 0'da hem Zamanlayıcı 1 hem de Zamanlayıcı 0, 8 bitlik sayaçlar olarak çalışır (32'ye bölünmüş ön ölçekleyici ile). Zamanlayıcı kaydı, 8 bitlik TH1'den ve TL1'in alt 5 bitinden oluşan 13 bitlik bir kayıt olarak yapılandırılır. TL1'in üst 3 biti belirsizdir ve ihmal edilmelidir. Çalıştırma bayrağının (TR1) ayarlanması kaydı temizlemez. Sayaç tüm 1'lerden tüm 0'lara döndüğünde, zamanlayıcı kesinti bayrağı TF1 ayarlanır. Mod 0 işlemi, Zamanlayıcı 0 için olduğu gibi Zamanlayıcı 1 için de aynıdır.
Mod 1 (16 Bit Zamanlayıcı Modu)
Zamanlayıcı modu "1", 16 bitlik bir zamanlayıcıdır ve yaygın olarak kullanılan bir moddur. 16 bitin tümünün kullanılması dışında 13 bitlik modla aynı şekilde çalışır. TLx, 0'dan başlayarak maksimum 255'e kadar artırılır. 255 değerine ulaşıldığında, TLx 0'a sıfırlanır ve ardından THx, 1 artırılır. Tam 16 bit zamanlayıcı olduğu için, zamanlayıcı 65536'ya kadar farklı değer içerebilir ve 65.536 makine çevriminden sonra tekrar 0'a taşacaktır.
Mod 2 (8 Bit Otomatik Yeniden Yükleme)
Her iki zamanlayıcı kaydı, otomatik yeniden yüklemeli 8 bitlik sayaçlar (TL1 ve TL0) olarak yapılandırılır. TL1'den (TL0) taşma, TF1'i (TF0) ayarlar ve ayrıca yazılım tarafından önceden ayarlanmış olan Th1 (TH0) içeriğiyle TL1'i (TL0) yeniden yükler. Yeniden yükleme, TH1'i (TH0) değiştirmeden bırakır.
Otomatik yeniden yükleme modunun avantajı, zamanlayıcının her zaman 200 ila 255 arasında bir değer içermesidir. 0 veya 1 modunu kullanırsanız, taşmayı görmek için kodu kontrol etmeniz gerekir ve bu durumda, zamanlayıcıyı 200'e sıfırlayın. Bu durumda, değerli talimatlar değeri kontrol edin ve / veya yeniden yükleyin. Mod 2'de, mikro denetleyici bununla ilgilenir. Mod 2'de bir zamanlayıcı yapılandırdıktan sonra, zamanlayıcının dolup dolmadığını kontrol etme konusunda endişelenmenize veya değeri sıfırlama konusunda endişelenmenize gerek yok çünkü mikrodenetleyici donanımı sizin için her şeyi yapacaktır. Otomatik yeniden yükleme modu, ortak bir baud hızı oluşturmak için kullanılır.
Mod 3 (Ayrık Zamanlayıcı Modu)
Zamanlayıcı modu "3" olarak bilinir split-timer mode. Zamanlayıcı 0, mod 3'e yerleştirildiğinde, iki ayrı 8 bitlik zamanlayıcı haline gelir. Zamanlayıcı 0, TL0 ve Zamanlayıcı 1, TH0'dır. Her iki zamanlayıcı da 0'dan 255'e kadar sayar ve taşma durumunda tekrar 0'a sıfırlayın. Zamanlayıcı 1'in tüm bitleri şimdi TH0'a bağlanacaktır.
Zamanlayıcı 0 bölünmüş moddayken, gerçek Zamanlayıcı 1 (yani TH1 ve TL1) 0, 1 veya 2 modlarında ayarlanabilir, ancak bunu yapan bitler artık TH0'a bağlı olduğundan başlatılamaz / durdurulamaz. Gerçek zamanlayıcı 1, her makine döngüsünde artırılacaktır.
Bir Zamanlayıcıyı Başlatma
Zamanlayıcı moduna karar verin. Sürekli çalışan ve harici pinlerden bağımsız olan 16 bitlik bir zamanlayıcı düşünün.
TMOD SFR'yi başlatın. TMOD'nin en düşük 4 bitini kullanın ve Zamanlayıcı 0'ı düşünün. İki biti, GATE 0 ve C / T 0'ı 0 olarak tutun, çünkü zamanlayıcının harici pinlerden bağımsız olmasını istiyoruz. 16 bit modu zamanlayıcı modu 1 olduğundan, T0M1'i temizleyin ve T0M0'ı ayarlayın. Etkili olarak, açılacak tek bit TMOD'un 0. bitidir. Şimdi aşağıdaki talimatı uygulayın -
MOV TMOD,#01h
Şimdi, Zamanlayıcı 0 16 bit zamanlayıcı modunda, ancak zamanlayıcı çalışmıyor. Zamanlayıcıyı çalışma modunda başlatmak için aşağıdaki talimatı uygulayarak TR0 bitini ayarlayın -
SETB TR0
Şimdi, Zamanlayıcı 0 hemen saymaya başlayacak ve her makine döngüsünde bir artırılacak.
Bir Zamanlayıcı Okuma
16 bitlik bir zamanlayıcı iki şekilde okunabilir. Zamanlayıcının gerçek değerini 16 bitlik bir sayı olarak okuyun veya zamanlayıcının ne zaman dolduğunu tespit edin.
Zamanlayıcı Taşmasını Algılama
Bir zamanlayıcı en yüksek değerinden 0'a taştığında, mikrodenetleyici TCON yazmacındaki TFx bitini otomatik olarak ayarlar. Böylece zamanlayıcının tam değerini kontrol etmek yerine, TFx biti kontrol edilebilir. TF0 ayarlanmışsa, Timer 0 aşılmıştır; TF1 ayarlanmışsa, Zamanlayıcı 1 aşılmıştır.