Modifications

Sauter à la navigation Sauter à la recherche
2 525 octets ajoutés ,  1 novembre 2013 à 10:57
Ligne 52 : Ligne 52 :  
Collez ensuite le texte suivant à l'endroit même de ce que vous venez d'effacer!
 
Collez ensuite le texte suivant à l'endroit même de ce que vous venez d'effacer!
   −
<nowiki>   part
+
<nowiki>part
    id = "t85";
+
    id           = "t85";
    desc = "ATtiny85";
+
    desc         = "ATtiny85";
    has_debugwire = yes;
+
    has_debugwire = yes;
    flash_instr = 0xB4, 0x02, 0x12;
+
    flash_instr   = 0xB4, 0x02, 0x12;
    eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D,
+
    eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D,
    0xBC, 0x02, 0xB4, 0x02, 0xBA, 0x0D, 0xBB, 0xBC,
+
            0xBC, 0x02, 0xB4, 0x02, 0xBA, 0x0D, 0xBB, 0xBC,
    0x99, 0xE1, 0xBB, 0xAC;
+
            0x99, 0xE1, 0xBB, 0xAC;
    ## no STK500 devcode in XML file, use the ATtiny45 one
+
## no STK500 devcode in XML file, use the ATtiny45 one
    stk500_devcode = 0x14;
+
    stk500_devcode   = 0x14;
    ## avr910_devcode = ?;
+
## avr910_devcode   = ?;
    ## Try the AT90S2313 devcode:
+
## Try the AT90S2313 devcode:
    avr910_devcode = 0x20;
+
    avr910_devcode   = 0x20;
    signature = 0x1e 0x93 0x0b;
+
    signature       = 0x1e 0x93 0x0b;
    reset = io;
+
    reset           = io;
    chip_erase_delay = 900000;
+
    chip_erase_delay = 900000;
      
+
 
    pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1",
+
     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";
+
                        "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",
+
     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";
+
                        "x x x x x x x x   x x x x x x x x";
   
+
 
     timeout = 200;
+
     timeout = 200;
     stabdelay = 100;
+
     stabdelay = 100;
     cmdexedelay = 25;
+
     cmdexedelay = 25;
     synchloops = 32;
+
     synchloops = 32;
     bytedelay = 0;
+
     bytedelay = 0;
     pollindex = 3;
+
     pollindex = 3;
     pollvalue = 0x53;
+
     pollvalue = 0x53;
     predelay = 1;
+
     predelay = 1;
     postdelay = 1;
+
     postdelay = 1;
     pollmethod = 1;
+
     pollmethod = 1;
   
+
 
     hvsp_controlstack =
+
     hvsp_controlstack   =
    0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66,
+
        0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66,
    0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78,
+
        0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78,
    0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10,
+
        0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10,
    0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00;
+
        0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00;
     hventerstabdelay = 100;
+
     hventerstabdelay   = 100;
     hvspcmdexedelay = 0;
+
     hvspcmdexedelay     = 0;
     synchcycles = 6;
+
     synchcycles         = 6;
     latchcycles = 1;
+
     latchcycles         = 1;
     togglevtg = 1;
+
     togglevtg           = 1;
     poweroffdelay = 25;
+
     poweroffdelay       = 25;
     resetdelayms = 1;
+
     resetdelayms       = 1;
     resetdelayus = 0;
+
     resetdelayus       = 0;
     hvleavestabdelay = 100;
+
     hvleavestabdelay   = 100;
     resetdelay = 25;
+
     resetdelay         = 25;
 
     chiperasepolltimeout = 40;
 
     chiperasepolltimeout = 40;
     chiperasetime = 900000;
+
     chiperasetime       = 900000;
 
     programfusepolltimeout = 25;
 
     programfusepolltimeout = 25;
 
     programlockpolltimeout = 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 has Signature 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";
  −
    ;
  −
    ;</nowiki>
      +
    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";
   −
  Si vous éditez manuellement, les utilisateurs Mac doivent effacer toutes les références au port parallèle ("type = par;").
+
        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";
   −
=== Téléchargement Avec AVRdude ===
+
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";
   −
  Nous somme prêts à utiliser avrdude. Ouvrez la ligne de commande et entrez cette ligne (mais ne pas presser 'return')
+
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";
   −
  avrdude -c usbtiny -p attiny85
+
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 has Signature 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";
 +
    ;
 +
  ;</nowiki>
 +
 
 +
 
 +
Pour les éditeurs MAC qui modifie manuellement le fichier: vous devez effacer toutes les références au port parallèle ("type = par;").
 +
 
 +
== Téléverser avec AVRdude ==
 +
 
 +
Nous sommes maintenant prêts à utiliser avrdude. Ouvrez une ligne de commande et entrez la commande suivante (mais ne pas presser 'return')
 +
 
 +
'''avrdude -c usbtiny -p attiny85'''
 +
 
 +
{{ADFImage|Trinket-AvrDud-10.jpg|480px}}
 
   
 
   
[[Image:adafruit_products_avrdudet85.gif]][http://learn.adafruit.com/assets/10753  ]
   
   
 
   
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 :
+
Connectez ensuite votre Trinket au port USB de votre ordinateur et/ou pressez le bouton de activer le mode bootloader.  
 +
 
 +
Vous devriez voir la LED rouge clignoter. Enfin pressez 'return', vous devriez obtenir une réponse similaire à celle ci-dessous :
 +
 
 +
{{ADFImage|Trinket-AvrDud-11.jpg|480px}}
 
   
 
   
[[Image:adafruit_products_avrdudet85ok.gif]][http://learn.adafruit.com/assets/10754  ]
+
Si vous obtenez la réponse suivante:
+
 
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 Reset/de réinitialisation pour relancer à nouveau le bootloader.
 +
 
 +
Si vous obtenez la réponse suivante:
   −
  avrdude: Error: Could not find USBtiny device (0x1781/0xc9f)
+
  '''avrdude: error: usbtiny_transmit: error sending control message: Operation not permitted'''
   −
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.
+
C'est que vous travaillez probablement sur un système Linux... ajouter '''sudo''' devant la commande pour permettre à AvrDude d'accéder librement au port usb.
     −
=== Exemple de Programmation Avec Blink ===
+
== Blink avec AvdDude ==
   −
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)
+
Si vous voulez connaitre l'utilisation d'AvrDude et d'avr-gcc en profondeur alors il vous faudra lire un tutoriel/livre détaillé sur ces sujets. Vous pouvez cependant effectuer un test élémentaire en téléchargeant le fichier .HEX suivant.
   −
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
+
Cliquez sur le lien ci-dessous pour télécharger le fichier Hex et placez-le dans le même répertoire que votre invite de commande. Dans cette copie d'écran il 'agit de ''C:\Users\ladyada''
 +
 +
* [http://learn.adafruit.com/system/assets/assets/000/010/910/original/trinketblink.hex?1378909867 trinketblink.hex]<br /><small>Vous pouvez également télécharger directement ce fichier depuis la [http://learn.adafruit.com/introducing-trinket/programming-with-avrdude page d'origine d'AdaFruit Industrie]</small>
 +
* [https://raw.github.com/adafruit/Adafruit-Trinket-Gemma-Bootloader/master/trinketgemma_v1.hex trinketgemma_v1.hex] application vide.<br /><small>Vous pouvez télécharger directement ce fichier depuis [http://forums.adafruit.com/viewtopic.php?f=52&t=44262#p221363 la page de support d'AdaFruit] (concernant [http://forums.adafruit.com/viewtopic.php?f=52&t=44262 ce ticket sur "Arduino IDE/AVRDude interaction"]).
 
   
 
   
!!! trinketblink.hex !!!
+
Chargez ensuite le fichier HEX avec la commande : '''avrdude -c usbtiny -p attiny85 -U flash:w:trinketblink.hex'''
 
   
 
   
Et chargez-le avec la commande : **avrdude -c usbtiny -p attiny85 -U flash:w:trinketblink.hex**
+
Si AvrDude vous renvoi une erreur, vous pouvez essayer avec la commande: '''avrdude -c usbtiny -p attiny85 -D -U flash:w:trinketblink.hex''' (notez le '''-D''' supplémentaire)
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 Reset/réinitialisation pour initier le bootloader. Presser la touche "entrée"/Return pendant que la LED clignote.
 +
 
 +
Lors du chargement, vous verrez s'afficher plusieurs message : '''avrdude: 8 retries during SPI command''' et avertissements similaires.
   −
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'.
+
'''C'EST NORMAL!''' et cela est provoqué par le fonctionnement des ATtiny85. Il existe un petit délai lors de l'écriture du nouveau programme dans la mémoire flash. Pendant ce délai d'écriture, AtTiny n'est pas capable de gérer la communication USB. Le support USB informe donc AvrDude du délai de traitement... AvrDude vous informe de cet alerte et fait d'autre tentative.  
   −
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.
+
{{ADFImage|Trinket-AvrDud-20.jpg|480px}}
  −
[[Image:adafruit_products_spiretries.gif]][http://learn.adafruit.com/assets/10756  ]
      
{{Trinket-TRAILER}}
 
{{Trinket-TRAILER}}
29 922

modifications

Menu de navigation