Arduiono UNO 20Mhz
Üblicherweise wird hat der UNO einen 16MHz Resonator zur Takterzeugung eingebaut. Diesen ersetze ich hier durch einen 20MHz Quarz.
Dazu sollte man nur UNOs mit ein Atmega328P in DIL Ausführung verwenden. Die SMD Version ist dazu eher ungeeignet. Die Info darüber
ist hier im Internet verfügbar.
Danke an den Verfasser für seinen Beitrag dafür. Ich verwende nur moderne aktuelle Atmega328P CPUs, welche mit 20MHz funktionieren.
Notwendige Arbeiten:
• BOOTLOADER - Mit Arduino IDE V. 1.0.6 den Bootloader für neue Hardware erstellen
• BOARDS - In die aktuelle Ardunio IDE die boards.txt anpassen
• HEXFILE - Blink.ino mit Arduino UNO 20Mhz als HexFile mit Bootloader erstellen
• ATMEGA328P - Das erstellte Hexfile in einen Atmege328P flashen
• HARDWARE - Arduino UNO Hardware umbauen
• TEST - mit Software
HARDWARE
Der UNO wird nicht verändert, es wird nur die CPU auf zwei DIL Sockel übereinander gesteckt, welche den neuen Quarz beinhalten.
Die Grundsoftware (bootloader) des Atmega328p muss aber unbedingt, neu für 20MHz erstellt werden. Dazu später in diesem Beitrag.
Es wird ein HC49 Quarz mit 20MHz und 2 Stk 22pF Kondensatoren an Pin 9 und 10 gelötet.
Zwischensockel mit Modifikation
Fertige 20Mhz UNOs gibt es nicht zu kaufen, aber die Sache ist für Projekte mit eigener Platine und einem Atmega328P interessant, da man dann die maximale Takt
Frequenz der CPU mit Arduino Software verwenden kann.
Weiters muss die Arduino IDE diese neue Hardware dann unterstützen, damit dafür Software erstellt werden kann. Hierzu sind einige Anpassungen erforderlich.
BOOTLOADER
Für die Erstellung des Bootloaders brauchen wir einmalig die ältere Arduino IDE Version 1.06
Der neueren IDE Versionen fehlen hier einige Files um den make durchzuführen.
Die ältere IDE Version 1.0.6 kann man hier runterladen
www.arduino.cc/en/software/OldSoftwareReleases
Sollte man auf einem zweiten Rechner machen, da die Arduino Software mit der bereits installierten neueren Version kollidiert.
in
atmega328_20.hex und
atmega328_20.lst
Diese Files für später sichern, dann kann man sich zukünftig den Rückschritt zur 1.06 Version sparen.
Zum Rechner mit aktuellen Arduino Version (hier V. 1.8.15) wechseln und die Files
atmega328_20.hex und atmega328_20.lst
nach
(hier haben sich die Pfade, im Unterschied zur alten IDE, etwas verändert)
BOARDS
Ich habe die Version 1.8.15 der Arduino IDE verwendet.
In der aktueller Arduino IDE das File boards.txt anpassen
und diese Zeilen einfügen.
Arduino IDE neu starten
Die neue Hardware sollte nun in der Boards Liste angeboten werden.
Der neue 20MHZ UNO wird nun als Board angeboten.
HEXFILE
Inhalt ist bootloader + Applikation (blink)
In der Arduino IDE:
Hardware board "Arduino UNO 20MHz" definieren
Neues Projekt test starten und einfaches Programm blinkende LED einfügen.
compile und
dann per "export with bootloader" ein Hexfile erzeugen
Im Verzeichnis "test" der aktuellen INO Datei (Sketch) Liegen zwei Files test.ino.standard.hex und test.ino.with_bootloader.standard.hex
Die Datei mit dem Bootloader wird benötigt. Der Bootloader ermöglicht das Flashen von Programmen aus der IDE heraus in den Speicher.
ATMEGA328P
Das erstellte Hexfile mit dem Bootloader wird mit einem Programmer in einen Atmega328P geflasht. Das muss nur einmal gemacht werden für eine neue CPU. Hier werden die Fuses eingestellt und der Bootloader in die CPU geflasht. Damit kann die CPU in einen UNO eingesetzt werden.
Die Applikation Blink.ino ist hier sekundär, da bei funktionierender Hardware nun immer über die IDE Software in den Speicher geladen wird. Siehe auch mein Artikel über das Flashen AVR
Die Fuses werden für den UNO so eingestellt.
ATMEGA328P
Programm mit der IDE in den Speicher laden funktioniert.
Kommunikation via Serial Monitor OK
Bei Blink.ino blinkt die LED genauso schnell wie mit 16MHz CPU.
Meine Controldemo ist ohne Änderung gelaufen.
Vorsicht: Ob alle Libraries und Funktionen die veränderte Taktrate unterstützen, kann im Vorhinein nicht gesagt werden.
Es ist eine offiziell nicht unterstütze Hardware, das soll einem bewusst sein.
Dateidatum: 26.08.2023