Inhaltsverzeichnis:
2025 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2025-01-13 06:56
Dies ist eine kleine Anleitung zum Flashen neuer Firmware auf einen USBasp-Klon wie meinen. Diese Anleitung wurde speziell für den auf den Bildern zu sehenden USBasp-Klon geschrieben, sollte jedoch mit anderen funktionieren. Die Verdrahtung ist in Schritt 5 dargestellt, in Schritt 9 befindet sich ein TL;DR.
Genießen!
Schritt 1: Das Problem
Avrdude sagt mir, dass der von mir verwendete Programmierer eine veraltete Firmware hat. Der normale Jumper zur Selbstprogrammierung ist auf meinem Board nicht vorhanden. Hier ist, wie Sie das beheben können. Schaltpläne für den USBasp finden Sie unter fischl.de.
Schritt 2: Benötigte Materialien
Du wirst brauchen…
- Ein Lötkolben
- Ein Arduino (vorzugsweise Nano)
- Einige Überbrückungsdrähte
- Ein PC mit der Arduino IDE und avrdude installiert
Schritt 3: Die Lösung
Damit wir neue Firmware auf den ATmega8 flashen können, müssen wir die Kontrolle über seinen RESET-Pin erlangen. Normalerweise kann ein Jumper auf dem USBasp geschlossen werden, um die Selbstprogrammierung zu ermöglichen, der Hersteller meines Boards hat jedoch keinen mitgeliefert.
Beim ATmega8 ist der RESET-Pin Pin 29, der vierte Pin oben von links. Es ist mit einem 10k Pull-Up-Widerstand auf 5V verbunden. Wir müssen es mit Pin 5 des ICSP-Headers verbinden.
Wir könnten versuchen, einen Draht direkt auf den Widerstand oder den Pin selbst zu löten, dies ist jedoch mühsam und kann Ihre Platine beschädigen. (Ich habe es ausprobiert und den Pull-up-Widerstand abgerissen, ich empfehle es nicht) Außerdem gibt es einen viel einfacheren Weg!
Einen echten Jumper zur Selbstprogrammierung hat der Hersteller zwar nicht beigelegt, aber einen Header unter den Mikrocontroller gelegt. Wir können einfach einen Draht quer verlöten und…
Schritt 4: Voilà
Wir haben die beiden Reset-Pins verbunden! Die beiden Löcher auf der Unterseite verbinden Pin 29 und Pin 14 des Mikrocontrollers.
Schritt 5: Einrichten des Arduino
Um die neue Firmware auf den Programmierer zu flashen, benötigen wir einen weiteren Programmierer, in diesem Fall einen Arduino mit der ArduinoISP-Skizze darauf. Um sicherzustellen, dass Ihr Setup gleich ist, entkommentieren Sie bitte die Zeile 81
// #define USE_OLD_STYLE_WIRING
Verbinden Sie nun den Arduino mit dem ICSP-Header Ihres Programmierers.
Arduino USBasp
5V Pin 2 (VCC) GND Pin 4/6/8/10 (GND) Pin 10 Pin 5 (Reset) Pin 11 Pin 9 (MISO) Pin 12 Pin 1 (MOSI) Pin 13 Pin 7 (SCK)
Der USBasp bleibt vom PC getrennt.
Öffne ein Terminal und tippe ein
avrdude -cavrisp -pm8 -b19200 -P[Ihre Portnummer steht hier, sie sollte die gleiche sein wie in der Arduino IDE]
Wenn alles gut geht, sollte avrdude einige Informationen zum ATmega8 ausdrucken (Sicherungen, Signatur, etc.)
Schritt 6: Flashen des ATmega8
Zum Flashen des Chips benötigen wir noch die Firmware. Gehen Sie zu fisch.de und laden Sie die neueste Version herunter. Entpacken Sie das Archiv und navigieren Sie mit der Shell dorthin.
Das Kompilieren des Codes hat bei mir nicht funktioniert, aber zum Glück enthält das Archiv alle kompilierten Programme unter
bin/firmware
Hier sollten Sie drei.hex-Dateien sehen. Wählen Sie den mit dem gleichen Namen wie Ihr Chip. Mein Programmierer verwendet einen ATmega8, also habe ich ausgewählt
usbasp.atmega8.yyyy-mm-dd.hex
Bei einer funktionierenden Verbindung zum ATmega8 sollte das Flashen nur Tippen erfordern
avrdude -cavrisp -pm8 -b19200 -P[PORT] -U flash:w:[hex-Datei]
Wenn alles richtig gemacht wurde, sollte avrdude die ausgewählte Firmware schreiben und überprüfen.
Schritt 7: Sicherstellen, dass der Programmierer funktioniert
Um den USBasp wieder als Programmierer zu nutzen, müssen wir die Verbindung zwischen Pin 29 und Pin 14 entfernen. Den Jumper an der Unterseite abzuschneiden sollte genügen, aber auch das Entfernen kann nicht schaden.
Sie können es ausprobieren, indem Sie es wieder an den PC anschließen und eingeben
avrdude -cusbasp -pm8
Auch wenn avrdude das Ziel nicht erreichen kann, sollte es zumindest die neue Firmware unseres Programmierers zur Kenntnis nehmen.
Schritt 8: Fehlerbehebung
Sollte avrdude einen solchen Fehler anzeigen, hat dies wahrscheinlich etwas mit der Auto-Reset-Funktion des Arduino zu tun. Um dies zu umgehen, fügen Sie bitte einen Kondensator zwischen RESET und GND des Arduino hinzu. Es wird allgemein empfohlen, einen 10µF-Kondensator zu verwenden, aber in meinem Fall hat ein 100µF-Kondensator gut funktioniert.
Sollten Sie einen Fehler erhalten wie
avrdude: error: Programmfreigabe: Ziel antwortet nicht. 1
oder eine ungültige Signatur zurückgegeben wird, überprüfen Sie bitte Ihre Verkabelung. Ich hatte ein Problem mit meinen Stromkabeln, die rosten und keinen Strom mehr leiten. Ich empfehle, alle Jumperdrähte vorher zu überprüfen.
Stellen Sie außerdem sicher, dass Sie Pin 11 und Pin 12 am Arduino vertauschen, wenn das Problem weiterhin besteht.
Bitte achten Sie auch darauf, die richtige Baudrate für den Arduino als ISP, 19200 einzustellen. Sie kann mit der Option. eingestellt werden
-b19200
Wenn Sie Fragen haben oder einen Fehler entdeckt haben, lassen Sie es mich bitte wissen:)
Schritt 9: TL; DR
- Löten Sie einen Draht über die beiden Stifte auf der Unterseite der Platine
- Richten Sie einen Arduino als ISP ein und stellen Sie sicher, dass das alte Verdrahtungsschema aktiviert ist
- Verbinden Sie den Arduino über den ICSP-Header mit dem Programmierer
- Flashen Sie die neue Firmware auf das Programmiergerät
- Entfernen Sie die Verbindung auf der Unterseite
- Ziehen Sie keine SMD-Widerstände ab