มีเหตุผลใดที่จะไม่ใช้ Timer0 บน AVR?


10

เป็นเพียงคำถามพื้นฐาน ... สำหรับ arduino / avr / ATMega328 ฉันพบตัวอย่างจำนวนมากโดยใช้ Timer1 (มีห้องสมุดทั้งหมดสำหรับมัน) แต่ไม่ค่อยมีใครใช้ Timer0 (หรือ Timer2)

ตอนนี้ฉันรู้ว่าการใช้ตัวนับใด ๆ เหล่านี้เพื่อควบคุมวิธี ISR จะปิดการใช้งาน PWM บนหมุดที่เกี่ยวข้อง แต่มีเหตุผลเฉพาะที่ผู้คนดูเหมือนจะอยู่ห่างจาก Timer0 หรือไม่? มันใช้สำหรับอย่างอื่นภายในที่ไม่ควรยุ่งกับ?

แอปพลิเคชันปัจจุบันของฉันใช้งาน Timer1 ได้ดีฉันแค่อยากรู้อยากเห็นหากฉันคิดถึงบางสิ่งเกี่ยวกับตัวจับเวลาที่ถูกละเลย

คำตอบ:


16

ถ้าคำถามเป็นเรื่องเกี่ยวกับไมโครคอนโทรลเลอร์ AVR เปลือยแล้วไม่มีข้อ จำกัด ใด ๆ เกี่ยวกับการใช้ใด ๆ ของตัวนับ

  • สำหรับ Arduino, Timer0จะหลีกเลี่ยงที่ดีที่สุดเป็นmillis(), delay()และทุกจับเวลาภายในห้องสมุด Arduino ใช้เวลานี้ การเปลี่ยนค่าคงที่ของเวลาจะส่งผลต่อการดำเนินการเหล่านี้
  • Timer1ตามคำถามจะเป็นตัวเลือกแรกที่ได้รับความนิยมสำหรับงานจับเวลา / นับผ่านห้องสมุดเช่นไลบรารีTimerOneรวมถึงการจัดการโดยตรง มันเป็นตัวจับเวลา 16 บิตดังนั้นจึงมีความละเอียดที่ละเอียดกว่าตัวจับเวลา 8 บิต
  • Timer2ใช้งานโดย tone () library แต่เนื่องจากไม่ได้ใช้อย่างแพร่หลายดังนั้นก็มีไลบรารี msTimer2ที่หลายคนพบว่ามีประโยชน์มากเหมือน TimerOne การจัดการโดยตรงของ Timer2 ก็ใช้ได้เช่นกัน
  • ตัวจับเวลาเพิ่มเติมใน Mega, Timer3 , Timer4และTimer5ซึ่งมีตัวจับเวลา 16 บิตแต่ละตัวจะพร้อมใช้งานหากคุณใช้Arduino Mega board

9

นอกเหนือจากการปิดการใช้งาน PWM ที่เกี่ยวข้องด้วยเหตุผลอื่น ๆ ที่ฉันคิดได้คือ:

  • TIMER0 เป็นตัวจับเวลา 8 บิตในขณะที่ TIMER1 เป็นตัวจับเวลา 16 บิต

  • ใน Arduino world TIMER0 ใช้สำหรับฟังก์ชั่นจับเวลาเช่น delay () และ millis () รหัสอื่น ๆ จำนวนมากที่ฉันเคยเห็นใช้แบบเดียวกันเพราะความละเอียด 8 บิตนั้นเพียงพอแล้ว

  • TIMER2 ยังเป็น 8 บิตฉันไม่สามารถคิดเหตุผลที่จะหลีกเลี่ยงได้เป็นพิเศษหากจำเป็นต้องใช้เพียง 8 บิต มันถูกใช้โดยฟังก์ชั่นโทน Arduino ()

ดังนั้นฉันคิดว่า TIMER1 เป็นตัวเลือกที่ค่อนข้างทั่วไปและเป็นตัวเลือกเดียวสำหรับ AVR ที่เล็กกว่าเมื่อจำเป็นต้องใช้ตัวจับเวลา 16 บิต อุปกรณ์ AVR Mega ยังมี TIMER3 - TIMER5 ที่มีทั้งหมด 16 บิต

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.