J'utilise un Arduino UNO pour programmer une image hexadécimale précompilée sur un ATTINY45, en utilisant l'avrdude dans le répertoire Arduino IDE, sur Windows 7. L'UO a l'esquisse du FAI chargée à partir du répertoire des exemples et cela fonctionne - la LED de pulsation bat bien.
Côté matériel, j'ai cette configuration , sauf que l'ATTINY est à montage en surface, soudé à une planche de surf avec toutes ses broches vérifiées-soudées avec un voltmètre. J'utilise une bande de broches d'en-tête, tenue à la main pour que les broches touchent la planche de surf, pour obtenir les signaux de l'Uno à l'ATTINY.
Voici les lignes de commande, que j'ai prises en regardant la sortie de débogage de l'EDI:
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
-J'essaye de les exécuter séparément, mais j'obtiens toujours cette erreur:
avrdude: Device signature = 0x000000
avrdude: Yikes! Invalid device signature.
Double check connections and try again, or use -F to override
this check.
mais parfois le nombre est ff0000 ou ffff00 ou ffffff
J'ai lu que "Arduino utilise une version légèrement modifiée d'avrdude pour télécharger des croquis sur la carte Arduino. La version standard interroge la signature de l'appareil de la carte d'une manière qui n'est pas comprise par le chargeur de démarrage, ce qui entraîne cette erreur." Est-ce à dire que l'utilisation de l'Arduino avrdude avec une nouvelle puce ATTINY, sans bootloader dessus, provoquerait également la même erreur? En d'autres termes, l'avrdude modifié est-il incapable d'interroger une puce AVR non chargée par Arduino?
Ou est-ce que cette erreur signifie simplement que je n'ai pas un bon contact entre toutes mes broches de programmation et l'ATTINY?
Et, les paramètres de fusible sont-ils vraiment nécessaires, est-ce que l'Uno peut programmer le flash dans une fonction fonctionnant à 1 MHz et ainsi me sauver quelques étapes?
(J'achèterais simplement un "vrai" programmeur, mais je devrais obtenir ce code dans les deux prochains jours, et je suis dans une partie rurale de la Nouvelle-Écosse)
la source
-c avrisp
. Je pense que vous pouvez le programmer à 1 MHz sans problème.-carduino
pas le stk500. Essayez simplement de télécharger le programme de clignotement sur le serveur depuis l'IDE. De cette façon, vous pouvez voir la ligne de commande correcte en bas, si vous activez la "sortie détaillée" dans les paramètres.Réponses:
J'ai soudé des fils aux pads pour être sûr que la connexion était bonne et j'ai utilisé ces fils pour la programmation de l'Uno. Ensuite, le programmeur a travaillé, sans aucune modification des lignes de commande comme indiqué dans la question. J'ai exécuté quelques variantes et j'ai pu répondre à toutes mes questions, et quelques autres en plus:
L'erreur "Yikes! Invalid device signature" était due à un mauvais contact entre le programmateur (Uno) et les broches ATTINY.
Cela n'avait rien à voir avec le bootloader n'étant pas sur le nouveau microcontrôleur. La nouvelle puce ATTINY45 n'a pas besoin d'un chargeur de démarrage pour que le programmeur en circuit fonctionne.
L'Uno peut programmer l'ATTINY45 configuré à l'une de ses vitesses, 1 MHz ou 8 MHz. Les réglages d'usine sont corrects et ne nécessitent pas de changer les fusibles.
Les deux versions d' avrdude ont fonctionné pour la programmation - la 6.1 du site de l'auteur et la modifiée de l'IDE Arduino.
avrdude programme peut par l'Uno utilisant l' une
-c avrisp
,-c arduino
ou-c stk500v1
, il n'a pas d' importance qui.Une petite question à laquelle je n'ai pas pu répondre était la vitesse à laquelle les programmes Uno (la vitesse de communication entre les broches d'E / S Arduino et le microcontrôleur clignote). Est-ce lié à la vitesse du port série? Mais il s'est avéré que ce n'était pas pertinent pour répondre à ce problème. Quelqu'un d'autre peut le demander s'il est assez curieux.
la source
J'ai eu exactement ce problème. Si l'ATtiny est réglé pour une horloge externe, alors l'ArduinoISP ne pourra pas le programmer sans cristal externe. Connecté un cristal 16 MHz et 2 condensateurs et fonctionnait parfaitement.
(J'ai ensuite pu régler ATtiny sur l'horloge interne, retirer le cristal, puis fonctionner parfaitement sans le cristal.)
la source
Ajoutez la carte et sa description de fusible à partir de ce qui est déjà défini et cela fonctionnera.
Pour ajouter juste
C:\Program Files\Arduino\hardware\arduino\avr\boards.txt
et ajouter la description du forum.Je l'ai utilisé.
la source