Cours Microcontrôleurs 1ère Année 21
Cours Microcontrôleurs 1ère Année 21
Cours Microcontrôleurs 1ère Année 21
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
B
B
B
B
B
B
B B
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
• Declenchement:
73
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). 74 Il
faut le faire par programme si c’est nécessaire)
GENERALITES SUR LES INTERRUPTIONS
Sources d'interruption exploitables sur ATMega328
Vecteurs d’interruptions
76
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 à
77
23sont configurées en sortie.
LES INTERRUPTIONS EXTERNES
(liées aux entrées PD2 (INT0)et PD3 (INT1)
Définition
79
LES INTERRUPTIONS EXTERNES
(liées aux entrées PD2 (INT0)et PD3 (INT1)
80
LES INTERRUPTIONS EXTERNES
(liées aux entrées PD2 (INT0)et PD3 (INT1)
Remarques:
82
Vecteurs d’interruption de l’ATMega328
83
LES INTERRUPTIONS EXTERNES
(liées aux entrées PD2 (INT0)et PD3 (INT1)
Exercice 1
84
LES INTERRUPTIONS EXTERNES
(Pin Change Interrupt)
86
LES INTERRUPTIONS EXTERNES
(Pin Change Interrupt)
87
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
88
Chapitre 6
Timers/Counters de
l’ATMega328
89
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.
91
Timer/Counter0 (Horloge)
• Le Timer/Counter0 reçoit son horloge depuis la sortie d’un
pré-diviseur interne , programmable sur plusieurs taux,
travaillant à partir de l’horloge système.
• Il peut également fonctionner à partir d’une source d’horloge
externe appliquée à la patte TO du microcontrôleur
92
Timer/Counter0 (Horloge)
93
Timer/Counter0 sans PWM
Schéma synoptique
Voici la vue le synoptique simplifié du Timer/Compteur à 8 bits
sans mode PWM.
94
Timer/Counter0 sans PWM
Registres du module Timer/Counter
95
Timer/Counter0 sans PWM
TOIE0
TOV0
96
Timer/Counter0 sans PWM (TD)
EXERCICE 1:
Ecrire un programme C qui permet de faire clignoter la LED
branchée sur PORTB.4 au rythme de 70µs en utilisant le Timer0.
L’horloge est de 8MHz.
EXERCICE 2:
Ecrire un programme C qui permet de faire clignoter la LED
branchée sur PORTB.4 au rythme de 500ms en utilisant le Timer0.
L’horloge est de 8MHz.
EXERCICE 3:
Ecrire un programme C qui permet de faire clignoter la LED
branchée sur PORTB.0 15 fois/seconde en utilisant le Timer0.
L’horloge est de 16MHz. 97
Timer/Counter0 avec PWM
Schéma synoptique
98
Timer/Counter0 avec PWM
Fonctionnement du Timer/Compteur0
99
Timer/Counter0 avec PWM
Fonctionnement du Timer/Compteur0
100
Timer/Counter0 sans PWM (TD)
Sous-ensemble de comptage
101
Timer/Counter0 sans PWM (TD)
Le registre TCNT0 est sous le contrôle d’un bloc logique qui lui
transmet son horloge, le remettre à zero ou bien encore changer
son sens de fonctionnement
Ce bloc reçoit également deux informations émanant des unités
de comparaison:
- TOP : qui signale que le registre TCNT0 a atteint la
valeur max qu’on lui a assigné dans la séquence de comptage.
- BOTTOM : indique que le registre TCNT0 est arrivé à 0
Lorsque le registre TCNT0 déborde, le bit TOV0 est positionné,
ce qui peut générer une interruption si le timer y a été autorisé.
102
Timer/Counter0 avec PWM
Unités de comparaison du timer0
Le Timer0 contient deux unités de comparaison qui sont organisées comme
indiqué la figure ci-dessous:
103
Timer/Counter0 avec PWM
104
Timer/Counter0 avec PWM
Fonctionnement du Timer/Compteur0
105
Timer/Counter0 avec PWM
TC0 Control Register A (TCCR0A)
106
Description des registres duTimer/Counter0
107
Modes de fonctionnement du Timer/Counter0
1- Mode Normal
108
Modes de fonctionnement du Timer/Counter0
2- 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.
111
Modes de fonctionnement du Timer/Counter0
3- Mode Modulation en Largeur d'Impulsion Rapide
113
Modes de fonctionnement du Timer/Counter0
115
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.
117
Modes de fonctionnement du Timer/Counter0
118
Description des registres duTimer/Counter0
TC0 Control Register A (TCCR0A)
119
Description des registres duTimer/Counter0
120
Description des registres duTimer/Counter0
121
Description des registres duTimer/Counter0
122
Description des registres duTimer/Counter0
123
Description des registres duTimer/Counter0
TC0 Control Register B (TCCR0B)
125
Description des registres duTimer/Counter0
126
Description des registres duTimer/Counter0
129
Chapitre 7
L’interface série USART
130
Définition de l’USART
131
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;
132
Caractéristiques de l’USART
La transmission se fait sur la broche PD1/TX et la réception
sur la broche PD0/RX
133
Organisation de l’USART
Schéma de principe
134
Organisation de l’USART
Génération d'Horloge
135
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 .
137
Organisation de l’USART
138
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).
139
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 140
Les registres de l’USART
Description du registre UCSRA : (USART Control and Status
Register A)
141
Les registres de l’USART
142
Les registres de l’USART
Description UCSRB : (USART Control and Status Register B)
143
Les registres de l’USART
Description du UCSRC : (USART Control and Status Register C)
144
Les registres de l’USART
145
Les registres de l’USART
146 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.
147
Les registres de l’USART
148
Paramétrage de l’USART
151
Programmation de l’USART
152
Chapitre 8
Le Convertisseur Analogique/Numérique
153
INTRODUCTION
154
INTRODUCTION
155
Organisation du CAN
156
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
158
Organisation du CAN
159
Organisation du CAN
• Les entrées analogiques à gain différentiel sont choisies en
écrivant dans le bit MUX dans ADMUX
160
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.
163
Présentation des registres de l’ADC
• Les registres utilisés par l’ADC son aux nombres de quatre.
164
Présentation des registres de l’ADC
165
Présentation des registres de l’ADC
Le registre ADCSRA
166
Présentation des registres de l’ADC
167
Présentation des registres de l’ADC
Le registre ADCL et ADCH
168
Présentation des registres de l’ADC
Le registre ADCSRB
169
Présentation des registres de l’ADC
Le registre DIDR0
170
Etapes de programmation du CAN
171