Club robotique de Sophia-Antipolis

Accueil > POBOTpedia > Programmation > Apprendre à coder > Les micro-contrôleurs > Trucs et astuces > Ma carte AVR avec le langage Arduino

Ma carte AVR avec le langage Arduino

lundi 14 janvier 2013, par Jean-Pierre, Julien H.

Certains d’entre nous disposent de circuits personnels ou de cartes du marché utilisant les micro-contrôleurs de la famille AVR :
 gamme myAVR de Devtronic,
 gamme EasyAVR de mikroElectronika
 gamme ICmega de In-Circuit
pour ne citer que les cartes utilisées au club.

Tous fonctionnent sur le même principe : une compilation sur l’ordinateur de développement, puis l’envoi d’un fichier binaire dans la puce par bootloader série ou par programmateur ISP.

Ces points ont été développés dans différents articles du site. Si nous les rappelons, c’est parce que cette chaîne de compilation et de téléchargement est identique pour Arduino !

En effet, l’environnement de développement Arduino et la simplicité du langage auraient pu faire penser que le fonctionnement était différent. Il n’en est rien et il suffit de quelques étapes pour pouvoir programmer son µC AVR avec un code développé et compilé sur Arduino.

Récupérer le fichier .HEX

Cette étape est importante pour vérifier le bon fonctionnement des programmes compilés avec Arduino, en récupérant le binaire (au format Intel HEX) et en l’envoyant dans votre circuit AVR avec votre programmateur habituel, tant qu’il est compatible avec ce format (très répandu) HEX.

La compilation sous Arduino consiste à faire appel à différents outils de compilation avec des étapes intermédiaires, différents fichiers temporaires et au final la construction du binaire .hex. Toutes ces étapes sont masquées par défaut mais on peut faire apparaître dans la fenêtre de dialogue de l’environnement toutes les informations détaillées de ces étapes.

Pour ce faire, deux options selon la version de l’environnement Arduino :

 pour les plus récentes, il suffit d’activer une case à cocher dans les préférences accessibles par le premier menu.

 pour les plus anciennes, il faut aller récupérer l’emplacement du fichier texte des préférences, également disponible dans la fenêtre des préférences accessible via le premier menu de l’IDE, puis ouvrir ce fichier et modifier ou ajouter la ligne concernant "build.verbose" en mettant la valeur "=true" (ce qui signifie : mode verbeux pour la compilation est vrai.

Lors de la compilation, vous verrez apparaître le chemin vers le fichier .hex comme ceci :

Vous n’avez plus qu’à copier le chemin pour y accéder via l’explorateur de fichier, ou bien selon votre outil de programmation, juste à coller le chemin vers le fichier dans la fenêtre de l’outil sans même aller chercher le fichier lui-même.

Si vous avez un circuit à base de micro-contrôleur AVR ATmega168 ou ATmega328 avec un quartz de 16 MHz, il n’y a plus qu’à programmer votre puce avec le fichier obtenu.

Compiler pour un micro-contrôleur différent

Si vous utilisez un autre micro-contrôleur Atmel AVR, il faut déclarer une nouvelle carte. C’est assez aisé, mais il faut d’abord retrouver le répertoire d’installation de votre Arduino. Comme c’est une archive zip, il est facile de s’y perdre lorsqu’on utilise plusieurs versions (clin d’œil à un adhérent).

Dans cette archive, à côté du programme Arduino avec l’icône bleue reconnaissable, plusieurs répertoires existent : il faut aller sous "hardware" puis sous "arduino". Vous trouverez là un fichier "boards.txt" qu’il faut éditer.

Attention à l’indentation qui nécessite un éditeur de texte multi-protocole, ce que vous devez avoir avec Programmer’s Notepad si vous utilisez déjà la chaîne AVR-GCC et WinAVR pour programmer vos circuits. Pour les Linuxiens, vous n’avez pas ce souci. De toute façon entre nano, vi, emacs, gedit, etc... le choix est vaste et c’est sans doute votre dada de gonfler les pieds du premier venu avec les raisons intrinsèques de votre choix d’éditeur. OSEF !

Bref, une fois le fichier ouvert, faites très attention : la moindre modification des lignes pourrait rendre impossible la programmation des cartes concernées.

Placez-vous à la fin et recopiez les lignes en fonction de votre MCU (micro-contrôleur) :

##############################################

avrAmoi.name=La carte à Toto

avrAmoi.build.mcu=atmega8
avrAmoi.build.f_cpu=1000000L
avrAmoi.build.core=arduino

Et voilà pour Toto qui utilise une carte myAVR équipée d’un ATmega8 avec l’oscillateur interne à 1 MHz.

Et ça bagotte (bon sur une photo on ne voit pas la led 13 (ou PORTB.5) clignoter, mais si si vendredi à minuit dix ça a fonctionné :

Utiliser son programmateur depuis Arduino

D’autres manipulations sont possibles dans les fichiers de configuration du logiciel Arduino pour déclarer son programmateur, tant qu’il est compatible avec les modes de téléchargement d’AVRdude, le logiciel multi-protocoles utilisé dans la chaîne de développement AVR-GCC / Arduino.

Et avec un autre PIC ?

Certains ont tiré parti de la convivialité de l’environnement Arduino et de la communauté importante échangeant du code source pour d’innombrables bibliothèques et exemples pour porter la chaîne de compilation pour d’autres cibles que les AVR, notamment les PIC.

Cet aspect n’entre pas dans le cadre de cet article. Nous invitons les personnes qui connaissent de telles solutions à nous en faire part en publiant elles-aussi des articles sur le sujet.

Un message, un commentaire ?

modération a priori

Attention, votre message n’apparaîtra qu’après avoir été relu et approuvé.

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.