Adakah alasan untuk tidak menggunakan Timer0 pada AVR?

10

Hanya pertanyaan dasar ... Untuk arduino / avr / ATMega328 saya menemukan banyak contoh menggunakan Timer1 (bahkan ada seluruh perpustakaan untuk itu) tetapi jarang ada yang menggunakan Timer0 (atau Timer2).

Sekarang, saya tahu bahwa menggunakan penghitung waktu ini untuk mengontrol metode ISR akan menonaktifkan penggunaan PWM pada pin yang terkait, tetapi apakah ada alasan khusus bahwa orang tampaknya menjauh dari Timer0? Apakah ini digunakan untuk hal lain secara internal yang tidak boleh dipusingkan?

Aplikasi saya saat ini baik-baik saja menggunakan Timer1, saya hanya ingin tahu apakah saya kehilangan sesuatu tentang timer yang sering diabaikan ini.

Adam Haile
sumber

Jawaban:

16

Jika pertanyaannya adalah tentang mikrokontroler AVR telanjang, maka tidak, tidak ada kendala dalam menggunakan timer .

  • Untuk Arduino, Timer0 sebaiknya dihindari, karena millis(), delay()dan semua ketepatan waktu internal di perpustakaan Arduino menggunakan timer ini. Mengubah waktu yang konstan akan memengaruhi operasi ini.
  • Timer1 , sebagaimana dinyatakan dalam pertanyaan, adalah pilihan pertama yang populer untuk tugas timer / counter, melalui pustaka seperti pustaka TimerOne , serta manipulasi langsung. Ini adalah timer 16-bit, dengan resolusi yang lebih halus daripada timer 8-bit.
  • Timer2 digunakan oleh perpustakaan nada (), tetapi karena itu tidak begitu digunakan di mana-mana, ada juga perpustakaan msTimer2 yang banyak ditemukan sangat berguna, seperti TimerOne. Manipulasi langsung dari Timer2 juga baik-baik saja.
  • Timer tambahan pada Mega, Timer3 , Timer4 dan timer5 , masing-masing timer 16-bit, juga tersedia untuk digunakan, jika Anda menggunakan Arduino mega papan.
Anindo Ghosh
sumber
9

Selain menonaktifkan PWM terkait alasan lain yang dapat saya pikirkan adalah:

  • TIMER0 adalah timer 8-bit sedangkan TIMER1 adalah timer 16-bit.

  • Di dunia Arduino, TIMER0 digunakan untuk fungsi timer seperti delay () dan millis (). Banyak kode lain yang saya lihat menggunakannya dengan cara yang sama karena resolusi 8-bit biasanya cukup.

  • TIMER2 juga merupakan 8-bit, saya tidak bisa memikirkan alasan untuk secara khusus menghindari itu jika hanya 8-bit yang diperlukan. Ini digunakan oleh fungsi nada Arduino ().

Jadi saya kira meninggalkan TIMER1 sebagai pilihan yang cukup umum dan merupakan satu-satunya pilihan pada AVR yang lebih kecil ketika timer 16-bit diperlukan. Perangkat AVR Mega juga mengandung TIMER3 - TIMER5 yang semuanya 16-bit.

PeterJ
sumber