Vous êtes sur la page 1sur 10

Le microcontrôleur Atmel

Atmega16

Jean Louis BOIZARD


Maître de conférences Université Toulouse II

Version 3.0

cours_atmega16_v3.doc 1
Le microcontrôleur Atmel Atmega16

1) Généralités sur les microprocesseurs et microcontrôleurs


1.1) Historique et évolution
1.2) Domaines d’utilisation
1.3) Architecture d’un système à µP
1.4) Architecture interne d’un µP
1.5) Architectures RISC et CISC
1.6) Les microcontrôleurs

2) Les méthodes et outils de développement


4.1 Les langages de programmation
4.2 Les simulateurs
4.3 Les émulateurs « In circuit »
4.4 Les émulateurs « temps réel » à mémoire trace
4.5 Les émulateurs « low cost »

3) Le microcontrôleur ATMEL Atmega16


5.1 Présentation
5.2 Organisation de la mémoire
5.3 Architecture du microprocesseur
5.4 Reset, interruptions et veille
5.5 Le jeu d’instructions
5.6 Les directives d’assemblage
5.7 Les périphériques

cours_atmega16_v3.doc 2
Avant-propos

Le présent document a pour objectif principal de démystifier le fonctionnement des


microcontrôleurs.
L’évolution considérable des outils de développement fait qu’il est tout à fait possible
de construire aujourd’hui des applications à base de ces composants sans en avoir a priori une
connaissance intime.

Afin d’aborder le contenu de ce cours dans les meilleures conditions, le lecteur aura avantage
à revoir/assimiler les points suivants :

- Numération binaire et hexadécimale


- logique combinatoire et tables de vérité
- logique séquentielle (essentiellement les bascules de type D ou flip flop et les
compteurs)

Remarque :
Une partie de la documentation sur les entrées sorties du microcontrôleur Atmega16 est
reprise de la documentation de J.M. SEGURET, enseignant au Lycée Tehnique Maurice
Genevoix d’INGRE dans le LOIRET.

cours_atmega16_v3.doc 3
1) LE MICROPROCESSEUR

1.1) Historique

Le premier microprocesseur (Intel 4004) a été inventé en 1971. C’était un processeur


ayant un bus de données de 4 bits. Sa fréquence de travail était de 108 Khz et il
comportait 2300 transistors. Avec l’évolution de la technologie et l’arrivée des circuits
sub-microniques (tracés inférieurs au micron), les performances des circuits
électroniques ont décuplé tant par leur vitesse de traitement que par leur niveau
d’intégration. Le tableau ci-dessous donne un aperçu de cette évolution (source
INTEL).

année référence Bus fréquence Nbre de


données transistors
1971 4004 4 108 Khz 2300
1974 8080 8 2 Mhz 4500
1978 8086 16 10Mhz 29 000
1985 386 32 40Mhz 275 000
1993 Pentium 32 75Mhz 3.5 M
1995 Pentium Pro 32 150Mhz 5.5 M
1997 Pentium II 32 233Mhz 7.5 M
1999 Celeron 32 850Mhz 9.5 M
2000 Pentium IV 64 1.5 Ghz 55 M
2004 Pentium IV série 600 64 3.73 Ghz 169 M

1.2) Domaines d’utilisation

De part leur facilité de mise en œuvre et leur coût de revient très bas les
microprocesseurs (microcontrôleurs) sont utilisés dans de nombreux domaines :

- Automobile (ex : Volvo S80 équipée de 11 µC/µP)


- Aéronautique (ex : calculateur de vol Airbus A320)
- Electroménager ( four électrique, micro-onde, lave-linge, …)
- Machines outils
- Mesure et régulation (oscilloscopes numériques, multimètres, PID, …)
- Stations de travail (PC, station SUN, …)
- Distributeurs de boisson
- …

cours_atmega16_v3.doc 4
1.3) ARCHITECTURE D’UN SYSTEME A µP (CONFIGURATION
MINIMUM)

L’architecture matérielle minimum d’un système à microprocesseur est représentée sur


la figure précédente. Celle-ci comporte :
- le microprocesseur
- un circuit d’initialisation
- un générateur d’horloge
- une mémoire à lecture seule (ROM )
- une mémoire à lecture/écriture (RAM)
- un dispositif de décodage d’adresses
- des interfaces de périphériques.
- des bus de communication

1.3.1) le microprocesseur

C’est un automate séquentiel dont le rôle est la lecture, le décodage puis


l’exécution des instructions présentes en mémoire (ROM ou RAM) et qui constituent
le programme. Son fonctionnement sera vu au chapitre 1.3.

cours_atmega16_v3.doc 5
1.3.2) le circuit d’initialisation (reset)

A la mise sous tension, il empêche le démarrage du microprocesseur tant que


les alimentations en énergie ne sont pas stabilisées . En général le circuit de « reset »
bloque le microprocesseur quelques millisecondes à partir de sa mise sous tension
(cette durée dépend en fait du type de µprocesseur et est donnée par la documentation
du constructeur).
En fonctionnement normal, il permet de réinitialiser le système.
Généralement le signal d’initialisation (reset) est obtenu à partir d’un circuit
électrique mettant en œuvre un réseau RC. Le choix des valeurs de R et C permet de
déterminer la durée à l’état actif du signal. On trouve également dans le commerce
beaucoup de circuits spécialisés assurant cette fonction (ex : Motorola MC 34064,
Maxim Max-6475, …).

1.3.3) le générateur d’horloge

C’est lui qui assure le cadencement de l’exécution des instructions. Plus la


fréquence d’horloge est élevée, plus les instructions seront exécutées rapidement. La
puissance d’un microprocesseur s’exprime en MIPS (Millions d'instructions par
seconde) mais cette grandeur est très insuffisante pour estimer les performances d’un
système.
Nota : dans les systèmes récents dont la fréquence de travail est très élevée, l’horloge
est obtenue en multipliant la fréquence de l’horloge de base (issue d’un quartz). Cette
opération est réalisée par une boucle à verrouillage de phase implantée sur la puce du
processeur.

1.3.4) la mémoire ROM

C’est une mémoire à lecture seule (Read Only Memory). Dans les
microsystèmes, c’est elle qui en général contient le programme à exécuter. Dans les
systèmes plus complexes (stations de travail, PC, ..) le programme, stocké en
mémoires de masse (disque dur, CD-rom, …), est chargé dans la mémoire vive (RAM)
avant d’être exécuté.

cours_atmega16_v3.doc 6
Fonctionnellement la mémoire ROM a pour rôle de fournir sur son « buffer » de sortie
un mot binaire correspondant au contenu de la case pointée par l’adresse d’entrée. Une
mémoire est spécifiée par sa capacité et son organisation.

Exemple :

- une mémoire de 32K * 8 signifie que celle-ci contient 32K mots de 8 bits.
Pour adresser toutes les cases de cette mémoire, le bus d’adresse devra
avoir une largeur de 15 bits (215 combinaisons soit 32768).
-
Nota : 1Koctets = 1024 octets

Remarque :
La mémoire ROM conserve son contenu lorsque son alimentation est coupée.

Ex : ARCHITECTURE INTERNE d’une MEMOIRE ROM de 2Ko

1.3.5) La mémoire RAM

La mémoire RAM (Random Access Memory) est une mémoire à accès aléatoire qui peut être
lue ou écrite indéfiniment. Dans les microsystèmes, elle est souvent réservée pour stocker des
variables, des résultats intermédiaires et sert également de « pile » pour le processeur.
Comparativement à la ROM, le buffer de sortie est bidirectionnel et c’est le signal de
lecture/écriture issu des lignes de contrôle qui fixe le sens de circulation des données.

Remarque :

cours_atmega16_v3.doc 7
La mémoire RAM perd son contenu lorsque son alimentation est coupée.

1.3.6) Les bus de communications

- le bus d’adresses
Ce sont des lignes physiques (équipotentielles) qui véhiculent les adresses générées par le
microprocesseur. La taille du bus fixe sa capacité d’adressage. Dans les systèmes
monoprocesseurs et selon leurs types, le bus d’adresses est souvent unidirectionnel.

Exemples :
Motorola 6800 : bus adresses 16 bits => 65536 adresses possibles (216 combinaisons).
Motorola 68000 : bus adresses 20 bits => 1 Million adresses possibles (220 combinaisons).
Intel 80386 : bus adresses 32 bits => 4 G adresses possibles (232 combinaisons).

- le bus de données

Ce sont des lignes physiques (équipotentielles) qui véhiculent les données. Ce bus est
bidirectionnel (les données peuvent entrer ou sortir du µP suivant qu’il est en mode lecture ou
écriture). La taille de ce bus correspond à la taille du bus de données interne au µP.

Exemples :
Motorola 6800 : bus de données 8 bits.
Motorola 68000 : bus de données 16 bits.
Motorola DSP 56000 : bus de données 24 bits.
Motorola 68020 : bus de données 32 bits.

- Le bus de contrôle

Il est de taille variable suivant la complexité du processeur. C’est lui qui synchronise les
échanges entre le processeur et ses périphériques. Le chronogramme ci-dessous illustre un
cycle de lecture d’un périphérique du microprocesseur Motorola 6809.

cours_atmega16_v3.doc 8
1.3.7) Les interfaces de périphériques

Ce sont souvent des circuits intégrés spécialisés directement interfaçables avec le


microprocesseur et qui assurent les liens avec les unités matérielles du système.

Exemples :
- interface IDE pour lecteur de disquettes
- interface SCSI pour disque dur
- entrées/sorties numériques et analogiques
- interfaces vidéo, claviers, bus USB
- etc…

Chaque interface dispose d’un champ adresse qui lui est propre. Ce champ adresse est fourni
par le bloc de décodage d’adresse.

1.3.8) Le décodage d’adresse

Il a pour but d’assigner à chaque bloc mémoire et aux différents périphériques qui
composent le système un emplacement et un espace dans le champ adressable par le
microprocesseur.

Exercice :

Déterminer les équations de CS_RAM et CS_ROM pour que les mémoires RAM et
ROM débutent respectivement aux adresses :

cours_atmega16_v3.doc 9
- (A000)H pour la ROM (circuit U9)
- (5000) H pour la RAM (circuit U10)

Quel est l’espace occupé par chaque mémoire. Donner l’adresse de fin correspondante.
(rep : BFFF pour la ROM et 57FF pour la RAM).

1.4) ARCHITECTURE INTERNE D’UN MICROPROCESSEUR

L’architecture interne du microprocesseur ci-dessus est une architecture de type « Von


Neuman (1) » (un seul bus de données). Elle se compose essentiellement :
- D’une unité de décodage d’instructions
- D’un ensemble de registres
- D’amplificateurs de lignes (buffers de données et d’adresses)
- D’une unité arithmétique et logique.

cours_atmega16_v3.doc 10

Vous aimerez peut-être aussi