Arduino bei 20 MHz?


9

Ich frage mich, warum Arduino nicht mit 20 MHz läuft, der Frequenz, für die der AVR spezifiziert ist. Jetzt, bei 16 MHz, verschwenden wir 20% Leistung für nichts.

Ich glaube nicht, dass es irgendwelche Auswirkungen gibt, wenn Sie den 16-MHz-Resonator durch einen 20-MHz-Typ ersetzen, mit wahrscheinlich der einzigen Ausnahme für die Baudrate im Bootloader. Oder gibt es?

Weiß jemand, warum die Arduino-Designer 16 MHz gewählt haben?


Vergessen Sie nicht, die Sicherungen einzustellen, wenn Sie dies tun
portforwardpodcast

1
@portforwardpodcast Die Sicherungen müssen nicht gewechselt werden. Sie sind bereits auf "Vollschwingender externer Oszillator" eingestellt.
Gerben

Antworten:


6

Es gibt keinen Hardware-Grund (soweit mir bekannt ist), dass Sie kein geeignetes Arduino mit 20 MHz betreiben könnten. In der Software treten jedoch geringfügige Timing-Ungenauigkeiten auf, da die Standard-Arduino-Konfiguration anscheinend am besten funktioniert, wenn die Taktrate entweder 8 oder 16 MHz beträgt.

Ich vermute, dass dies größtenteils aus historischen Gründen geschieht. Frühe Arduino-Boards basierten auf Chips, die nur bis zu 16 MHz hochgingen, wie z ATmega8. Die Verwendung der gleichen Konfiguration für alle Chips hält alles ein bisschen einfacher und konsistenter.

Weitere Informationen zu den Timing-Problemen finden Sie hier: http://forum.arduino.cc/index.php?topic=158223.0#msg_1186708


1
Danke für deine Antwort. Können Sie die "exakte Potenz von 2" näher erläutern? Die 1-Sekunden-Periode, über die Taktimpulse gezählt werden, bedeutet für einen Mikrocontroller nichts, er kennt nur Takt-Ticks. Außerdem ist 16 MHz keine exakte Leistung von 2, das müsste 16,777216 MHz sein.
Joris Groosman

@JorisGroosman Entschuldigung, ich habe das nicht richtig erklärt. Es geht um die Art und Weise, wie der Arduino-Kern Mikrosekunden aus Takt-Ticks berechnet. Dieses Forenthema gibt eine viel bessere Erklärung als ich könnte.
Peter Bloomfield

4

Sie können und ich.

Es ist technisch gesehen kein Arduino mehr, denke ich. Ich habe meine eigene Platine hergestellt. Das Ersetzen eines Resonators auf einer Platine erfordert ein feines Löten, aber es ist definitiv möglich.

Es gibt einige Fallstricke: Alles, was zeitbezogen ist (z. B. millis ()), wird schneller ausgeführt als es sollte - 25% mehr millis () pro Sekunde. Außerdem erwartet der Bootloader 16 MHz, sodass Sie ihn bei dieser Geschwindigkeit nicht neu programmieren können. Ich habe einen USBASP-Programmierer gekauft - er wird in das 2x3-Pin-Raster auf einer Seite der Platine eingehängt und ermöglicht es Ihnen, ihn ohne den Bootloader neu zu programmieren (so wird der Bootloader zuerst angelegt!). Sie benötigen mindestens 4,5 Volt bei 20 MHz, um Probleme zu vermeiden, im Vergleich zu 3,78 Volt bei 16 MHz - dies bedeutet, dass die Batterien etwas schneller entladen werden (3x1,5 V-Batterien werden ziemlich schnell leer), und wenn Sie Motoren oder andere Stromquellen haben Batterien, 3 1,5-V-Batterien funktionieren wahrscheinlich nicht, auch wenn sie frisch sind.

Wenn Sie alternativ in die genau entgegengesetzte Richtung gehen, ist die Spannung umso geringer, je niedriger die Taktrate ist. Bei einigen Projekten benötigen Sie möglicherweise nicht die Taktrate. Sie können bei 4 MHz auf 1,8 V herunterfahren.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.