เหตุใด Arduinos จึงส่งคริสตัล w / 16MHz แทนที่จะเป็น 20MHz


33

ทำไมบอร์ด Arduino จึงส่งคริสตัล w / 16MHz แทนที่จะเป็น 20MHz พวกเขา spec'ed สำหรับการทำงานที่ 20MHz หลังจากทั้งหมด

ฉันเดาว่ามีข้อดีเล็กน้อยที่จะทำงานช้ากว่า (ใช้พลังงานน้อยลง, อายุการใช้งานนานขึ้น) แต่ฉันต้องพลาดบางสิ่งบางอย่าง


1
นี่ยังถูกถามในบอร์ด Arduino เก่า: arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1240016311
vicatcu

3
โปรดทราบว่าช่องว่างความเร็วแอปพลิเคชัน 25% นี้สามารถรับได้หลายครั้งด้วยการตั้งโปรแกรมที่เหมาะสม ฉันพยายามหลีกเลี่ยงข้อ จำกัด ที่รุนแรงที่สุดของ IC
tyblu

คำตอบ:


29

ฉันจะซื้อคำตอบใน Arduino Forum:

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


6

จริงๆแล้วหนึ่งในเหตุผลที่ดีที่สุดที่ฉันเคยได้ยินคือ UART สามารถจับคู่อัตรา 1 Mbit และ 2 Mbit ได้อย่างสมบูรณ์เมื่อทำงานที่ 16 MHz แต่ไม่ใช่เมื่อทำงานที่ 20 MHz มีอุปกรณ์จำนวนหนึ่งที่มีอินพุต UART 1 และ 2 Mbit เช่นสาย Dynamixel ของเซอร์โวหุ่นยนต์


5

จุดที่สามคือ Oscillator คริสตัลพลังงานต่ำของ ATmega168 และ ATmega328 ไม่ทำงานเกิน 16 MHz ดังนั้นหากคุณมีคริสตัล 20 MHz เชื่อมต่อกับหมุด XTAL คุณต้องใช้ Oscillator คริสตัลสวิงแบบเต็มซึ่งจะใช้พลังงานมากขึ้น (หรือใช้คริสตัลไม่มีเลย)

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