Будь-яка причина не використовувати Timer0 на AVR?


10

Лише основне запитання ... Для arduino / avr / ATMega328 я знаходжу багато прикладів, використовуючи Timer1 (для цього є навіть ціла бібліотека), але рідко такі, які використовують Timer0 (або Timer2).

Тепер я знаю, що використання будь-якого з цих таймерів для керування методом ISR відключить використання ШІМ на пов'язаних штифтах, але чи є конкретна причина, по якій люди, здається, тримаються подалі від Timer0? Чи використовується воно для чогось іншого внутрішнього, з яким не слід возитися?

Мій поточний додаток чудово використовує Timer1, мені просто цікаво, якщо я щось пропускаю про ці інші часто занедбані таймери.

Відповіді:


16

Якщо питання стосується чистого мікроконтролера AVR, то ні, немає жодних обмежень щодо використання будь-якого з таймерів .

  • Для Arduino, Timer0 краще уникати, так як millis(), delay()і всі внутрішні хронометраж в Arduino бібліотеках використовувати цей таймер. Зміна постійної часу вплине на ці операції.
  • Timer1 , як зазначено в питанні, є першим популярним вибором для будь-яких завдань таймера / лічильника, через такі бібліотеки , як бібліотека TimerOne , а також прямі маніпуляції. Це 16-бітний таймер, таким чином, з більш чітким дозволом, ніж 8-бітові таймери.
  • Timer2 використовується бібліотекою tone (), але, оскільки це не так широко використовується, є також бібліотека msTimer2, яка багатьом вважає дуже корисною, подібно до TimerOne. Пряма маніпуляція з Timer2 теж чудово.
  • Додаткові таймери на Mega, Timer3 , Timer4 та Timer5 , кожен 16-бітний таймер, також доступні для використання, якщо ви використовуєте плату Arduino Mega .

9

Окрім відключення асоційованого ШІМ, я можу подумати про інші причини:

  • TIMER0 - 8-бітний таймер, а TIMER1 - 16-бітний таймер.

  • У світі Arduino TIMER0 використовується для функцій таймера, таких як затримка () і millis (). Багато інших кодів, які я бачив, використовують його так само, оскільки 8-бітова роздільна здатність зазвичай достатня.

  • TIMER2 також 8-бітний, я не можу придумати причину, щоб спеціально уникнути цього, якщо потрібні лише 8-бітні. Однак він використовується функцією Arduino tone ().

Тому я думаю, що TIMER1 залишає досить загальний вибір і є єдиним вибором для менших AVR, коли потрібен 16-бітний таймер. Пристрої AVR Mega також містять TIMER3 - TIMER5, які є 16-бітними.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.