AVR – Annexe – Tutoriel sur l’utilisation d’un Arduino comme programmateur AVR

Je suis convaincu que la théorie vous ennuie autant que moi sans pratique, alors voici de quoi essayer vos programmes fraîchement écrit, sur un microcontrôleur.

Faites votre propre programmateur avec un Arduino

Liste du materiel et des logiciels

Il vous faudra :

  • un Arduino (peu importe la version, tant que vous savez l’utiliser)
  • un condensateur de 10 μF
  • une plaque de prototypage
  • quelques câbles

Pour la partie logiciel :

  • L’environnement de développement Arduino, disponible ici
  • WinAVR, par là, qui contient le compilateur AVR GCC mais qui a aussi la délicatesse d’installer une série d’outils provenant du monde Unix, dont Make
  • Un bon éditeur de code, j’utilise pour ma part Vim
  • Un Makefile, voici le mien  (je l’ai adapté d’un que j’ai trouvé sur le net, mais je ne retrouve plus la source)

Configuration de l’Arduino

Avant de procéder au montage, il est important de configurer l’Arduino pour qu’il agisse comme un programmateur (ISP). Branchez le donc seul (sans rien connecter sur les broches), et démarrez l’environnement de développement.

Dans le menu, sélectionnez Fichier > Exemples > ArduinoISP. Je ne m’attarderai pas sur ce code, il est documenté et long. Programmez votre Arduino avec celui-ci. Une fois terminé, vous n’aurez plus besoin de l’environnement de développement, quittez-le.

Votre Arduino est maintenant utilisable en tant que programmateur, à moins bien sûr que vous le reprogrammiez.

Montage

Ensuite il vous suffit de faire les connexions suivantes :

  • les broches 10, 11, 12 et 13 de l’Arduino respectivement sur les broches 1, 7, 6 et 5 de l’ATtiny85 (RESET, MOSI, MISO, SCK)
  • les broches VCC de l’ATtiny85 (broche 8) et de l’Arduino
  • les broches masse (GND) de l’ATtiny85 (broche 4) et l’Arduino
  • le condensateur entre GND et RESET sur l’Arduino, le (-) vers la masse.

arduino_as_ISP_bb

Voilà, c’est prêt ! Cependant, l’utilisation d’une plaque de prototypage n’est pas le plus pratique, je vous conseille donc de réaliser une «carapace» Arduino (appelé shield). Attaquons maintenant la programmation.

Préparez votre environnement

Si vous avez installer WinAVR, celui-ci a dû configurer votre variable d’environnement PATH afin d’y ajouter ses commandes (en plus de quelques commandes Unix).

Créer le projet

Décider d’un nom

Commencez par créer un dossier avec un petit nom assez distinctif mais pas trop long. Dans mon exemple, je l’appelle «blink», car il s’agit de faire clignoter une diode.

Ajouter un Makefile

Copier le fichier Makefile (enlevez le .txt) et éditez le. Les premières lignes servent à configurer la compilation et la programmation. Voici un tableau qui vous aidera à comprendre comment il fonctionne.

PRG Un nom court pour le programme
OBJ Le nom du fichier que le compilateur créera
PROGRAMMER Le type de programmateur utilisé. Ici un ISP basé sur AVR donc avrisp
PORT le port série sur lequel est branché l’Arduino.
MCU_TARGET le type de microcontrôleur pour le compilateur. Pour avoir la liste des valeurs disponibles : [cci]avr-gcc –target-help[/cci]
AVRDUDE_TARGET le type de microcontrôleur pour le programmateur. Pour avoir la liste des valeurs disponibles : [cci]avrdude -p ?[/cci]
OPTIMIZE Une série d’options dédiées au compilateur
DEFS Des options pour le compilateur
LIBS Des options d’ajout de bibliothèques pour le compilateur
FUSE la configuration des fusibles du microcontrôleur. On y jettera un œil plus tard.
HZ la fréquence de l’horloge du microcontrôleur.

Ajustez en fonction de votre configuration.

Écrivez votre code

Il vous suffit d’ajouter un fichier nommé avec le nom de votre projet, suivi de « .c ». Ici, mon code source est enregistré dans le fichier blink.c.

Compilez le code et programmez votre microcontrôleur

La compilation

L’utilisation d’un Makefile facilite grandement les opérations ; entrez seulement [cci]make[/cci]. Vous noterez qu’une série de fichiers viennent d’apparaître dans le répertoire de votre projet.

La préparation du microcontrôleur

Les fusibles du microcontrôleur permettent de configurer la vitesse de l’horloge, l’utilisation de la broche RESET ou le chien de garde (watchdog). La gestion des fusibles est sensible, car une mauvaise configuration peut endommager votre matériel (même s’il est possible de rétablir les fusibles ; j’ajouterai un tutoriel pour cela).

Par défaut, j’utilise une horloge cadencée à 8Mhz, je désactive le chien de garde, et je laisse la broche RESET tranquille. Pour régler les fusibles, utilisez la commande [cci]make fuse[/cci].

La programmation

Vous y êtes ! La dernière étape consiste à envoyer le programme vers votre ATtiny85. Entrez [cci]make install[/cci]. Une fois les barres de progression terminées, vous pouvez débrancher votre microcontrôleur et l’assembler dans votre projet.

 

10 réflexions au sujet de « AVR – Annexe – Tutoriel sur l’utilisation d’un Arduino comme programmateur AVR »

  1. bonjour
    pouvez vous m aider
    j ai achete un arduino uno une horloge et un relais de ce cote j ai le schema de montage
    mais je veut faire un programmateur qui allume une « lampe » de 7h a 22h toute les 10minutes pendant 30 secondes
    pouvez vous m aider pour le programme car je n y connais vraiement rien
    merci d avance

    1. Mon site n’a pas vocation à enseigner le développement sur Aduino, néanmoins voici quelques pistes :
      Il vous faut récupérer l’heure depuis l’horloge, puis appliquer un algorithme comme celui ci :

      //si les minutes se finissent par 0 et que les secondes sont entre 0 et 29, alors on allume, sinon on éteint
      if(minutes%10==0 && secondes<30){pinOutput(LAMP_PIN,HIGH);}
      else{pinOutput(LAMP_PIN,LOW);}

  2. Bonjour,

    Ce site est vraiment superbe !
    Mais j’ai un problème : quand je lance la commande make après avoir téléchargé le MakeFile et renommé sans extension, le make produit des erreurs de syntaxes … Pourriez vous m’aider ?

    1. Quelles erreurs ? Linux ou Windows ?

      Et désolé d’avoir répondu si tard, j’ai dû dépiler plus de 700 commentaires (du spam pour la plupart)

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*