• Programmateur AVR USB

    Programmeur d'AVR USB

     

    Coucou :)

    Je vous propose un petit programmateur pour les "AVR d'atmel". Par exemple pour les "Atmega128, 328"(les microcontrôleurs qui ce trouve sur les cartes arduino), ou encore les "Attiny 45, 85"

    On pourra aussi programmer directement une carte arduino avec... (par contre ce programmeur ne permet pas la communication série avec votre pc )

    Ne vous fiez surtout pas à la longueur de cette article car le programmateur et opérationnel en très peu de manipulations.

     

    On commence!

     

    Note: "Ha oui... je ne vous ai pas tout dit... ce programmateur n'est pas un foudre de guerre . Ca vitesse de transfert est assez lente donc ne vous étonnez pas si c'est un peu long lors de l'upload du programme"

     

     

    Tout d'abord voici le matériel qu'il vous faudra pour le programmateur:

    - x1 programmateur pour AVR (désoler mais ce n'est pas une blague, oui il faut un programmateur pour faire un programmateur). vous avez le choix des armes ici: arduino, usbISP, usbasp, port rs32, port parallèle...ect.

    Note : " Dans ce tuto Je vais vous montrez un exemple avec le port parallèle. Je sais que les ordinateurs ont tendance à ne plus en être équipé mais c'est très simple à mettre en place et ça marche très très... mais alors... très bien! "

    - Le logiciel AVRdude (programme qui ce déroule dans un terminal)

    - x1 Attiny 45/85 ( Vous pouvez utiliser d'autre Attiny mais il faudra recompiler les sources d'usbtiny ...) 

    - x2 diodes zener 3.6 (Attention prenez des diodes de moins d'un 1W, à titre d'exemple des 1n747 ou BZX79 ect... )

    - x2 résistances 68ohms 1/4W

    - x1 résistance 1K 1/4W

    - x1 condensateur céramique 100nF

    - x1 câble usb

    - optionnel des connecteurs mâle et femelle 6 pins chacun et un support 8 broches pour l'Attiny.

    voici à quoi ça peut ressembler (chaque personne a sa touche perso et ce montage peut tenir sur la taille de l'Attiny donc très petit chercher sur le net "vusbtiny"):

     

    Programmeur d'AVR USB

     

    Étape 1

    La première étape est de programmer notre petit Attiny.

     

    Programmer c'est bien... mais on met quoi dans cette Attiny...?

     

    Et bien ceci (fichier à télécharger):

    Télécharger « programmateur vusbtiny45/85.tar.gz »(Programme déjà compilé .hex pour Attiny45 et Attiny85)

    Télécharger « vusbtiny.tgz » (Sources pour compilé avec un autre microcontrôleur)

     

    L'archive "vusbtiny45/85.tar.gz" contient deux fichiers compilés prés à être écris dans votre ATtiny. 

    L'autre archive contient les sources du programme d'origine. Il faudra ajuster le "makefile". Puis compiler le tout.

    Note : " Pour la compilation des sources j'ai eu des soucis et je ne suis arrivé à le faire correctement qu'avec la version 10.04 de ubuntu (lucid)."

     

    Méthode 1 : La compilation

    Commencer par installer les paquets suivants (seulement Linux) :

    apt-get install avrdude binutils-avr gcc-avr avr-libc gdb-avr

    Pour compiler et flasher directement l'Attiny:

    - Brancher votre programmeur a l'Attiny.

    - Décompresser l'archive et ajuster le "makefile"

    - Ouvrez un terminal puis déplacer vous avec la commande "cd" dans votre répertoire "vusbtiny-master"

    - Lancer la commande "sudo make" puis "sudo make install"

    - Si tout est ok verrouiller les fusibles avec avrdude:

    avrdude -c (nom de votre programmeur) -p (nom de l'Attiny) -V -U lfuse:w:0xe1:m -U hfuse:w:0x5d:m -U efuse:w:0xff:m

     

    Personnellement... chez moi cette méthode n'a pas marché... XD  Impossible de compiler les sources avec la version 14.04 de ubuntu.

    Il a fallu passer pas une version antérieur -> 10.04 via une machine virtuel et ça marche.

     

     

    Méthode 2: Avec un exécutable (conseillé)

    Ici on va utiliser l'exécutable que je vous fournie (pas de compilation qui risque de ne pas marché selon les versions des OS et multiplate-forme).

    Voici un exemple (détaillé) avec le port parallèle comme programmateur et un Attiny45.

     

    Bien, le port parallèle..., vous pouvez juste relier les pins directement de derrière votre pc à votre Attiny avec quelque bout de fils si vous n'avez pas de câble.

    Par contre on aura besoin de 2 résistances de 1K et du logiciel "AVRdude".

    Pour installer AVRdude et les dépendances pour les AVR sous linux lancer la commande:

    sudo apt-get install avrdude binutils-avr gcc-avr avr-libc gdb-avr

     

    Note : " Certain site préconise de mettre une 3eme résistance sur le MOSI, sur d'autre ils en mettent sur toute les pins connectées mais chez moi ça bloque la communication. Je vous conseil d'essayer avec les 3 résistances, si ça ne marche pas enlevez celle du MOSI en dernier recour.

    voir aussi le site officiel arduino : ParallelProgrammer "

     

    voici le câblage qui marche chez moi (essayez avec les 3 résistances d'abord! ) :

     

     

    Programmeur d'AVR USB

     

    Pin pour l'Attiny:

    port      |      AVR               |    resistance en série

    Pin 1     |     SCK     pin7    |    1K
    Pin 2     |     MOSI   pin5    |    1K
    Pin 11   |     MISO   pin6    |    1K (optionnel)
    Pin 16   |     RESET pin1    |
    Pin 21   |     GND     pin4   |

     

    /!\ Important: connecté la pin 8 de l'Attiny au +5V. Pour cela utiliser l'alimentation USB de votre PC. Si vous utilisez une source extérieur la communication risque d'être difficile  /!\

     

    Note : " Sachez qu'il est possible de programmer beaucoup d'AVR avec ce principe. Par contre certain micro on besoin d'une horloge externe pour que la communication ce passe correctement. Les microcontroleurs ont toujours besoin d'être alimenté! Attention au Atemega qui ont 2 VCC et 2 GND connectez bien les 2 VCC ensemble est les 2 GND ensemble "

     

     

    Voici encore une foie à quoi cela peut ressembler (il manque l'alim 5V sur la pin 8 (en haut à droite) !!! attention n'oubliez pas de la brancher! ):

     

     

    Programmeur d'AVR USB

     

    Bien on va lancer AVRdude

    - Lancez avrdude avec la commande suivante: 

    (sudo sous linux) avrdude -p t45 -P /dev/parport0 -c dapa 

    -p t45 pour Attiny45 ( t85 pour Attiny85, ect... ) -P /dev/partport0 port de communication et -c dapa et le type de programmateur (port parallèle)

     

    Si vous recevez un message du genre:

    avrdude: AVR device not responding
    
    avrdude: initialization failed, rc=-1
    
    Double check connections and try again, or use -F to override this check.
    
    avrdude done.  Thank you.

     

    N'allez pas plus loin vérifiez vos branchements, l'alimentation de votre micro, essayer avec une résistance en moins ect...

    Sinon si avrdude vous répond et vous montre les fusibles ou "fuse" alors tous va bien continuez.

     

    - Télécharger l'archive avec les .hex

    - Dirigez vous vers l'emplacement de votre fichier avec la console et la commande: "cd" exemple(windows et linux partage la même commande):

    cd /Mes documents/Téléchargement

    -Une foie dans le répertoire ou ce trouve "vusbtiny45.hex" lancez la commande suivante:

    avrdude -p t45 -P /dev/parport0 -c dapa -U flash:w:$vusbtiny45.hex 

    là ça devrait mouliner un peu. Si AVRdude vous répond dessuite c'est qu'il y a un problème.

    Si il n'y a pas d'erreur et SEULEMENT SI... le programme et bien flasher!!!

    - lancer la commande:

    avrdude -c dapa -p t45 -V -U lfuse:w:0xe1:m -U hfuse:w:0x5d:m -U efuse:w:0xff:m

     

    /!\ ATTENTION après cette étape l'Attiny ne pourra plus être programmé comme ça. Il faudra brûler les fusibles avec la méthode du 12V /!\

     

    Note: " Vous pouvez très bien utilisez une carte arduino avec AVRdude et faire la même opération pour graver le programme allez voir ici  c'est pas mal détaillé.

    http://fernitronix.fr/fr/electronique/transformer-un-arduino-en-programmateur-d-avr "

     

    Si tout c'est bien passé votre Attiny est programmé il ne reste plus cas le monter.

    Voici le schéma sur un breadboard du programmateur:

     

    Note: " Il est possible de programmer l'attiny lorsque le montage est effectué. Je ne vous les pas fait faire car c'est plus simple à débuger lorsque c'est la premier foie qu'on le fait. "

     

    Programmeur d'AVR USB

     

    le schéma:

    Coté USB -> Attiny

    Vcc ->  pin 8      

    D- -> pin 3

    D+ -> pin 2

    GND -> pin 4

     

    ATtiny -> cible

    pin 5 -> SDA

    pin 6 -> MISO

    pin 7 -> MOSI

    pin 8 -> Vcc de la cible

    pin 4 -> GND de la cible

     

    Programmeur d'AVR USB

     

    Une foie notre montage câblé on va tester s'il est bien reconnu (en gros si la gravure du programme a marché).

    • Pour ce faire sous linux ouvrir une console et lancer la commande " lsusb " (sans les guillemets bien sur). Vous devriez avoir un truc dans ce genre:
    Bus 004 Device 005: ID 1781:0c9f Multiple Vendors USBtiny

    (cela veut dire que notre programmeur est bien reconnu et que tout est prés pour continuer)

    • Sous windows vous devriez entendre un bruit comme lorsque vous connectez une clé usb. En regardant dans les périphériques le programmeur devrait apparaître chercher USBtiny .

     

     

     

    Bon!

    On est pas mal du tout. Maintenant sachez  que votre programmateur est d’ores et déjà opérationnel vous pouvez l'utiliser avec AVRdude il faut juste changer le nom du programmeur par : " -c usbtiny "

    un exemple pour communiquer avec un Atemega328P (en root pour linux):

    avrdude -c usbtiny  -p m328p  

     Vous devriez recevoir ceci:

    avrdude: AVR device initialized and ready to accept instructions

    Reading | ################################################## | 100% 0.01s

    avrdude: Device signature = 0x1e950f

    avrdude: safemode: Fuses OK (H:05, E:DE, L:FF)

    avrdude done.  Thank you.

     

     

    Etape 2

     

    IDE ARDUINO:

    • aller ensuite dans: outils-> type de carte-> sélectionner votre carte
    • Outils-> programmateur-> USBtinyISP
    • Croquis -> Téléverser avec un programmateur ( raccourcie utile Ctrl+Maj+u)

     

    Note: " Pour linux il faut ajouter une règle pour ne pas avoir à ouvrir Arduino en Root :

    sudo gedit /etc/udev/rules.d/10-usbtinyisp.rules
    Coller:
    SUBSYSTEM=="usb", SYSFS{idVendor}=="1781", SYSFS{idProduct}=="0c9f", GROUP="adm", MODE="0666"
    Recharger les règles :
    sudo restart udev

    "

     

    Si vous disposez d'une carte arduino câblez là avec les pins prévues pour la programmation par ISP (les pins en bout de carte) et essayez de téléverser la fonction "BLINK" :)

     

    Programmeur d'AVR USB

     

     

     

     

    Cible: Attiny!

     

    Pour la programmation des "Attiny":

    Rendez-vous sur cette page: highlowtech.org

    C'est de l'anglais oui je sais... Chercher dans la page le paragraphe "Download"

    Là ce trouve deux liens:

    - un pour les versions 1.6 de l'IDE arduino

    - un pour les versions inférieur 1.0...

     

    Si vous avez une version 1.6:

    une foie l'archive téléchargée et décompressée ouvrez la. Vous devez avoir un dossier "Attiny". Copier ce dossier dans le dossier "hardware" de votre IDE. Le chemin ressemble à ceci ../arduino1.6/hardware/Attiny. c'est tout ce qu'il y a à faire!

    Ouvrez votre IDE allez dans outils->type de carte-> sélectionner Attiny.

    Régler l'horloge de votre Attiny: outils->Clock->sélectionner ça fréquence.

    Et finir par régler le type d'Attiny: outils->Processeur->sélection votre Attiny.

    vous êtes prêt à programmer! 

     

    Pour les versions antérieurs du type 1.0... :

    C'est la même chose copier le dossier "Attiny" dans  ../arduino1.0.x/hardware.

    Régler votre Attiny dans outils->type de carte. C'est tout :)

     

    Si vous programmez vos ATtiny ou ATmega par ISP le bootloader n'a pas besoin d'être graver.

     

    Vous pouvez maintenant programmer les "AVR Attiny" ! 

     

     Amusez-vous bien ;)

     

    Voici les liens vers les sites qui mon permis de faire tout ça:

    http://www.simpleavr.com/avr/vusbtiny (Tuto en anglais)

    https://code.google.com/p/arduino/wiki/Platforms ( Pour la configuration du fichier board.txt )

    http://skyduino.wordpress.com/2011/12/02/tutoriel-avrdude-en-ligne-de-commande/  ( installation et utilisation de avrdude sous windows peut servir pour linux aussi )

    http://www.timteatro.net/2012/03/22/beginning-atmel-avr-development-in-linux-using-avr-eclipse-avr-gcc-and-avrdude/ (installation avrdude sous linux)