ทำไมบอร์ด Arduino จึงส่งคริสตัล w / 16MHz แทนที่จะเป็น 20MHz พวกเขา spec'ed สำหรับการทำงานที่ 20MHz หลังจากทั้งหมด
ฉันเดาว่ามีข้อดีเล็กน้อยที่จะทำงานช้ากว่า (ใช้พลังงานน้อยลง, อายุการใช้งานนานขึ้น) แต่ฉันต้องพลาดบางสิ่งบางอย่าง
ทำไมบอร์ด Arduino จึงส่งคริสตัล w / 16MHz แทนที่จะเป็น 20MHz พวกเขา spec'ed สำหรับการทำงานที่ 20MHz หลังจากทั้งหมด
ฉันเดาว่ามีข้อดีเล็กน้อยที่จะทำงานช้ากว่า (ใช้พลังงานน้อยลง, อายุการใช้งานนานขึ้น) แต่ฉันต้องพลาดบางสิ่งบางอย่าง
คำตอบ:
ฉันจะซื้อคำตอบใน Arduino Forum:
ATmega8 Arduino ดั้งเดิมทำงานที่ 16MHz ซึ่งเป็นความเร็วสัญญาณนาฬิกาอันดับต้น ๆ สำหรับซีพียู ATmega8 ที่ใช้ เมื่อ "อัปเกรด" เป็น ATmega168 (ด้วยความเร็วซีพียูสูงสุด 20MHz) นาฬิกาถูกทิ้งไว้ที่ 16MHz (อาจ) เพราะนักออกแบบคิดว่าผู้คนจำนวนมาก / รหัสจะมีปัญหาความเข้ากันได้แบบย้อนหลังกับอัตรานาฬิกาใหม่กว่าจะได้รับประโยชน์จาก 25 เพิ่มเติม % cpu ประสิทธิภาพ ฉันคิดว่าพวกเขาพูดถูก ...
จริงๆแล้วหนึ่งในเหตุผลที่ดีที่สุดที่ฉันเคยได้ยินคือ UART สามารถจับคู่อัตรา 1 Mbit และ 2 Mbit ได้อย่างสมบูรณ์เมื่อทำงานที่ 16 MHz แต่ไม่ใช่เมื่อทำงานที่ 20 MHz มีอุปกรณ์จำนวนหนึ่งที่มีอินพุต UART 1 และ 2 Mbit เช่นสาย Dynamixel ของเซอร์โวหุ่นยนต์
จุดที่สามคือ Oscillator คริสตัลพลังงานต่ำของ ATmega168 และ ATmega328 ไม่ทำงานเกิน 16 MHz ดังนั้นหากคุณมีคริสตัล 20 MHz เชื่อมต่อกับหมุด XTAL คุณต้องใช้ Oscillator คริสตัลสวิงแบบเต็มซึ่งจะใช้พลังงานมากขึ้น (หรือใช้คริสตัลไม่มีเลย)