Ich verwende ein Arduino UNO, um ein vorkompiliertes Hex-Image unter Verwendung des avrdude im Arduino IDE-Verzeichnis unter Windows 7 auf ein ATTINY45 zu programmieren. Das Uno hat die ISP-Skizze aus dem Beispielverzeichnis geladen und das funktioniert - die Heartbeat-LED pulsiert schön.
Auf der Hardwareseite habe ich dieses Setup , außer dass der ATTINY oberflächenmontiert ist und mit allen mit einem Voltmeter verifizierten Pins an ein Surfbrett gelötet ist. Ich benutze einen Header-Pin-Streifen, der von Hand gehalten wird, damit die Pins das Surfbrett berühren und die Signale vom Uno zum ATTINY gelangen.
Hier sind die Befehlszeilen, die ich aus der Debugging-Ausgabe der IDE entnommen habe:
REM set the fuse for 8MHz, so the ISP programmer can work
C:\Progra~1\Arduino\hardware\tools\avr\bin\avrdude -CC:\Progra~1\Arduino\hardware/tools/avr/etc/avrdude.conf -v -v -v -v -pattiny45 -cstk500v1 -P\\.\COM7 -b19200 -e -Uefuse:w:0xff:m -Uhfuse:w:0xdf:m -Ulfuse:w:0xe2:m
REM load the program
C:\Progra~1\Arduino\hardware\tools\avr\bin\avrdude -CC:\Progra~1\Arduino\hardware/tools/avr/etc/avrdude.conf -v -pattiny45 -cstk500v1 -P\\.\COM7 -b19200 -Uflash:w:firefly.hex:i
REM set fuse for 1MHz, as the project requires
C:\Progra~1\Arduino\hardware/tools/avr/bin/avrdude -CC:\Progra~1\Arduino\hardware/tools/avr/etc/avrdude.conf -v -pattiny45 -cstk500v1 -P\\.\COM7 -b19200 -e -Uefuse:w:0xff:m -Uhfuse:w:0xdf:m -Ulfuse:w:0x62:m
-Ich versuche diese separat auszuführen, erhalte aber immer den folgenden Fehler:
avrdude: Device signature = 0x000000
avrdude: Yikes! Invalid device signature.
Double check connections and try again, or use -F to override
this check.
aber manchmal ist die Nummer ff0000 oder ffff00 oder ffffff
Ich habe gelesen, dass "Arduino eine leicht modifizierte Version von avrdude verwendet, um Skizzen auf das Arduino-Board hochzuladen. Die Standardversion fragt die Gerätesignatur des Boards auf eine Weise ab, die vom Bootloader nicht verstanden wird, was zu diesem Fehler führt." Bedeutet dies, dass die Verwendung des Arduino-Avrdude mit einem neuen ATTINY-Chip, auf dem sich kein Bootloader befindet, denselben Fehler verursachen würde? Mit anderen Worten, ist die modifizierte Avrdude nicht in der Lage, einen AVR-Chip ohne Arduino-Bootload abzufragen?
Oder bedeutet dieser Fehler einfach, dass ich keinen guten Kontakt zwischen all meinen Programmierstiften und dem ATTINY habe?
Und sind die Sicherungseinstellungen wirklich erforderlich? Kann der Uno den Blitz in eine Umgebung mit 1 MHz programmieren und mir so einige Schritte ersparen?
(Ich würde nur einen "echten" Programmierer kaufen, muss diesen Code aber in den nächsten zwei Tagen erhalten und bin in einem ländlichen Teil von Nova Scotia)
quelle
-c avrisp
. Ich denke, Sie können es ohne Probleme mit 1 MHz programmieren.-carduino
nicht der stk500 verwendet. Versuchen Sie einfach, das Blinkprogramm von der IDE auf das Attiny hochzuladen. Auf diese Weise sehen Sie unten die richtige Befehlszeile, wenn Sie in den Einstellungen "ausführliche Ausgabe" aktivieren.Antworten:
Ich habe Drähte an Pads gelötet, um sicherzugehen, dass die Verbindung gut war, und diese Drähte für die Programmierung vom Uno verwendet. Dann arbeitete der Programmierer ohne Änderungen an den Befehlszeilen, wie in der Frage angegeben. Ich lief ein paar Variationen und konnte alle meine Fragen beantworten, und noch ein paar mehr:
Der Fehler "Yikes! Ungültige Gerätesignatur" wurde durch einen schlechten Kontakt zwischen dem Programmierer (Uno) und den ATTINY-Pins verursacht.
Es hatte nichts damit zu tun, dass sich der Bootloader nicht auf dem neuen Mikrocontroller befand. Der neue ATTINY45-Chip benötigt keinen Bootloader, damit der In-Circuit-Programmierer funktioniert.
Der Uno kann den ATTINY45 auf eine seiner Geschwindigkeiten von 1 MHz oder 8 MHz programmieren. Die Werkseinstellungen sind in Ordnung und erfordern kein Wechseln der Sicherungen.
Beide avrdude- Versionen arbeiteten für die Programmierung - die 6.1 von der Website des Autors und die modifizierte von der Arduino IDE.
avrdude kann Programm über die Uno alle mit
-c avrisp
,-c arduino
oder-c stk500v1
, spielt es keine Rolle , welche.Eine kleine Frage, die ich nicht beantworten konnte, war, mit welcher Geschwindigkeit die Uno-Programme programmiert wurden (Kommunikationsgeschwindigkeit zwischen den Arduino-E / A-Pins und dem Mikrocontroller wird geflasht). Hängt es mit der Geschwindigkeit der seriellen Schnittstelle zusammen? Es stellte sich jedoch heraus, dass dies für die Beantwortung dieses Problems nicht relevant war. Jemand anderes kann es fragen, wenn es neugierig genug ist.
quelle
Ich hatte genau dieses Problem. Wenn der ATtiny auf externe Uhr eingestellt ist, kann der ArduinoISP ihn nicht ohne externen Kristall programmieren. Hat einen 16 MHz Quarz und 2 Kondensatoren angeschlossen und hat einwandfrei funktioniert.
(Ich konnte dann ATtiny auf die interne Uhr einstellen, den Kristall entfernen und dann ohne den Kristall perfekt arbeiten.)
quelle
Fügen Sie die Platine und ihre Sicherungsbeschreibung von dem hinzu, was bereits eingestellt ist, und es wird funktionieren.
Zum Hinzufügen von Just
C:\Program Files\Arduino\hardware\arduino\avr\boards.txt
und Hinzufügen der Board-Beschreibung.Ich benutzte es.
quelle