AVR'de Timer0'ı kullanmamak için herhangi bir neden var mı?


10

Sadece temel bir soru ... arduino / avr / ATMega328 için Timer1'i (bunun için bir kütüphane bile var) kullanarak çok sayıda örnek buluyorum, ancak nadiren Timer0 (veya Timer2) kullanan herhangi bir örnek.

Şimdi, bir ISR yöntemini kontrol etmek için bu zamanlayıcılardan herhangi birinin kullanılmasının, ilişkili pinlerinde PWM kullanımını devre dışı bırakacağını biliyorum, ancak insanların Timer0'dan uzak durmalarının belirli bir nedeni var mı? İçsel olarak karıştırılmaması gereken başka bir şey için mi kullanılıyor?

Benim geçerli uygulama Timer1 kullanarak gayet iyi, ben sadece bu sık sık ihmal edilen zamanlayıcılar hakkında bir şey eksik olup olmadığını merak ediyorum.

Yanıtlar:


16

Soru çıplak bir AVR mikrodenetleyici ile ilgili ise, o zaman hayır, zamanlayıcılardan herhangi birinin kullanılması konusunda herhangi bir kısıtlama yoktur .

  • Arduino için Timer0 iyi kaçınılmalıdır gibi millis(), delay()ve Arduino kütüphanelerde tüm iç zaman işleyişi bu zamanlayıcı kullanın. Zaman sabitini değiştirmek bu işlemleri etkileyecektir.
  • Soruda belirtildiği gibi Timer1 , TimerOne kütüphanesi gibi kütüphaneler ve doğrudan manipülasyon yoluyla herhangi bir timer / counter görevi için popüler ilk tercihtir . 16 bitlik bir zamanlayıcıdır, bu nedenle 8 bitlik zamanlayıcılardan daha iyi çözünürlüğe sahiptir.
  • Timer2 , tone () kütüphanesi tarafından kullanılır, ancak bu her yerde kullanılmadığından, çoğu TimerOne gibi çok yararlı bulan msTimer2 kütüphanesi de vardır . Timer2'nin doğrudan manipülasyonu da iyidir.
  • Mega, ek zamanlayıcılar Timer3 , Timer4 ve zamanlayıcı5 bir kullanırsanız, her bir 16 bit zamanlayıcı, aynı zamanda kullanım için mevcuttur Arduino Mega kurulu.

9

İlişkili PWM'yi devre dışı bırakmanın yanı sıra aklıma gelen diğer nedenler:

  • TIMER1 8 bitlik bir zamanlayıcı iken TIMER1 16 bitlik bir zamanlayıcıdır.

  • Arduino dünyasında TIMER0, delay () ve millis () gibi zamanlayıcı fonksiyonları için kullanılır. Gördüğüm diğer kodların çoğu aynı şekilde kullanıyor çünkü 8 bit çözünürlük normalde geniş.

  • TIMER2 de 8 bit, sadece 8 bit gerekiyorsa bundan kaçınmak için bir neden düşünemiyorum. Ancak Arduino tone () işlevi tarafından kullanılır.

Bu yüzden sanırım TIMER1'i oldukça genel bir seçenek olarak bırakıyor ve 16 bitlik bir zamanlayıcı gerektiğinde daha küçük AVR'lerde tek seçenek bu. AVR Mega cihazları ayrıca 16 bitlik TIMER3 - TIMER5 içerir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.