HACKS/CODES MICROCONTRÔLEURS
Coder pour Atmel ATtiny
Denis Bodor
EN DEUX MOTS
Dans un précédent hors-série (23),
nous avons découvert la famille de microcontrôleurs
Atmel AVR avec GCC et l’ATmega16. Nous allons
aujourd’hui descendre dans la gamme et toucher
l’ATtiny via un développement en assembleur
AVR.
90
GNU LINUX MAGAZINE FRANCE
91
1. Ode à l’AVR
our les lecteurs ayant raté le hors-
série 23, voici un petit résumé
de ce qu’est un microcontrôleur
AVR. Un microcontrôleur est
un processeur couplé à de la mémoire
(Flash de préférence) et à un ensemble de
fonctionnalités intégrées (convertisseurs,
timers, sources d’interruption interne et
externes, etc.).
Pour utiliser le microcontrôleur, il suft de
créer un code et de le télécharger dans le
composant. Dès la mise sous tension (ou
après un reset), le microcontrôleur exécute
le code embarqué.
Il existe des centaines de microcontrôleurs
produits par différents fabricants parmi
lesquels Microchip, SGS Thomson, Intel ou
encore Atmel. Ce dernier propose une vaste
gamme appelée AVR qui est directement
concurrente de la gamme proposée par
Microchip sous le nom de PIC. AVR et PIC
sont souvent mis dans le même panier, car ils
font l’objet d’une attention toute particulière
de la presse et des sites spécialisés en
électronique.
En effet, AVR comme PIC disposent d’une
large logithèque, sont peu onéreux et
relativement faciles à programmer, par rapport,
par exemple, aux dérivés de 68HC11/12.
La popularité des deux gammes, PIC et
AVR, permet à l’utilisateur GNU/Linux
de disposer d’un certain nombre d’outils
de développement, contrairement aux
autres microcontrôleurs du marché, pour
lesquels il n’existe souvent que des solutions
Windows.
Les différents modèles d’une gamme
se distinguent en fonction de plusieurs
caractéristiques :
La taille de mémoire Flash utilisable allant
du simple ko à 256 ko. Il faut préciser ici que cette valeur
est relative, car certains microcontrôleurs se programment
en mots de 16 bits et d’autres de 12 bits. Le nombre
d’instructions téléchargeables dans la mémoire est donc
variable selon le modèle et le fabricant.
Le nombre d’entrées/sorties, de 3 à près d’une centaine.
La puissance en fréquence d’horloge ou en MIPS.
Le nombre de convertisseurs analogique/digital.
Le nombre de registres de travail et/ou le volume de
mémoire vive (RAM).
Les fonctionnalités courantes (timer, watchdog, PWM,
etc.).
Les fonctionnalités spéciques (USB, USB On-The-Go
(OTG), wireless, i2c, etc.).
Le format (PDIP, SOIC, TQFP, PLCC, etc.).
Le prix.
C’est un avis tout personnel, mais l’AVR semble se distinguer
très clairement des PIC et autres concurrents :
Une partie de la gamme AVR accepte du code développé
avec GCC (ATmega par exemple) en raison de l’important
volume de mémoire Flash. Comme l’article du hors-série
le présentait, il est parfaitement possible d’écrire du code
C efcace pour un microcontrôleur AVR et proter d’une
bibliothèque C spécialisée. Les petits modèles d’AVR se
programmeront en assembleur. C’est l’objet du présent
article.
La programmation du microcontrôleur AVR est dite
« ICSP » ou « in situ ». Le microcontrôleur est connecté
classiquement, comme pour sa mise en œuvre dénitive et on
greffe une connectique spécique pour le programmer sans
avoir recours à un montage spécial (un programmeur). La
liaison AVR/PC se fera généralement via un port parallèle (il
existe également des adaptateurs série). Les PIC nécessitent
souvent un programmeur comme le montage JDM (voir
GLMF 73, juin 2005) via un port série RS232 en voie de
disparition sur les congurations actuelles et posant un
certain nombre de problèmes d’alimentation. Dans les
deux cas, AVR comme PIC, les logiciels permettant le
chargement du code dans la mémoire du microcontrôleur
existent sous GNU/Linux.
L’assembleur utilisé pour les AVR est plus abordable pour
le débutant. Certes, ce langage reste ce qu’il est, mais
les PIC ajoutent à la complexité en travaillant avec deux
banques (16F628 par exemple) avec lesquelles il faut jongler.
Le jeu d’instructions de l’AVR est plus riche et, même si
cela ne semble pas être un élément important pour les
spécialistes, on dispose d’une plus grande liberté dans le
développement.
Arrêtons là le comparatif qui reste nalement très subjectif.
PIC et AVR, autrement dit, Microchip et Atmel, sont en guerre
sur ce secteur de marché et cela ne date pas d’hier. En 1997,