Académique Documents
Professionnel Documents
Culture Documents
Les microcontrôleurs
Illustration par l’Atmega328
Présenté par :
Pr. Tamou NASSER
1ère Année
Filières : 2IA, 2SCL, IDF, GD, SSI, SSE
PLAN
3
Systèmes Embarqués
4
Définition d’un Microcontrôleur
6
Microcontrôleur vs Microprocesseur
• Un microcontrôleur (au contraire d'un microprocesseur) est un
composant électronique autonome qui rassemble dans un unique
circuit intégré, l'ensemble d'un système à microprocesseur, tel
que :
- Le processeur (CPU),
- La mémoire EEPROM pour le programme et les donnés
permanentes,
- La mémoire RAM pour les données temporaires,
- les périphériques d'interface avec l'environnement
extérieur: E/S logiques, E/S analogique,
- bus de communication (USART, I2C, ISP, USB,
ETHERNET …)
Microcontrôleur = Microprocesseur + Ram + Rom + E/S
7
Caractéristiques des microcontrôleurs
Caractéristiques spécifiques :
8
Applications des microcontrôleurs
9
Critères de Choix d’un microcontrôleur
• Consommation d’énergie,
10
Critères de Choix d’un microcontrôleur
• Coût/unité
11
Familles de microcontrôleurs
13
Architectures RISC & CISC
Architecture RISC: Architecture à jeu d’instructions réduit
(Reduced Instruction Set Computer):
Architecture CISC : Architecture à jeu d’instructions complexe
(Complex Instruction Set Computer)
RISC CISC
Format fixe >200 instructions
Vitesse typique : Format variable
1 instruction dure Vitesse typique :
1 cycle 1 instruction dure
Avantages 3-10 cycles
Puce plus petite Avantages
Fréquence plus élevée Développement plus simple
Exécution plus rapide Très répandu
Inconvénients Inconvénients
Compilateur complexe Puce plus grosse, plus compliquée
(à développer) Évolutions limitées
Programmes longs Plusieurs cycles par instruction
(plus de mémoire)
14
Architectures Harvard et Von Neumann
15
Architectures Harvard et Von Neumann
16
Structure en PipeLine
Décomposition des tâches
Optimisation pour l’architecture RISC
Préparation de l’instruction suivante durant l’exécution
de celle présente
Séquencement
movlw 0xFF
movwf PORTB
call sub1
movf Portc,w
17
Structure en PipeLine
18
Structure en PipeLine
19
Les différentes familles AVR
20
Les différentes familles AVR
21
Les différentes familles AVR
22
Les Modèles ATMEGA AVR
23
Chapitre 2
Architecture du Microcontrôleur ATmega328
24
Caractéristiques du microcontrôleur ATmega328
26
Architecture interne du microcontrôleur
ATmega328
Alimentation:1.8 - 5.5V
27
Horloge: 20MHz Temp Range:-40°C to 85°C
Présentation Physique de l’ATmega328
29
Présentation Physique de l’ATmega328
Brochage de l’ ATMEGA 32
30
Présentation Physique de l’ATmega328
Brochage de l’ ATMEGA 32
31
Présentation Physique de l’ATmega328
32
Central Processing Unit (CPU)
33
Central Processing Unit (CPU)
Les registres de travail : General Purpose Working Registers
Le cœur AVR combine un jeu de 131 instructions avec 32
registres spéciaux 8 bits travaillants directement avec l'Unité
Arithmétique et Logique ALU.
Dans la CPU, les registres sont utilisés pour stocker
temporairement les données.
Les 32 registres sont détaillés dans le tableau qui suit avec
l’adresse effective dans la mémoire SRAM :
EX :
ADD R4, R10
(R4) + (R10) R4
34
Central Processing Unit (CPU) : Status Register
The status register is an 8-bit register. It is also referred to as the flag
register.
The bits C, Z, N, V, S, and H are called conditional flags, meaning
that they indicate some conditions that result after an instruction is
executed.
35
Horloge Système
37
Les Mémoires
38
Description matérielle : Les Mémoires
40
Description matérielle : Les Mémoires
41
Description matérielle : Les Mémoires
42
Description matérielle : Les Mémoires
La Mémoire EEPROM
43
Description matérielle : Les Mémoires
44
Chapitre 3:
Les Ports d’Entrées/Sorties
parallèles
45
Présentation des ports d’entrées/sorties numériques
Contre la tension
inverse
46
Présentation des ports d’entrées/sorties numériques
47
Présentation des ports d’entrées/sorties numériques
48
Configuration des ports d’E/S numériques
• Chaque port est configuré grâce à 3 registres.
PORTx: pour l'écriture de valeurs en sortie
DDRx: détermine la direction de chaque broche du port (1-sortie/
0- entrée)
PINx: permet la lecture de la valeur en entrée
49
Configuration des ports d’E/S numériques
• Chaque broche de port E/S a une résistance de pull-up interne qui peut
être désactivée.
50
Configuration des ports d’E/S numériques
52
Configuration des ports d’E/S numériques
53
Configuration des ports d’E/S numériques
Pin Input – PORT controls pullup
54
Exemples de connexions
Connecter une LED
55
Description des registres de configuration des Ports
56
Chapitre 4
Programmation en langage
C des microcontrôleurs
57
Programmation C des microcontrôleurs
58
Programmation C des microcontrôleurs
59
Programmation C des microcontrôleurs
Structure d’un programme en langage C
#include <avr/io.h>
#define F_CPU 16000000UL
61
Types de données pour AVR C
62
Temporisation
63
Déclaration d’une fonction
64
Les opérateurs de base en C
65
Les opérateurs de base en C
66
Les opérateurs de base en C
67
Les opérateurs de base en C
68
Les opérateurs de base en C
69
Les structures et les fonctions
Les Fonctions
Le corps d’une fonction est délimité par des accolades { ….. }.
71
GENERALITES SUR LES INTERRUPTIONS
• Définition:
Une interruption est un signal demandant au processeur de
suspendre temporairement l’exécution du programme courant afin
d’effectuer des opérations particulières.
• Intérêt:
Ce mécanisme permet d’implémenter une réaction à une
sollicitation:
offrant un délai de réponse très bref,
programmée de façon indépendante du code en cours
d’exécution.
Evitant les boucles d’attente sans fin et les risques de
blocage. 72
GENERALITES SUR LES INTERRUPTIONS
73
GENERALITES SUR LES INTERRUPTIONS
• Declenchement:
74
GENERALITES SUR LES INTERRUPTIONS
Mécanismes de traitement d’une interruption :
Lors d’une interruption le processeur exécute la séquence suivante :
• Le bit I du registre d’état (SREG) est mis à 0 (inhibition des autres
d’interruption)
• L’exécution du programme en cours est interrompue
• Le contenu du PC est sauvegardé dans la pile
• Le PC est chargé avec la valeur de l’adresse d’interruption
• L’instruction de saut à l’adresse de traitement de l’interruption est
exécutée
• Le programme de traitement d’IT est exécuté
• A la fin du programme, le PC est restauré
• le bit I du registre d’état (SREG) est mis à 1 (validation des autres
interruption).
Remarque : lors d’une interruption, le processeur ne sauvegarde pas
le contexte (état des registres de travail et registre d’état SREG). 75 Il
faut le faire par programme si c’est nécessaire)
GENERALITES SUR LES INTERRUPTIONS
Sources d'interruption exploitables sur ATMega328
Vecteurs d’interruptions
77
GENERALITES SUR LES INTERRUPTIONS
Relation entre broches et les interru
ptions externe pour ATMega 328
NB :
Les interruptions restent fonctionnelles
même si les pins INT0, INT1 ou PCINT 0 à
78
23sont configurées en sortie.
LES INTERRUPTIONS EXTERNES
(liées aux entrées PD2 (INT0)et PD3 (INT1)
Définition
80
LES INTERRUPTIONS EXTERNES
(liées aux entrées PD2 (INT0)et PD3 (INT1)
81
LES INTERRUPTIONS EXTERNES
(liées aux entrées PD2 (INT0)et PD3 (INT1)
82
LES INTERRUPTIONS EXTERNES
(liées aux entrées PD2 (INT0)et PD3 (INT1)
83
Programmation C des interruptions
84
Programmation C des interruptions
Remarques:
86
Vecteurs d’interruption de l’ATMega328
87
LES INTERRUPTIONS EXTERNES
(liées aux entrées PD2 (INT0)et PD3 (INT1)
Exercice 1
88
LES INTERRUPTIONS EXTERNES
(Pin Change Interrupt)
90
LES INTERRUPTIONS EXTERNES
(Pin Change Interrupt)
91
LES INTERRUPTIONS EXTERNES
(Pin Change Interrupt)
EXERCICE 2
Programme qui fait inverser l’état de la LED branchée sur RB1
chaque fois qu’il y a changement sur PC5(PCINT13) qui conduit
à l’interruption PCI1
92
Chapitre 6
Timers/Counters de
l’ATMega328
93
INTRODUCTION
Les microcontrôleurs AVR disposent de modules de temporisation/comptage
internes, fonctionnant pour certains avec des registres de comptage sur 8 bits,
et pour d'autres sur 16 bits.
Fonction Compteur (Counter) : lorsque l'on compte des fronts sur une
entrée de comptage externe (broches T0 ou T1), on utilise alors la fonction
"compteur" du module.
95
Timer/Counter0
Schéma synoptique
96
Timer/Counter0 (Horloge)
97
Timer/Counter0 (Horloge)
98
Timer/Counter0 sans PWM
Registres du module Timer/Counter
99
Timer/Counter0 sans PWM
TOIE0
TOV0
100
Timer/Counter0 sans PWM
101
Timer/Counter0 sans PWM (Normal mode)
102
Timer/Counter0 sans PWM (Normal mode)
Steps to program Timer0 in Normal mode :
103
Timer/Counter0 sans PWM (Normal mode)
104
Timer/Counter0 sans PWM (TD)
Exemple : Assuming that XTAL = 8MHz. Write a program to
generate a square wave with a period of 12.5us on pin PB3. (here
we use no prescaler clock option)
105
Timer/Counter0 sans PWM (TD)
106
Timer/Counter0 sans PWM (TD)
107
Timer/Counter0 sans PWM (TD)
108
Timer/Counter0 avec PWM
Unités de comparaison du timer0
Le Timer0 contient deux unités de comparaison qui sont organisées comme
indiqué sur la figure ci-dessous:
109
Timer/Counter0 avec PWM
Fonctionnement des unités de comparaison du
Timer/Compteur0
111
Description des registres duTimer/Counter0
TC0 Control Register A (TCCR0A)
112
Description des registres duTimer/Counter0
113
Description des registres duTimer/Counter0
114
Description des registres duTimer/Counter0
115
Description des registres duTimer/Counter0
116
Description des registres duTimer/Counter0
TC0 Control Register B (TCCR0B)
118
Description des registres duTimer/Counter0
119
Description des registres duTimer/Counter0
122
Modes de fonctionnement du Timer/Counter0
1- Mode remise à zéro sur comparaison réussie CTC mode
(Clear Timer on Compare match)
Le mode CTC (WGM02:0 =0x02), le registre OCR0A est
employé pour définir la résolution du compteur.
124
Modes de fonctionnement du TCNT0 (CTC mode)
T = 2*(1+OCR0A)*Tt = 2*(1+OCR0A)*DIV*Tclk
Le drapeau OCF0A est automatiquement remis à 0 lors de
l’exécution de l’interruption. Ce mode permet de mieux contrôler la
fréquence produite.
La fréquence maximum que peut produire le Timer0 est fonction
de la formule suivante : Avec :
N le rapport du pré-diviseur (1, 8, 64, 256 ou 1024) ,
Fclk_I/O étant la fréquence d’horloge du quartz. 125
Modes de fonctionnement du TCNT0 (CTC mode)
126
Modes de fonctionnement du TCNT0 (CTC mode)
127
Modes de fonctionnement du TCNT0 (CTC mode)
128
Modes de fonctionnement du TCNT0 (CTC mode)
130
Modes de fonctionnement du TCNT0 (CTC mode)
131
Modes de fonctionnement du TCNT0 (CTC mode)
132
Modes de fonctionnement du TCNT0 (CTC mode)
133
Modes de fonctionnement du Timer/Counter0
2- Mode Modulation en Largeur d'Impulsion Rapide
134
Modes de fonctionnement du Timer/Counter0
2- Mode Modulation en Largeur d'Impulsion Rapide
136
Modes de fonctionnement du Timer/Counter0
138
Modes de fonctionnement du Timer/Counter0
139
Modes de fonctionnement du Timer/Counter0
TCCR0A = 0b10000011
TCCR0B = 0b00000001
140
Modes de fonctionnement du Timer/Counter0
• Le mode PWM correct utilise le compteur dans les deux sens, quand la
valeur définie dans le registre OCR0x est atteinte la sortie OC0x
change et le compteur repart à l’envers. Quant il arrive à $00, la valeur
d’OC0x est à nouveau changée.
142
Modes de fonctionnement du Timer/Counter0
143
Chapitre 7
L’interface série USART
144
Définition de l’USART
145
Caractéristiques de l’USART
C’est une Interface Série Synchrone et Asynchrone avec les
caractéristiques suivantes :
Générateur interne de fréquence de cadencement;
Communication Asynchrone et Synchrone ;
Horloge Maître ou Esclave;
Echanges de données sur 5 à 9 bits et 1 ou 2 bits de stop;
Gestion des parités;
Communication en Full duplex(peut émettre et recevoir en
même temps);
Protection des débordements;
Détection de faux départs de transmission;
Filtrage du bruit de transmission;
Plusieurs interruptions programmables sur le mode émission
et réception;
Mode double vitesse de communication;
146
Caractéristiques de l’USART
La transmission se fait sur la broche PD1/TX et la réception
sur la broche PD0/RX
147
Organisation de l’USART
Schéma de principe
148
Organisation de l’USART
Génération d'Horloge
149
Organisation de l’USART
L‘horloge peut être générée en interne lorsque l’USART
fonctionne en modes asynchrone ou synchrone maître .
151
Organisation de l’USART
152
Organisation de l’USART
Formats du mot de donnée
•L'USART accepte 30 combinaisons possibles de mot de donnée avec :
1 bit de début
5, 6, 7, 8, ou 9 bits de données
Parité : sans, impaire,
1 ou 2 bits d'arrêt
•Un mot commence par un bit de début suivi par les bits de données du moins
fort au plus fort, jusqu'à un total de neuf.
S’il est demandé, le bit de parité est inséré après les bits de donnée, puis vient
le bit ou les bits d'arrêt.
•Quand un mot complet est transmis, il peut être directement suivi par un
nouveau mot, ou la ligne de communication peut être mis à l’état haut (libre).
153
Organisation de l’USART
Initialisation de l’USART
L'USART doit être initialisé avant qu’une communication ne puisse
avoir lieu. Le processus d'initialisation consiste normalement à :
définir la vitesse de transmission en bauds,
définir le format d'encadrement
choisir l'Émetteur ou le Récepteur selon l'utilisation.
Pour les interruptions de l’USART, l’interruption globale doit être
interrompue et généralement mis hors de service en faisant
l'initialisation.
NB: Registres Programmables pour la configuration de l’USART :
UDR, UCSRA, UCSRB,UCSRC, UBRRH, UBRRL 154
Les registres de l’USART
Description du registre UCSRA : (USART Control and Status
Register A)
155
Les registres de l’USART
156
Les registres de l’USART
Description UCSRB : (USART Control and Status Register B)
157
Les registres de l’USART
Description du UCSRC : (USART Control and Status Register C)
158
Les registres de l’USART
159
Les registres de l’USART
160 de
UBRR11:0 (USART Baud Rate Register) Valeur permettant de sélectionner la fréquence
cadencement de l'USART.
Les registres de l’USART
Les tableaux suivant donnent les valeurs de UBRR en fonctions de la valeur du Quartz.
Les valeurs UBRR sont bien sur données en décimales.
161
Les registres de l’USART
162
Paramétrage de l’USART
165
Programmation de l’USART
166
Chapitre 8
Le Convertisseur Analogique/Numérique
167
INTRODUCTION
168
INTRODUCTION
169
Organisation du CAN
170
Organisation du CAN
• Ce CAN peut convertir jusqu’à 8 signaux analogiques reliées d’une
manière classique à un multiplexeur commandé par un registre de
sélection d’entrée appelé ADMUX.
• L’échelle de tension en entrée est par défaut [0, V cc] mais peut être
passée à [0, Vref ] ou Vref ≤ Vcc est une tension appliquée à la
patte Aref
172
Organisation du CAN
173
Organisation du CAN
• Les entrées analogiques à gain différentiel sont choisies en
écrivant dans le bit MUX dans ADMUX
174
Fonctionnement de l’ADC
Par exemple, pour avoir le résultat d'une tension d'entrée de 2,5 V avec
une tension de référence de 5 V (AREF) nous aurons :
Rn = (2,5/5) x 1024 = 511
• Le bit est maintenu en état haut tant que la conversion se réalise et sera
remis à 0 par le matériel quand la conversion est achevée.
• Le pré diviseur commence à compter des que l'ADC est allumé en mettant
le bit ADEN à 1 dans ADCSRA.
177
Présentation des registres de l’ADC
• Les registres utilisés par l’ADC son aux nombres de quatre.
178
Présentation des registres de l’ADC
179
Présentation des registres de l’ADC
Le registre ADCSRA
180
Présentation des registres de l’ADC
181
Présentation des registres de l’ADC
Le registre ADCL et ADCH
182
Présentation des registres de l’ADC
Le registre ADCSRB
183
Présentation des registres de l’ADC
Le registre DIDR0
184
Etapes de programmation du CAN
185