Warum werden Arduinos mit 16MHz Kristall anstatt mit 20MHz ausgeliefert?

33

Warum werden Arduino-Boards mit 16-MHz-Quarz anstelle von 20-MHz ausgeliefert? Schließlich sind sie für den Betrieb mit 20 MHz ausgelegt.

Ich denke, es gibt ein paar Vorteile, langsamer zu laufen (geringerer Stromverbrauch, längere Lebensdauer), aber mir muss etwas fehlen.

JellicleCat
quelle
1
Dies wurde auch im alten Arduino-Forum gefragt
vicatcu
3
Beachten Sie, dass diese 25% ige Lücke bei der Anwendungsgeschwindigkeit bei richtiger Programmierung um ein Vielfaches vergrößert werden kann. Ich versuche jedoch, mich von den extremen Grenzen eines IC fernzuhalten.
Tyblu

Antworten:

29

Ich würde in die Antwort auf dem Arduino Forum einkaufen:

Das ursprüngliche ATmega8 Arduino lief mit 16 MHz, was der höchsten Taktrate für die verwendete ATmega8-CPU entsprach. Beim "Upgrade" auf ATmega168 (mit einer 20-MHz-CPU-Spitzengeschwindigkeit) wurde der Takt (wahrscheinlich) auf 16 MHz belassen, da die Designer der Ansicht waren, dass bei einer neuen Taktrate mehr Personen / Code Probleme mit der Abwärtskompatibilität haben würden, als von den zusätzlichen 25 profitieren würden % CPU-Leistung. Ich denke auf jeden Fall, dass sie Recht hatten ...

vicatcu
quelle
6

Tatsächlich ist einer der besten Gründe, die ich gehört habe, dass der UART perfekt 1-Mbit- und 2-Mbit-Raten anpassen kann, wenn er mit 16 MHz läuft, aber nicht, wenn er mit 20 MHz läuft. Es gibt eine Reihe von Geräten mit 1- und 2-Mbit-UART-Eingängen, z. B. die Dynamixel-Reihe von Roboterservos.

Jon Watte
quelle
5

Ein dritter Punkt ist, dass der Schwachstrom-Quarzoszillator des ATmega168 und ATmega328 nicht über 16 MHz arbeitet. Wenn Sie also einen 20-MHz-Kristall an die XTAL-Pins angeschlossen haben, müssen Sie den Full Swing-Kristalloszillator verwenden, der mehr Strom verbraucht (oder überhaupt keinen Kristall verwendet).

Pascal Rosin
quelle