Débuter avec un microcontrôleur AVR

Le schéma et le cablâge

Dans cet exemple j'ai choisis un microcontrôleur 8 bits de Atmel un ATtiny13. Il possède 6 entrées/sorties numériques, dont 4 analogiques, 1 Koctets de mémoire flash et il se loge dans un boitier DIL à 8 broches.
On peut utiliser aussi la série ATtiny25/45/85 compatible broche à broche avec 2K/4K/8K de mémoire.

Le but est de programmer ce microcontrôleur pour faire clignoter une LED en utilisant le basic ou le C. Un premier programme qui permettra après de passer à d'autres plus complexes ultérieurement.

L'attiny sera câblé comme sur le schéma structurel ci-contre : Il est alimenté en 5 V, un condensateur de 100 nF assure le découplage de l'alimentation.
La broche 1 de remise à zéro (Reset) est laissée en l'air car une résistance de rappel interne la relie à Vcc.
Sur la sortie 2 (PB3) une LED et sa résistance série sont montées. Les autres sorties PB0 à PB4 peuvent être utilisées de la même façon. Attention toutefois à ne pas surcharger le microcontrôleur ( 200 mA maxi pour Vcc).

On utilise l'oscillateur interne de l'ATiny13 à 9,6 Mhz, on se passe d'un oscillateur à quartz, ce qui simplifie le schéma.

La réalisation du montage peut se faire sur une plaque de connexions comme sur la photo ci-contre ou sur une plaquette d'expérimentation.

La programmation en basic

Programmer un microcontrôleur en basic est de loin la méthode la plus simple. Ici pas d'assembleur, quelques lignes de programmes suffisent.

Il faut pour cela un environnement de développement (IDE) et un programmateur pour AVR :

- J'utilise le programmateur MikroProg for AVR de MikroElektroniKa, mais tout autre programmateur AVR convient.

- L'IDE est Bascom en version Démo de MCS Electronics , la limitation du code à 4Koctets est bien suffisante pour ce programme.

Voici le programme

Quelques commentaires supplémentaires :

' représente des commentaires et ne sont pas pris en compte pour la compilation.

$crystal donne la valeur de l'oscillateur interne à 9,6 Mhz

Config Portb met le port B en sortie.

Do Loop est une boucle qui se répète sans fin.
Dans la boucle, toute les 0,5 seconde on change l'état de la sortie PB3, avec la fonction Toggle.

Waitms permet une temporisation de 0,5 s.

Programme au format Texte
L'utilisation de Bascom est très simple, il suffit d'écrire les lignes de code et de les compiler. Le programme fabriquera automatiquement le fichier .hex nécessaire à la programmation.

La programmation en C

Programmer un microcontrôleur en C est un peu plus compliqué. Il faut bien respecter la syntaxe. Des fichiers complémentaires sont à charger.

L'environnement de développement (IDE) est celui du constructeur ATMEL AVR studio 4, cette version ancienne est suffisante et toujours disponible, avec le compilateur C WinAVR gratuit . Les nouvelles versions Atmel studio fonctionne aussi.
Le programmateur USB est le même que pour la programmation en Bascom.

Voici le programme

Quelques commentaires supplémentaires :

// représente des commentaires et ne sont pas pris en compte pour la compilation. Le programme commence à int main (void)

{} encadre les instuctions qui doivent se terminer par un ; (point virgule)

#include inclus les fichiers d'entête io.h (gestion des entrées /sorties) et delay.h (fichier pour la temporisation en ms).
_delay_ms est une fonction qui utilise delay.h.

DDRB donne la direction du Port B, ici en sortie

while (1) est une boucle sans fin car la valeur 1 ne peut être vraie.

Programme au format Texte

L'utilisation de l'IDE AVR studio 4 est simple. Il suffit de suivre les 3 étapes suivantes. Si la compilation est réussie un fichier .hex est créé pour le programmateur.


Programmer le microcontrôleur

Il faut un programmateur et son logiciel. On utilise le fichier au format Intel (.hex) créé par le compilateur.

Tous les fichiers sont disponibles pour les 2 IDE.

Fichiers Bascom
Fichiers AVR Studio