Trinket-AvrDude
Programmation du Trinket avec AVRDude
Certains développeurs pourraient vouloir programmer le Trinket directement en utilisant le compilateur AVR-GCC (avec vi/emacs comme éditeur et AVRdude comme programmateur).
C'est facile à réaliser!
Cibler l'Attiny85 comme puce à utiliser avec avr-gcc, avec F_CPU à 8MHz et en sélectionnant l'oscillateur interne.
Des changements mineurs sont à faire dans avrdude.conf pour utiliser avrdude. Pour trouver le fichier avrdude.conf, ouvrez une fenêtre de ligne de commande (CLI : Command Ligne Interface - Interface en Ligne de Commande... sous windows c'est cmd, pour mac c'est Terminal et pour linux c'est rxvt).
Entrez ensuite la commande: avrdude -v
Crédit: AdaFruit Industries www.adafruit.com
Recherchez la ligne "System wide configuration file is .....", cette ligne indique l'emplacement du fichier avrdude.conf.
Comme notre bootloader USB est un peu différent des programmeurs traditionnels, nous devons mettre à jour notre fichier de configuration pour augmenter le délai d'effacement. Cela n'affecte pas la programmation de l'Attiny85, nous pourrons nous servir de ce fichier de configuration avec les Trinkets ou directement avec les circuits-intégrés sans aucun problème.
Mise à jour de avrdude.conf
Méthode Courte
Téléchargez le nouveau fichier avrdude.conf en cliquant sur le lien suivant. Renommez l'ancien fichier en avrdudeconf.bak, et placez le nouveau fichier dans le même répertoire.
- Cliquez ici pour télécharger le nouveau fichier avrdude.conf modifié pour supporter Trinket]
Voyez également le lien disponible directement sur la page source d'AdaFruit Industries.
Le fichier de configuration nécessaire pour le Mac est un peu différent :
- Cliquez ici pour télécharger le nouveau fichier avrdude.conf modifié pour supporter Trinket (Version Mac)]
Voyez également le lien disponible directement sur la page source d'AdaFruit Industries.
Méthode Longue
Il n'est pas trop difficile de faire la mise à jour de d'avrdude.conf si vous y tenez.
Ouvrez le fichier dans votre éditeur favori.
Crédit: AdaFruit Industries www.adafruit.com
et recherchez le texte suivant :
#------------------------------------------------------------ # ATtiny85
- ------------------------------------------------------------</nowiki>
Crédit: AdaFruit Industries www.adafruit.com
Supprimez le texte après l'entête Attiny85 commençant par "part" et jusque l'entête suivant (dans le notre, c'est : ATmega640)
Collez alors le texte suivant à l'endroit que vous venez d'effacer!
part id = "t85"; desc = "ATtiny85"; has_debugwire = yes; flash_instr = 0xB4, 0x02, 0x12; eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, 0xBC, 0x02, 0xB4, 0x02, 0xBA, 0x0D, 0xBB, 0xBC, 0x99, 0xE1, 0xBB, 0xAC; ## pas de devcode STK500 dans le fichier XML, utilisez celui de ATtiny45 stk500_devcode = 0x14; ## avr910_devcode = ?; ## Essayez le devcode AT90S2313: avr910_devcode = 0x20; signature = 0x1e 0x93 0x0b; reset = io; chip_erase_delay = 900000; pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", "x x x x x x x x x x x x x x x x"; chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", "x x x x x x x x x x x x x x x x"; timeout = 200; stabdelay = 100; cmdexedelay = 25; synchloops = 32; bytedelay = 0; pollindex = 3; pollvalue = 0x53; predelay = 1; postdelay = 1; pollmethod = 1; hvsp_controlstack = 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66, 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78, 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; hventerstabdelay = 100; hvspcmdexedelay = 0; synchcycles = 6; latchcycles = 1; togglevtg = 1; poweroffdelay = 25; resetdelayms = 1; resetdelayus = 0; hvleavestabdelay = 100; resetdelay = 25; chiperasepolltimeout = 40; chiperasetime = 900000; programfusepolltimeout = 25; programlockpolltimeout = 25; memory "eeprom" size = 512; paged = no; page_size = 4; min_write_delay = 4000; max_write_delay = 4500; readback_p1 = 0xff; readback_p2 = 0xff; read = "1 0 1 0 0 0 0 0 0 0 0 x x x x a8", "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; write = "1 1 0 0 0 0 0 0 0 0 0 x x x x a8", "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 0 a1 a0", " i i i i i i i i"; writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x x x x a8", " a7 a6 a5 a4 a3 a2 0 0", " x x x x x x x x"; mode = 0x41; delay = 12; blocksize = 4; readsize = 256; ; memory "flash" paged = yes; size = 8192; page_size = 64; num_pages = 128; min_write_delay = 30000; max_write_delay = 30000; readback_p1 = 0xff; readback_p2 = 0xff; read_lo = " 0 0 1 0 0 0 0 0", " 0 0 0 0 a11 a10 a9 a8", " a7 a6 a5 a4 a3 a2 a1 a0", " o o o o o o o o"; read_hi = " 0 0 1 0 1 0 0 0", " 0 0 0 0 a11 a10 a9 a8", " a7 a6 a5 a4 a3 a2 a1 a0", " o o o o o o o o"; loadpage_lo = " 0 1 0 0 0 0 0 0", " 0 0 0 x x x x x", " x x x a4 a3 a2 a1 a0", " i i i i i i i i"; loadpage_hi = " 0 1 0 0 1 0 0 0", " 0 0 0 x x x x x", " x x x a4 a3 a2 a1 a0", " i i i i i i i i"; writepage = " 0 1 0 0 1 1 0 0", " 0 0 0 0 a11 a10 a9 a8", " a7 a6 a5 x x x x x", " x x x x x x x x"; mode = 0x41; delay = 6; blocksize = 32; readsize = 256; ; # ATtiny85 a comme Signature les Bytes: 0x1E 0x93 0x08. memory "signature" size = 3; read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", "x x x x x x a1 a0 o o o o o o o o"; ; memory "lock" size = 1; write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", "x x x x x x x x 1 1 i i i i i i"; min_write_delay = 9000; max_write_delay = 9000; ; memory "lfuse" size = 1; write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", "x x x x x x x x i i i i i i i i"; read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", "x x x x x x x x o o o o o o o o"; min_write_delay = 9000; max_write_delay = 9000; ; memory "hfuse" size = 1; write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", "x x x x x x x x i i i i i i i i"; read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", "x x x x x x x x o o o o o o o o"; min_write_delay = 9000; max_write_delay = 9000; ; memory "efuse" size = 1; write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", "x x x x x x x x x x x x x x x i"; read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", "x x x x x x x x o o o o o o o o"; min_write_delay = 9000; max_write_delay = 9000; ; memory "calibration" size = 2; read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", "0 0 0 0 0 0 0 a0 o o o o o o o o"; ; ;
Si vous éditez manuellement, les utilisateurs Mac doivent effacer toutes les références au port parallèle ("type = par;").
Téléchargement Avec AVRdude
Nous somme prêts à utiliser avrdude. Ouvrez la ligne de commande et entrez cette ligne (mais ne pas presser 'return')
avrdude -c usbtiny -p attiny85
Fichier:Adafruit products avrdudet85.gif[2]
Ensuite, connectez Trinket au port USB de votre ordinateur et/ou pressez le bouton de réinitialisation pour entrer en mode bootloader. Vous devriez voir la LED rouge clignoter. Enfin pressez 'return', vous devriez obtenir la même réponse que celle affichée ci-dessous :
Fichier:Adafruit products avrdudet85ok.gif[3]
Si vous obtenez cette réponse
avrdude: Error: Could not find USBtiny device (0x1781/0xc9f)
c'est que le bootloader n'est pas actif, assurez-vous que la LED rouge clignote, pressez le bouton de réinitialisation pour relancer à nouveau le bootloader.
Exemple de Programmation Avec Blink
Pour connaître l'utilisation d'avdude et d'avr-gcc plus en détail, vous aurez besoin de lire un tutoriel détaillé ou un livre sur ces sujets. Cependant, vous pouvez effectuer un test basique en téléchargeant le fichier .HEX suivant, il fera clignoter la LED #1 une fois par seconde. (Il est un peu conséquent notre fichier blink.hex, mais il contient tout l'IDE Arduino. Si vous l'écrivez en langage C pur, il ne ferait que 100 octets)
Cliquez sur le bouton ci-dessous pour le télécharger et placez-le dans le même répertoire que votre invite de commande, dans cette copie d'écran c'est C:\Users\ladyada
!!! trinketblink.hex !!!
Et chargez-le avec la commande : **avrdude -c usbtiny -p attiny85 -U flash:w:trinketblink.hex** ou, s'il vous renvoie des erreurs, **avrdude -c usbtiny -p attiny85 -D -U flash:w:trinketblink.hex** (notez le **-D **supplémentaire)
Comme précédemment, tapez la commande, ensuite pressez le bouton de réinitialisation pour lancer le bootloader et pendant que la LED clignote pressez 'return'.
Lors du chargement, vous verrez s'afficher plusieurs : **avrdude: 8 retries during SPI command** et avertissements similaires. **C'EST NORMAL!** En raison de la façon dont fonctionne les ATtiny85, il existe un petit délai lors de l'écriture du nouveau programme dans la mémoire flash, et pendant ce délai, il ne sait pas enregistrer des données en flash et en même temps envoyer des données par le port USB. Cela provoque donc des réponses de l'USB à l'avrdude d'être retardé et retourne ces tentatives d'alerte.
Fichier:Adafruit products spiretries.gif[4]
Source: Introducing Trinket réalisé par Ladyada pour AdaFruit Industries. Crédit AdaFruit Industries
Réalisé avec l'aide de Mr Carette J. à qui nous remettons tous nos remerciements.
Traduit avec l'autorisation d'AdaFruit Industries - Translated with the permission from Adafruit Industries - www.adafruit.com
Toute référence, mention ou extrait de cette traduction doit être explicitement accompagné du texte suivant : « Traduction par MCHobby (www.MCHobby.be) - Vente de kit et composants » avec un lien vers la source (donc cette page) et ce quelque soit le média utilisé.
L'utilisation commercial de la traduction (texte) et/ou réalisation, même partielle, pourrait être soumis à redevance. Dans tous les cas de figures, vous devez également obtenir l'accord du(des) détenteur initial des droits. Celui de MC Hobby s'arrêtant au travail de traduction proprement dit.