Zamanlayıcı ve Gecikme Değerlerini Gömülü Mikrokontrolörlerde Hesaplamak: A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A Adım-By-Step Yaklaşım Yaklaşım Yaklaşım Yaklaşım Yaklaşım Yaklaşım Yaklaşım
Zamanlayıcı ve gecikme değerlerinin programlamaya gömülü mikro kontroller için nasıl hesaplanacağını anlamak. Bu hesaplamalar, disking LEDs gibi görevler için doğru zamanlayıcıları sağlamak, PWM sinyalleri üretmek, kesin gecikmeler yaratmak ve gerçek zamanlı kontrol sistemleri uygulamak için bir adım adım adım adım adım adım adım adım adım adım adım adım adım adım adım adım adım adım adım adım adım adım adım adım adım adım adım adım adım adım adım adım adım adım adım adım adım adım adım adım adım adım adım adım adım adım adım adım adım adım adım adım adım adım adım adım adım adım adım.
Zamanlayıcı Temelleri Mikrokontrolörlerde Anlamak
Mikrokontrolörler zamanlayıcıları integral bileşenler olarak kullanırlar, en azından bir zamanlayıcı modülüne sahip olan en modern kontrolörler onlara inşa edilmiş bir zamanlayıcıdır. Belirli bir frekansta veya aşağı yukarı doğrulayan mikro kontroller, gecikmeler, zaman aralıkları oluşturmak ve zaman aralıklarını tetikler. Zamanlayıcının kararı ve maksimum sayım, nasıl doğru bir şekilde ölçülebileceğini veya gecikmeler oluşturabileceğini belirler.
Sürekli puls akışının zamanlayıcı sayıları genellikle zamanlayıcı " saat" olarak adlandırılırken, zamanlayıcının genellikle "tcks" olarak adlandırılabileceği sabit zamanlayıcı sinyallerine göre ayarlanabilir.
Zamanr Mimari ve Bileşenleri
Tipik bir zamanlayıcı modülü, zamanlama işlevselliği sağlamak için birlikte çalışan birkaç temel bileşenden oluşur:
- [FONT=0)Timer Counter Register:[Dönetici:[Dönetici:0)[Dönetici:[Dönetici:[Dönder)
- [FONT:0)Öyle:[Döner:[Döner:[Döner:[Döncü: Giriş saati frekansının yönetilebilir bir oran için azaltılabilir bir hız frekansına indiren bir bölmek için bir bölmek için bir bölmek
- [0]Compare/Match Register: Özel olayları tetikleyen karşılaştırıldığında Mağazalar değerleri belirli olayları tetikle karşılaştırıldığında belirli olayları tetikleyecek.
- [FONT:0) Kontrol Kayıtları:[Dönetici:[Dönetici: 0,6|Dönlendirmeler, saat kaynakları ve ayarları kesmek için ayarlayın.
- [FONT=0]Status Registers:[Dönder:[Dönder:[Dönder: 1) Indicate overflow, Karşılaştırma maç ve diğer zamanlayıcı olaylar
Bir zamanlayıcı / karşılaşma modülü, saat kaynağını sistem saatinden alabilir ve bu saat pul pul pulu üzerine yapılan operasyonları gerçekleştirebilir.Bu durumda, zamanlayıcı olarak çalışmak ve zaman ölçüm işlemleri gerçekleştirmek söylenir. Sistem saati frekansı kullanıcı tarafından belirlenir ve genellikle oldukça istikrarlı olduğundan, programcı zamanlayıcı modülünü uygun bir şekilde yapılandırarak doğru zaman aralıkları gerçekleştirebilir.
Prescalers in Timer Hesapları
Örneğin, 16 MHz sistemi frekansı ve 2'nin prescaler seviyesi ile, zamanlayıcı giriş frekansı 8 MHz olacaktır. Prescaler, zamanlayıcı konfigürasyondaki en önemli elementlerden biridir, çünkü zamanlama çözünürlüğünü maksimum zamanlayıcıya karşı dengelemenize izin verir.
Prescaler Limitlerini Anlamak
Bazı prescalers, sistemin saatinin sadece güç-topları ile sınırlı, bu yüzden F (sistem saati) veya F/2 veya F/4 veya F/8 veya F/16'yi alabilirsiniz. Bazı prescalers bu sadece bazı güç-of-2 bölümlerinden daha sınırlı, hepsi mevcut değildir. AVR prescalerss, en çok AVR bölümlerinden, aldığınız tek prescaler.
Prescaler'in gelen saati böltüğü sayıyı değiştirerek, daha hızlı bir zaman çözünürlüğünü sağlayabiliriz, ancak sistem saati frekansı aynı kalır. Zamanlayıcı saati frekansı aynı kalır. Zamanlayıcı saati frekansı değiştirme yeteneği, zaman çizelgesi için en uygun frekansı seçmemize izin verir.
Prescaler Trade-offs
Prescaler, istenen bir etki elde etmek için karar ve maksimum süre arasındaki oranı gözden geçirmektedir. önceden ölçeklen bir değeri seçerken, bu faktörleri göz önünde bulundurun:
- [FONT=0)Resolution Gereksinimler:[Dönetici:[Dönlendirmeniz gerekeni ne kadar kesin yapar?
- [0]Maximum Süresi:[[Dönem: 1) Ne üretmek zorundasınız?
- [0]Timer Bit Genişlik:[Dönem:[Dönem:[Dönem:0)[Dönemliler[0]
- [FONT:0]Available Prescaler Değerleri:) Birçok mikrokontrolde Sınırlı seçenek
Temel Zamanlayıcı Formulaleri Hesaplamak
Zamanlayıcı sayılarını hesaplamak için temel formül:
[0]Timer Count = Desired Gecikme × Zamanlayıcı Frekans[Dönem: 1)
Nerede:
- [0]Desired Gecikme[[Dönetici:0) saniye içinde gecikmek istediğiniz zamandır.
- [FONT=0)Timer Frekans[[Dönetici:0) ], önceden ölçeklen değer değerlerle bölünmüş olan saat frekansıdır.
Timer Frekans = CPU Saat frekansı / Prescaler. Bu, tüm zamanlayıcı hesaplamalar için en temel ve önemli formüldür.
Zaman Hesaplamak Zaman
Frekans temel olarak bir saniye içinde bir şeylerin sayısıdır. 20MHz saat frekansı aslında bir saniyede 20 × 106 saat döngüsüdür. Bir saat döngüsü için aldığınız zaman frekansın tersine almak zorunda kalırsınız.Bu durumda 1/20MHz olacaktır.
Prescaling sonrası kene başına zaman formülü:
[0]Zamanın · 1 / Zamanlayıcı Frekans = Prescaler / CPU Saat Frekansı).
Bu değer, zamanlayıcı karşının her bir artışı için ne kadar zaman geçtiğini temsil eder.
Gerekli Zamanlayıcı Kontları Hesaplamak
Prescaler ve zamanlayıcı (karşı) ayarları üç parça bilgi gerektirir: Mikrokontrollü saat frekansı (Fclk), istenen çıktı etkinliği frekansı veya süresi (Fout veya Tout) ve zamanlayıcının çözünürlüğü (bit-altı) ve işletim modu.
Klan başına zaman bildiğinizde, istenen gecikmeniz için kaç tane keneye ihtiyaç olduğunu hesaplayabilirsiniz:
[FONT:0)Required Ticks = Desired Gecikme / Time per Tick[DÜT:1)
Ya da formülleri birleştirin:
[FONT=0)Required Ticks = (Desired Gecikme × CPU Saat Frekansı) / Prescaler[[Dön 1: 1)
Step-by-Step Hesaplama Örnek
Hesaplama sürecini göstermek için ayrıntılı bir örnekle çalışalım. Bir mikrokontrolör 16 MHz'de çalışır ve 1 milisaniyenin gecikmesini sağlamak için 64'ün prescaler kullanır:
Adım 1: Zamanlayıcı Frekansı Hesaplayın
[0]Timer Frekansı = CPU Saat / Prescaler).
[0]Timer Frekansı = 16.000.000 Hz / 64 = 250.000 Hz
Bu, ikinci başına 250.000 kez artan zaman anlamına gelir.
Adım 2: Zaman Per Tick
[FONT=0)Time per Tick = 1 / Timer Frekans).
[0]Zaman · 1 / 250,000 Hz = 4 mikrosaniye[Dönem: 1)
Zamanlayıcı karşının her artışı, 4 mikrosaniyeyi elap zamanın temsil eder.
Adım 3: Gerekli Zamanlayıcı Kontları Hesaplar
[0]Timer Count = Desired Gecikme / Time per Tick).
[0]Timer Count = 1 milisan / 4 mikrosaniye = 1000 μs / 4 μs = 250 sayı).
Alternatif olarak, doğrudan formülü kullanarak:
[0]Timer Count = 0.001 × 250,000 Hz = 250 sayı).
Adım 4: Zaman Sınırlarına Karşı Verify
8bit zamanlayıcı için, maksimum sayı 255. Gerekli 250 sayısı 255'ten daha az olduğundan, bu yapılandırma işe yarayacaktır. Gerekli sayının zamanlayıcının maksimum değerini aştıysa, ihtiyacınız olacaktır:
- Zamanlayıcı frekansı azaltmak için prescaler değerini artırmak
- Daha büyük bir zamanlayıcı kullanın (16-bit yerine 8bit)
- Yazılımda bir karşı ile birden fazla zamanlayıcı aşırı akış kullanın
Farklı Zamanlayıcı Modes ile çalışmak
Mikrokontroller genellikle birkaç zamanlayıcı işletim modlarını destekler, her biri farklı uygulamalar için uygundur. Bu modları anlamak etkili zamanlayıcı kullanım için önemlidir.
Normal Mode (Overflow Mode)
Normal Mode'de, sayma yönü net bir şekilde yukarı çıkıyor (aslında) ve bu noktada TOV1 ve süreç tekrarlar. 0xFF'ye gittiğinde ve 0x00'a kadar yuvarlandığında, Timer/Counter Overflow Flag (TOV1).
Zamanlayıcı sayacı her saat pulu ile sayılır. max değerini ulaştığında (8bit için 255 gibi), yukarı akışlar ve 0'a sıfırlanır, aşırı akış bayrağını ayarlar ve etkinleştirirse bir kesintiye neden olur.
Normal Mode'de, istenen gecikmeye ulaşmak için zamanlayıcı sayacı kayıt yaptırmanız gerekir.Zamanlayıcı aşırı yukarı kadar sayıldığından, istenen sayıyı 16-bit zamanlayıcılar için yeniden yüklemeniz gerekir veya 256, 8bit zamanlayıcı için istenen sayıyı eksiltebilirsiniz.
CTC Mode (Clear Timer on Karşılaştırma Maç)
CTC modunda, zamanlayıcı ilk değer 0'dan Karşılaştır maç kaydı değerine kadar sayılır, bir karşılaştırma maç gerçekleştiğinde, bir sonraki saat zamanlayıcı 0'a sıfırlar. Bu mod, hassas frekanslar ve periyodik kesmeler için özellikle kullanışlıdır.
CTC modu hesaplamaları basitleştirir çünkü doğrudan ihtiyacınız olan akış sayısına kıyasla karşılaştırma değerini ayarlarsınız, önceden yük değerini hesaplamaktan ziyade. zamanlayıcı, karşılaştırma değerine ulaşırken otomatik olarak sıfırlar yapar, kare dalgalar ve periyodik sinyalleri oluşturmak için ideal hale getirir.
PWM Modes
Pulse Genişlik Modulation (PWM) modları değişken görev döngüleri ile sinyalleri üretmek için zamanlayıcılar kullanır. TIM Pulse = 500 ve dönem 1000, kanal 50/50 görev döngüsü ile 1 878 frekansını üretecektir. PWM motor kontrolü, LED dkkk, ve analog sinyal nesli için gereklidir.
PWM modunda, hem dönem (auto-reload değeri) hem de nabız genişliği (orta değer) yapılandırıyorsunuz.
[0]Duty Döngüsü (%) = (Compare Value / Per Değer) × 100).
Gelişmiş Zamanlayıcı Teknikleri
Timer Overflows ile Uzun Gecikmeler
Hesap değeri mevcut kayıt alanı içinde karşılamak için çok büyük olduğunda bazı durumlar vardır (prescaler, postscaler ve zamanlayıcı kayıt). Bu, zaman aralığının gerekli zaman aralığının, zamanlayıcının üretmek için çok büyük olduğu anlamına gelir.Bu durumda ISR'de bir karşı koymak zorundasınız, böylece zaman kesintisi gerçek ISR'nin gerçek ISR'nin infaz edilmesinden önce belirli bir süre önce belirli bir sayı olur.
Örneğin, zamanlayıcınızın sadece 10ms kesintisi oluşturabileceği 1 saniyelik bir gecikme oluşturmak için, yazılımda 100 zamanlayıcı kesinti sayabilirsiniz:
- 10ms Overflow için zamanlayıcı
- Zamanlayıcı ISR'de bir karşı değişkeni
- 100'e ulaştığında, 1 saniyelik görevini yerine getirin
- Karşıyı yeniden açın ve tekrarlayın
Repetition Counters kullanarak
Tekrar karşıtlığın değeri N ise, işlemci her N + 1 zamanlayıcı aşırı akışları kesmeye çağıracaktır. Bu özellik, STM32 gibi gelişmiş mikro kontroller için mevcut, yazılım müdahale olmadan donanıma dayalı aşırı akış saymalarını sağlayacaktır.
Zamanlayıcı için formül tekrar bir karşı frekans kesmek:
[Dönemli Frekans: Zamanlayıcı Saat / [Prescaler + 1) × (Period + 1) × (Repetition Counter + 1)).
Yazılar
Yazarlar, sadece zamanlayıcının sayma oranını etkilemeden iki kez sıfıra ulaşmalı.Eğer karşıtlık, zamanlayıcının ayarlanma hızını etkilemeden kesintiye uğraması gerekir.
Pratik Örnekler Uygulama Örnekleri
Örnek 1: Timer Overflow ile LED Blinking
8bit zamanlayıcı ile 16 MHz'de çalışan bir AVR mikro kontrol cihazı kullanarak 500ms LED diski uygulamayalım:
[FONT:0)Requirements:[Dönem:[Dönem: 1)
- CPU Saati: 16 MHz
- Arzud Gecikme: 500 ms
- Timer: 8bit (0-255)
[0]Calculation Process:[Dönem: · 1 )
İlk olarak, uygun bir prescaler seçin. bir 1024 prescaler:
Timer Frekans = 16,000,000 / 1024 = 15,625 Hz
)Time per Tick = 1 / 15,625 = 64 μs
500ms gecikmesi için:
)Required Ticks = 500.000 μs / 64 μs = 7,812.5 kenes = 7,812.5 kenes
7,812, 8bit zamanlayıcımızı en fazla (255) aşıyorsa, birden fazla aşırı akış kullanmamız gerekiyor: Gerekli akışları hesaplamak için gerekli:
Overflows = 7,812 / 256 ⁇ 30.5 Overflows
30 tam fazla akışlar artı kısmi bir sayı kullanabiliriz. 30 Overflows: 30 × 256 = 7,680 keneler. Kalan ticks: 7,812 - 7,680 = 132 ticks. Son aşırı akış için Preload değeri: 256 - 132 = 124
Örnek 2: CTC Mode ile Precise Frekansını Gening
Zamanlayıcı 1 CTC Mode'de yapılandırılan 250Hz kare dalga oluşturmak için, zamanlayıcı ilk değer 0'dan Karşılaştırma maç kaydı değeri 0'a kadar puan alır. Timer 1 16 inç ve 1 prescaler ile saat = 62.5 nanosaniye = 32000.
Karşılaştırma maçı kaydı (OCR1A) 32000'e ayarlayın ve maçı karşılaştırmak için zamanlayıcıyı yapılandırın. Donanım otomatik olarak yazılım müdahalesi olmadan kare dalga yaratır.
Örnek 3: STM32 Timer Build
Saat frekansı 80 MHz'e eşit, 79'un prescaler'i, 9999'un (zamanlı dönem) ve sıfırın tekrar tekrar karşı, zamanlayıcının frekansı 100 Hz.
Verification:[Dönem:0) Prescaler = 80.000.000 / (79 + 1) = 1.000.000 Hz
) Interrupt Frekans = 1.000.000 / (9999 + 1) = 100 Hz
Strupt Dönemi = 1 / 100 = 10 ms
STM32 zamanlayıcıları için TIM Prescaler = N - 1, Bus/TIM saatini N'ye ayırıyor ve TIM Period = N - 1, N'ye kadar 1'i iki değere eklediğimizi ayırıyor.
Kodlama Zamanlayıcı Gecikmeleri Kod
Zamanlayıcı sayım bilindiğinde, zamanlayıcı kayıtlarını buna göre yapılandırın. Uygulama süreci genellikle birkaç adım içerir:
Yapılandırma Adımları
- [FONT=0) Timer ve Mode:[Dönetici:[Dönetici: 1) uygun bir zamanlayıcı (8-bit veya 16-bit) ve işletim modu (Normal, CTC, PWM) seçin.
- [FONT:0)Configure Prescaler:[Dönetici:[Dönetici:0)))) Zamanlayıcı kontrol kayıt defterinde ön değer belirler.
- [FONT:0)Load Counter/Compare Values: Başlangıç başlangıç kayıt veya hesaplanan değerlerle maç kaydı hesaplamak.
- [FONT:0)Enable Interrupts (eğer gerekliyse):) Configure kesintisi biraz sağlar ve ISR'yi uygular
- [FONT=0)Başlangıç Zamanı:[Dönetici:[Dönetici:0)
Zamanlayıcının sayı kaydına hesaplanan değeri yükleyin. Zamanlayıcıya başlayın ve üst akışlara kadar bekleyin veya set değerine ulaşırsınız. Bu hesaplanan zamanlayıcı sayılarına göre kesin bir gecikme yaratır.
Interrupt-Driven Yaklaşımları
Zamanlayıcı olayları tespit etmek için iki birincil yöntem vardır:
[FONT:0)Polling Method:[Dönetici:[Dönetici:0) Ana program sürekli bir döngüdeki zaman akışı bayrağını kontrol eder. Bu yaklaşım basit ama atık CPU döngüleridir ve bayrak yeterince sık kontrol edilmezse olayları kaçırabilir.
[FONT=0]Strupt Yöntemi:[Dönemli: 0 3) Zamanlayıcılar STM32 mikrokontrolörler, sürekli CPU anket olmadan belirli görevleri yürütmek için güçlü bir yol sağlar.Saçlama zamanlayıcı kesintiler, geliştiriciler dönemsel veri örneği, zaman tabanlı olay tetikler ve gerçek zamanlı sistem zamanlaması gibi görevler için verimli ve duyarlı gömülü uygulamalar yaratabilir.
Verimli Zamanlayıcı ISRs
Karmaşık operasyonları önlemek için kısa ve hızlı tutun. Sadece temel eylemleri uygulayın ve daha karmaşık işleme ana programa daha karmaşık hale getirmek için. gecikme veya döngüler gibi aramalardan kaçının, ISR ve ana program arasında paylaşılan değişkenler, onları optimize etmek için değişken olarak ilan edilmelidir.
Zamanlayıcı ISR'ler için en iyi uygulamalar şunları içerir:
- En az 10-20 mikrosaniye altında infaz zamanı devam edin)
- Paylaşılan değişkenler için uçucu anahtar kelime kullanın
- Clear cut bayrakları derhal kesir
- Karmaşık operasyonları gerçekleştirmek yerine bayrakları veya güncelleştirme sayacıları ayarlayın
- İşlev aramalarından kaçının, özellikle işlevleri engellemek
- Overflow modu kullanarak zamanlayıcı değerleri yeniden yükleme
Yaygın Zamanlayıcı Uygulamaları
Periyodik Görevi Scheduling
Zamanlayıcı kesintiler, sabit bir hızda tutarlı infaz oranlarına sahip olan periyodik görevleri oluşturmak için yaygın olarak kullanılır. Örneğin, gömülü bir uygulama, her 100 milisaniyeye odaklanmaya izin verir, ADC dönüşümlerini sabit bir hızda korurken, sistem tarafından gerekli olan yazılım zamanlayıcıları ve karşıtları sistem tarafından belirlenen süreleri kontrol eder.
Gerçek Zamanlı İşletim Sistemi
Bir zamanlayıcı kene ISR, birçok insan için temel bir bina bloğudur, belki de çoğu, gömülü sistemler. 10ms siparişinde bir zamanlayıcı, çeşitli görevler için faydalıdır, çünkü CPU döngülerinin çoğunu başka bir çalışmaya doğru götürmesine izin verirken hala iyi bir yanıt verir.
Zamanlayıcılar genellikle gerçek zamanlı sistemlerde kullanılır, görevlerin tam olarak tanımlanmış aralıklarda uygulanması gerekir.Böyle sistemlerde, zamanlama doğruluğu önemlidir ve zamanlayıcılar görev zamanlamasını sağlamak için temel sağlar. Düzenli kesintiler (ticks) sabit bir aralıkta gerçek zamanlı bir işletim sistemi (RTOS) zamanlama testi veya zaman tabanı için zamanlayıcılar.
PWM Signal Generation
Zamanlayıcılar motor kontrolü, LED parlak kontrol ve dijital-analog dönüştürmesi için kullanılan PWM sinyalleri oluşturmak ve karşılaştırma değerini ayarlamak için gereklidir, tam olarak çıktı sinyalinin görevini kontrol edebilirsiniz.
Motor hızı kontrolü için, tipik PWM frekansları 1 kHz'den 20 kHz'ye kadar aralığı. İstenen frekansınıza ve kararlarınıza dayanarak gerekli zaman ayarlarını hesaplayabilirsiniz. Örneğin, 16 MHz saat ve 8bit çözünürlük (256 adım), yaklaşık 62.5 kHz PWM frekansına prescaler olmadan ulaşabilir veya 4. kHz.
Watchdog Timer Uygulama
Bir saatdog zamanılayıcı, sistemdeki sürekli olarak program tarafından sıfırlanmamışsa, sistem yeniden kurulmasına yardımcı olur.Bu özellik, MCU'yu otomatik olarak yeniden başlatmaya yardımcı olursa, sorumlu tutma süresine ihtiyaç duyar. Proper watchdog timer yapılandırması normal işlem için yeterince uzun süre hesaplama gerektirir, ancak sistem başarısızlıklarını hızla yakalamak için yeterince kısa sürede.
Problemleri ve Uygulamayı Sorun Etmek
Common Compion Hataları
Birkaç yaygın hata yanlış zamanlayıcı davranışına yol açabilir:
- [FONT:0)Off-by-One Hatas: Birçok zamanlayıcı kayıt, 99 değerinin aslında 100 sayının nerede olduğuna dair N-1 notation kullanır.
- [0]Unit Dönüşüm Hataları:[Dönem:[Dönem: 1) Mix mikrosaniyeler, milisaniyeler ve hesaplamalarda saniyeler
- [0]Integer Overflow:[[Dönemli hesaplama sonuçları değişken boyut limitleri aştı
- [[Düzük:0)Öylernek:[Dönerge:[Dönersiz değer)[Dönergesel değerler desteklenmekte olduğunda kullanılabilir.
- [FONT:0)Clock Source Confüzyon:[Dönetici:[Dönetici saat frekansını hesaplamalar (sistem saati vs periferik saat) kullanarak
Doğrulama Teknikleri
Zamanlayıcı hesaplamalarınızı ve uygulamanızı her zaman doğrulayın:
- [FONT:0)Oscilloskop Ölçümü:) Gerçek zamanlamayı ölçmek için bir oscilloskopu ile zamanlayıcı tarafından kontrol etmek için bir çıkış pinine bağlanır.
- [[Dönetici:0)Logic Analyzer:[Dönemli:[Dönemli) Zaman zaman zaman dizilerini yakalama ve beklenen değerlere doğru doğrulama
- [FONT=0) Blink Test:[DÜDÜT:1) Yaklaşık zamanlamayı doğrulamak için görünür LED bardak kullanın (insan gözü yaklaşık 10 Hz ve üstü tespit edebilir)
- [FONT:0)Serial Çıktı:[[Dönem:[Dönem: 0:0) Yazdır timestamps veya karşı değerler analiz için UART aracılığıyla analiz için UART aracılığıyla analiz için UART ile analiz edilir
- [FONT:0)Calculator Tools:[Dönetici:[Dönetici:0)[Döncüler Kullanımı:[Dönetici:0)
Saat Hassasiyeti ile Anlaşma
Gerçek dünya zamanlaması doğruluk saat kaynağına bağlıdır. İç RC osilatörler genellikle% 15% doğruluka sahiptir, dış kristaller 20-50 ppm doğruluk sağlar. hassas zamanlama uygulamaları için, her zaman dış kristal osilatör ve tasarımınızda sıcaklık varyasyonları için hesap kullanın.
Platform-Specificceptations
AVR Micronetler
Mikroçipten AVR mikrokontrolü (eski olarak Atmel) belirli zamanlayıcı özellikleri vardır. AVR örnekleri için, zamanlayıcı 1 16-bit zamanlayıcıdır.STM32 örnekleri için, zamanlayıcı 1 16-bit prescaler ile 16-bit bir zamanlayıcıdır. AVR zamanlayıcıları genellikle 1, 8, 64, 256 ve 1024 öncesi değerleri destekler.
AVR zamanlayıcı kayıtları TCCR (Timer/Counter Control Register), TCNT (Timer/Counter Register), OCR (Output Karşılaştırma Register) ve TIMSK (Timer Interrupt Maske Kayıtları) Bu kayıtların uygun zamanlayıcı konfigürasyonu için gerekli olduğunu anlamaktedir.
STM32 Mikrokontrolörler
STM32 mikrokontrolörleri 16-bit prescalerse sahiptir, böylece sistem saati 1 ve 65536 arasında herhangi bir değerle bölünebilir. Bu esneklik, daha yüksek esneklik nedeniyle çalışmak için çok güzel.Bu esneklik, sabit zaman yapılandırmalarına kıyasla daha kesin bir zamanlama yapılandırmalarına izin verir.
STM32 zamanlayıcıları için, önceden ölçekleyicileri, bu değerleri otomatik olarak hesaplayan grafik konfigürasyon araçları seçin.
PIC Micronetler
Microchip'dan gelen PIC mikrokontroller hem prescalers hem de bazı zamanlayıcılar üzerinde ön performans gösterir, ek esneklik sağlar. Timer0 modülü genellikle temel zamanlama işlemleri için kullanılır, Timer1 ve Timer2 dış saat girişleri ve dönem kayıtları dahil daha gelişmiş özellikler sunar.
PIC zamanlayıcılar genellikle 4:1 bir talimat saati bölmek, yani zamanlayıcı saat bir dörtte osilatör frekansında çalışır. Her zaman belirli PIC cihazınız için gerçek zamanlı saat frekansı belirlemek için veri tablosuna danışır.
Arduino Platform
Timer0, Arduino işlevleri tarafından kullanılan 8bit zamanlayıcıdır (Müzer) ve mikros(). Timer1, Z() kütüphanesi tarafından kullanılan 16 bit zamanlayıcıdır ve Timer2, Tone() kütüphanesi tarafından kullanılan 8bit zamanlayıcıdır.
Gelişmiş Konular ve Optimizasyon
Atom Operasyonları ve Eleştirel Bölümler
Multi-bayt zamanlayıcısına her iki ana koddan kayıt yaptırırken, atomik işlemleri kullanın veya ırk koşullarını önlemek için geçici olarak kesintiye uğratın. 8-bit mikrode 16-bit zamanlayıcılar için, okuma veya yazma değeri iki 8-bit kayıt gerektirir, bu da, sınırsız okuma değerlerini önlemek için yapılır.
Timer Senhronization
Bazı uygulamalar senkronizasyonda çalışmak için birden fazla zamanlayıcı gerektirir. Gelişmiş mikrokontroller, bir zamanlayıcının başka bir şeyi tetikleyebileceği veya sıfırlaması gereken zamanlayıcılar sağlar. Bu karmaşık PWM kalıpları, multi-faze motor kontrolü ve koordineli sensör örnekleme için kullanışlıdır.
Güç tüketimi optimizasyonu
Zamanlayıcılar çoğu düşük güç modlarında çalışmaya devam ederler, mikro kontrolleri belirli aralıklarla uyandırmak için ideal hale getirirler. Güç tüketimini en düşük kabul edilebilir frekansı kullanmak için zamanlayıcılar. Bazı mikro kontroller düşük güç zamanlayıcı periferiler özellikle ultra güç uygulamaları için tasarlanmıştır.
Jitter ve Timing
Interrupt latency, zamanlayıcı tabanlı operasyonlarda jitteri tanıtmaktadır. Tipik kesme gecikme aralıkları birkaç mikrosaniyeden mikro kontrol mimarisine ve mevcut yürütme durumuna bağlı olarak on iki mikrosaniyeye kadar uzanır.For applications requireing sub-mikrosaniye doğruluk, software-toggleed pins yerine donanım zamanlayıcı çıktıları kullanın.
Pratik Tasarım Kılavuzları
Doğru Zamanlayıcıyı Seçin
Uygulamanız için bir zamanlayıcı seçerken, düşünün:
- [FONT=0)Resolution Gereksinimler:[[Dönetici:[Dönetici: 8bit zamanlayıcılar basit gecikmeler için, 16 bit veya 32-bit daha uzun süre veya daha yüksek hassasiyet için
- [[Dönetici Gereksinimler:[Döneticiler:) PWM çıktıları, giriş yakalama, maçla, dış saat girişi yakalama, karşılaştırma,
- [FONT:0)Availability:[Dönetici:[Dönetici: 1 ) Bazı zamanlayıcılar kütüphaneler veya sistem işlevleri tarafından kullanılabilir.
- [FONT:0)Clock Source:[Dönem:[Dönemli saat frekansı ve mevcut ön ölçekli seçenekler
- [FONT=0) Öncekilik:[Dönem:[Dönem: 1 ) Bazı zamanlayıcılar daha yüksek öncelikli kesintilere destek olabilir
Dokümantasyon ve Kod Kullanılabilirlik
Zamanlayıcı hesaplarınızı kod yorumlarında açıkça belgeleyin. Saat frekansı, prescaler değeri, istenen zamanlama ve gerçek başarı zamanlaması içerir. Bu, zamanlama parametrelerini daha sonra veya port kodu farklı saat frekanslarına değiştirmek daha kolay hale getirir.
Preprocessor makrolar veya zamanlayıcı hesaplamaları oluşturan işlevleri oluşturmak, kodu daha fazla okunabilir ve kullanılabilir hale getirmek:
[FONT=0) #define TIMER FREQ (F CPU / PRESCALER)[FD I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I
Test ve Geçerlilik
Zamanlayıcı tabanlı işlevsellik için sistematik bir test yaklaşımı geliştirin:
- Birden bağımsız yöntemlerle hesaplamaları doğrulayın
- Sınır koşullarında test (minimum ve maksimum zaman zaman değeri)
- Dış aletlerle gerçek zamanlama
- Zaman tutarlılığı doğrulamak için çeşitli yük koşulları altında test
- Sürekli kesme süresi ve ISR infaz süresi
- Zaman zamanlaması uzun süreler boyunca sürüklenme Check for scheduling drag over genişletilmiş period
Online Araçlar ve Kaynaklar
Birkaç online araç zamanlayıcı hesaplamaları ve doğrulama ile yardımcı olabilir. Bu hesaplayıcılar, belirli zamanlama gereksinimleri için prescaler ve dönem değerleri belirleme sürecini otomatikleştirmektedir. Popüler seçenekler STM32 zamanlayıcıları, AVR zamanlayıcıları ve genel amaçlı gömülü zamanlayıcıları içerir.
Online hesaplayıcıları kullanırken, sonuçları her zaman kritik uygulamalar için doğrulayın. kör güvenen otomatik araçlar yerine alt hesaplamaları yapın. Bu hesaplayıcılar hızlı doğrulama ve farklı yapılandırma seçenekleri için mükemmeldir.
gömülü sistemlerde programlama ve mikrokontrolör periferiler hakkında daha fazla bilgi için, [[DörtÜyetim:0)Embedded.com)EmbeddedRelated.com) ve üreticiye özel belgeler )
Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç
Zamanlayıcı ve gecikme hesaplamaları, sistemleri programlamanın temel temelidir. Saat frekansları, prescalers, zamanlayıcı modları ve karşı değerler arasındaki ilişkiyi anlamak için, herhangi bir uygulama için kesin zamanlamayı uygulayabilirsiniz.Temel formüllerle başlayın, hesaplamalarınızı doğrulayın ve yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaşlayın, PWM nesli ve zamanlayıcı senkronizasyon.
Zamanlayıcı yapılandırması, karar ile maksimum zaman zamanlaması ve kaynak kullanımı arasındaki ticaret devrelerini içerir. Uygulama gereksinimlerinizi en iyi şekilde eşleştiren prescaler değerleri ve zamanlayıcı modları seçin.Her zaman doğruyu sağlamak için zamanlama uygulamanızı test edin.
Uygulama ve deneyimle, zamanlayıcı hesaplamalar sezgisel hale gelir, herhangi bir gömülü uygulama için zamanlayıcıları hızlı bir şekilde yapılandırmanıza izin verir. Bir LED'i kırarsanız, PWM sinyalleri oluşturmak, gerçek zamanlı bir zamanlama yapmak veya ölçümlemek bu kılavuzda kapılır.