Vous êtes sur la page 1sur 171

DIAPORAMA du cours :

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

• Chapitre 1 : Présentation générale


• Chapitre 2 : Architecture du Microcontrôleur ATMega328
• Chapitre 3 : Les Ports d’Entrées/Sorties parallèles
• Chapitre 4 : Programmation C des microcontrôleurs
• Chapitre 5 : Les Interruptions
• Chapitre 6 : Les Timers
• Chapitre 7 : L’interface série synchrone et asynchrone
USART
• Chapitre 8 : Le Convertisseur Analogique/Digital
2
Chapitre 1:
Présentation générale

3
Systèmes Embarqués

• Un système embarqué est un système électronique et


informatique autonome, souvent temps réel, spécialisé dans une
tache bien précise.
• L’élément central d'un système embarque est le Microcontrôleur

4
Définition d’un Microcontrôleur

• Le microcontrôleur est un système informatique de type circuit


intégré, généralement utilisé pour contrôler un dispositif
physique

• Comme un microprocesseur, un microcontrôleur exécute


séquentiellement une suite d'instructions (un programme) en
langage assembleur
5
Microcontrôleur vs Microprocesseur

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 :

• Puissance de traitement limité


• Capacité mémoire raisonnable
• Encombrement réduit
• Consommation électrique faible
• Contraintes d’environnement importantes
• Communication avec l’extérieur (capteurs, actionneurs, …)
• Coût de série faible

8
Applications des microcontrôleurs

• Automobile (ABS, Air Bag, tableau de bord, climatisation,


radio, GPS, alarme, boite vitesse, bus CAN,…)
• Ordinateurs (Usb, disque dur, souris, clavier, écran, …)
• Électroménager : lave-vaisselle, lave-linge, aspirateurs, …
• Domotique : thermostat, simulateur de présence, alarme
• Robotique : robots autonomes
• Multimédia : TV, lecteur/enregistreur DVD, camescope,
• Contrôle des processus industriels (régulation, pilotage)

9
Critères de Choix d’un microcontrôleur

• Type de microcontrôleur (8, 16, ou 32 bits): choisir le type


qui va répondre aux besoins informatiques de la tache à
accomplir de manière efficace et rentable

• Vitesse de traitement : fréquence maximale que peut


supporter le microcontrôleur

• Type de boitier (Packaging) : en fonction de l’espace


disponible et du prototypage, on choisit un boitier DIP, QFQ,
autres

• Consommation d’énergie,

10
Critères de Choix d’un microcontrôleur

• Quantité de RAM et ROM disponible,

• Coût/unité

• Disponibilité des outils de développement matériel et


logiciel (compilateurs, émulateurs,…)

• Grande disponibilité et fiabilité des composants (les sociétés


Motorola, Atmel, Zilog, Microchip assurent une grande
disponibilité de leurs produits car elles sont stables et
matures)

11
Familles de microcontrôleurs

Pour les microcontrôleurs 8 bits, on trouve :

la famille Atmel AVR ;


La famille Intel 8051 ;
la famille Motorolla 68HC11, 68HC08 , 68HC12 ;
la famille des PIC de Microchip ;
la famille Zilog Z8

NB: On trouve aussi des microcontrôleur 16bits et 32bits


12
La famille AVR

• AVR (Advanced Virtual RISC/ Alf and Vegard RISC*) :


terme utilisé par Atmel pour désigner le cœur du processeur
et la famille de microcontrôleurs RISC à partir de 1996.
• Ce sont des microcontrôleurs 8bits sauf les AVR32
caractérisés par :
- Architecture RISC
- Architecture Harvard :
- Structure en Pipe Line

*Alf and Vegard are the names of designers

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

Architecture de Von Neumann (work of princeton


university) :
• Une mémoire pour le programme et les données.
• Double utilisation des BUS données et d’adresses.

Architecture Harvard (work of Harvard university) :


● mémoires programme et données distinctes,
● bus programme et données distincts,
● transfère simultané des instructions à exécuter et des données.
● modèle plus rapide que Von Neumann
NB: Le gain en performance est obtenu au détriment de la complexité interne de
la structure

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

 Les microcontrôleurs AVR sont réalisés en technologie CMOS haute vitesse,


ce qui leur confère tout à la fois une faible consommation, une vitesse de
fonctionnement importante, et un haut niveau d’intégration.

22
Les Modèles ATMEGA AVR

23
Chapitre 2
Architecture du Microcontrôleur ATmega328

24
Caractéristiques du microcontrôleur ATmega328

•Fréquence d'utilisation : 20 MHz max (Jusqu'à 20 MIPS)


•Flash 32 ko
•EEPROM 1 024 octets
•SRAM 2 koctets
•131 instructions : la plupart des cycles d'horloge simples
•32 registres d'usage général
•23 GPIO
•Reset à la mise sous tension et détection de baisse de tension
programmable
•Oscillateur étalonné en interne
•Sources d'interruption externe et interne
•Six modes veille d'économie d'énergie
25
Caractéristiques des périphériques du
microcontrôleur ATmega328

•Convertisseur analogique-numérique (ADC) 10 bits - 8 ou 6


canaux
•Deux timers de 8 bits
•Un timer de 16 bits
•Module de comparaison de sortie - 6 canaux
•Six canaux PWM
•Interface série programmable USART
•Interface série SPI maître/esclave
•Interface série 2 fils orientée octet - compatible I2C
•Timer Watchdog programmable avec oscillateur séparé
•Comparateur analogique

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

Référence: ATMEGA 328P (plusieurs packages)


AT = Le composant est créé par ATMEL
Mega = Le composant fait partie de la série des, megaAVR.
328 = Le composant possède 32 Ko de mémoire flash, et un
CPU 8 bits. 28
Présentation Physique de l’ATmega328
Brochage de l’ ATMEGA 32

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

• L'horloge système est un signal carré qui a une importance


capitale. C'est elle qui cadence l'exécution des programmes.
Elle est aussi utilisée par les modules d'E/S.

• L’ATMega 328 dispose de deux générateurs d'horloge, un


oscillateur interne et un oscillateur externe.

• L'horloge générée par ces générateurs sera appelée horloge


de base. Sa fréquence est appelée fosc, sa période est
appelée tosc = 1/fosc.

• L’ATMega 328 est un processeur d'architecture RISC, il


exécute une instruction par cycle (période) d'horloge.
36
Horloge Système

37
Les Mémoires

Trois types de mémoire sont utilisés dans la série ATMEGA:


•La mémoire programme FLASH
•La mémoire de donnée SRAM
•La mémoire morte de type EEPROM

38
Description matérielle : Les Mémoires

In-System Reprogrammable Flash Program Memory

• The ATmega328/P contains 32Kbytes On-chip In-


System Reprogrammable Flash memory for
program storage.
• Since all AVR instructions are 16 or 32 bits wide,
the Flash is organized as 16K x 16.
• For software security, the Flash Program memory
space is divided into two sections :
- Boot Loader Section
-Application Program Section in the device .
• The Flash memory has an endurance of at least
10,000 write/erase cycles.
• The ATmega328/P Program Counter (PC) is 14
bits wide, thus addressing the 16K program
39
memory locations.
Description matérielle : Les Mémoires
SRAM Data Memory
The lower 2303 data memory locations address both the Register File, the I/O memory,
Extended I/O memory, and the internal data SRAM. The first 32 locations address the
Register File, the next 64 location the standard I/O memory, then 160 locations of
Extended I/O memory, and the next 2K locations address the internal data SRAM

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

• L'EEPROM est une mémoire programmable et effaçable


électriquement.
• La particularité de cette mémoire et de pouvoir garder les informations
stockées longtemps même hors tension.
• L'ATMEGA328 contient 1024 octets de données dans la mémoire
EEPROM.
• Elle est organisée comme un espace de donné séparé, dans lequel des
octets simples peuvent être lus et écrits.

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 les surtensions (>VCC)

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

• Le bit PUD du registre MCUCR permet la désactivation des


résistances de pull-up.

• Remarque : La sortie du microcontrôleur permet de délivrer un


courant jusqu’à 40 mA, à utiliser en accord avec les 2 règles
suivantes :
- Chaque port de 8 bits est limité à un courant total de 200 mA,
- Le microcontrôleur lui-même peut supporter au max 400 mA. 51
Configuration des ports d’E/S numériques

Entrée (PIN Input)

52
Configuration des ports d’E/S numériques

Sortie (PIN Output)

53
Configuration des ports d’E/S numériques
Pin Input – PORT controls pullup

54
Exemples de connexions
Connecter une LED

Connecter des boutons poussoirs

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

La majorité des microcontrôleurs sur le marché actuel disposent


parmi leurs outils de développement d’un compilateur C. (Nous
allons choisir le AVR GCC intégré avec le AVR STUDIO)

Ces compilateurs utilisent le langage « small c » qui reprend un


large sous-ensemble des fonctionnalités du langage C de la
norme AINSI.

59
Programmation C des microcontrôleurs
.Structure d’un programme en langage C
#include <avr/io.h>
#define F_CPU 16000000UL

Void Tempo (unsigned long valeur); //déclaration de la fonction Tempo


Int i; //déclaration d’une variable globale
Void main (void) // Fonction principale
{ DDRB = 0x01; // Initialisation
PORTB = 0x01;
while(1)
{ PORTB = 0x01;
Tempo(1000);
PORTB = 0x00;
Tempo(1000);
}
}
Void Tempo (unsigned long valeur)
{
unsigned long j; // Déclaration d’une variable locale
for (j = 0; j<valeur; j++)
{} // on ne fait rien
} 60
Programmation C des microcontrôleurs

Exemples de quelques include

•delay.h : si des délais en milliseconde, ou en


microseconde doivent être effectués.
Il y a deux fonctions qui permettent de réaliser un délai:
_delay_ms (float time) et _delay_us (float time).

•interrupt.h : si les interruptions sont utilisées.

•math.h : si des opérations mathématiques comme


cosinus, sinus, etc. sont utilisées

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 structures de contrôles


La structure IF…………ELSE
La structure SWITCH………..CASE
La structure WHILE
La structure DO……WHILE
La structure FOR

Les Fonctions
 Le corps d’une fonction est délimité par des accolades { ….. }.

 Un programme C doit se composer de plusieurs fonctions pour


permettre une meilleure lisibilité et maintenance du programme.

 La fonction main () est exécutée en premier, elle gère le bon


déroulement du programme et l'échange des données entres les autres
fonctions. 70
Chapitre 5
LES INTERRUPTIONS

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:

• Les interruptions peuvent être déclenchées soit par un


composant extérieur au processeur:
– changement de valeur logique à une entrée désignée

• soit par le processeur lui-même:


– Echéance d’une temporisation,
– Interruption logicielle,
– ...

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

Il existe deux types d’interruptions :


• les interruptions externes (broches du circuit INT0, INT1 …)
• les interruptions internes provoquées par les périphériques
intégrés.

Vecteurs d’interruptions

• Les vecteurs d’interruptions sont en fait les adresses


correspondants aux programmes de gestion des interruptions
proprement dit classé par ordre décroissant d’importance.
NB: Le RESET à la priorité la plus grande.
75
GENERALITES SUR LES 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

Il s'agit d'interruptions liées à des niveaux ou des


changements d’états de broches du microcontrôleur
Les broches impliquées doivent être configurées en entrée
Broches INT0 (PD2)/INT1(PD3) : configurables pour
déclencher les interruptions (n° 2 et 3) sur niveau 0, front
négatif ou positif.
La cause d'interruption est choisie par le registre EICRA
Les registres d’interuption
Quatre registres d’interruption existent : EICRA, SREG,
EIMSK, EIFR
78
LES INTERRUPTIONS EXTERNES
(liées aux entrées PD2 (INT0)et PD3 (INT1)

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:

1. Quand un ISR ( Interrupt Service Routine) est appelé,


le microcontrôleur désactive automatiquement les interruptions le
temps de l'exécution de l'ISR.

2. Les variables partagées entre l'ISR et le reste du programme


doivent être déclarées « volatile »
volatile unsigned nom_de_la_variable; 81
Programmation C des interruptions

82
Vecteurs d’interruption de l’ATMega328

83
LES INTERRUPTIONS EXTERNES
(liées aux entrées PD2 (INT0)et PD3 (INT1)

Exercice 1

Programme qui utilise l’interruption INT0 comme suit : Chaque


fois que l’entrée PD2 passe de 1 à 0, la LED branchée sur RB5
clignote 4 fois au rythme de la ½ seconde

84
LES INTERRUPTIONS EXTERNES
(Pin Change Interrupt)

 Broches PCINT0 à PCINT23 : configurables


pour déclencher des interruptions (n° 4,5 et 6)
sur des changements d‘état ("Pin Change") des
broches (configurées en entrée DDRx.n=1).
 Les broches sont séparées en 3 sous-groupes,
il y a une source d'interruption par sous-
groupe, et pour chaque broche on peut activer
ou non le système « Pin Change Interrupt »
 L'interruption PCI2 (IT n°6) a lieu sur
changement de l'une des broches PCINT23..16
 l'interruption PCI1 (IT n°5) sur les
changements d‘état de PCINT14..8,
 l'interruption PCI0 (ITn°4) a lieu sur les
changements d‘état des broches PCINT7..0.
 Les registres PCMSK2, PCMSK1 and
PCMSK0 contrôlent quelles broches peuvent
conduire (ou non) a une interruption de type
"pin change".
85
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.

 Ils peuvent être utilisés pour générer des temporisations précises,


compter des évènements, mesurer des périodes ou fréquences de signaux,
générer des signaux PWM pour le contrôle en vitesse de moteurs à
courant continu par exemple …

 Fonction Temporisateur (Timer) : lorsque l'on compte des "ticks" de


l'horloge interne qui cadence le microcontrôleur, on mesure du temps.

 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.

 Génération de signaux périodiques : les modules Timers/Counters sont


assez complexes et chacun de ces modules peut générer deux signaux PWM
dont le rapport cyclique est facilement modifiable. 90
Timer/Counter0
Le Timer/Compteur0 est un compteur à 8 bits avec les particularités principales :
Remise à 0 du compteur sur Comparaison (Rechargement Automatique)
 Deux fonctions de comparaison et de génération de signaux PWM
Générateur de Modulation de Phase en Largeur d'Impulsion (PWM)
Interruption sur Débordement et Comparaison (TOV0, OCF0A, et OCF0B).
Générateur de Fréquence
Compteur d'Événement Externe

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

Le registre TIMSK

TOIE0

Le registre TIFR

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

Le coeur du Timer0 est le registre de comptage sur 8bits appelé


TCNT0
Le contenu de ce compteur peut être comparé au contenu de deux
registres appelés OCR0A et OCR0B
Le choix de la source d’horloge clkT0 peut être l’horloge interne,
via le pré diviseur, une horloge externe sur la broche T0 (PB0) ou
inactif quand aucune source d'horloge n'est choisie.

99
Timer/Counter0 avec PWM

Fonctionnement du Timer/Compteur0

Les registres de contrôle TCCR0A et TCCR0B permettent


de choisir parmi le mode de fonctionnement adéquat.
La demande d’interruption est visible dans le registre TIFR0.
Toutes les interruptions sont individuellement masquées
dans TIMSK0
Le Générateur de Forme d'onde emploi les bits COM01x et
COM00x pour définir l'état d’OC0x.

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

 Le comparateur compare en permanence le contenu du


registre TCNT0 avec un des registres de comparaison OCR0A
et OCR0B et signale une égalité au moyen du bit OCF0A ou
OCF0B qui peut générer une interruption s’il y a été autorisé.

 Cette information est également envoyé au générateur de


signaux qui, en accord avec les informations TOP et
BOTTOM et la programmation des bits WGM02 à WGM01 et
des bits COM0x1 et COM0x0, agit en conséquence sur la
patte de sortie OC0X.

104
Timer/Counter0 avec PWM

Fonctionnement du Timer/Compteur0

Les registres de contrôle TCCR0A et TCCR0B permettent


de choisir parmi le mode de fonctionnement adéquat.
La demande d’interruption est visible dans le registre TIFR0.
Toutes les interruptions sont individuellement masquées
dans TIMSK0
Le Générateur de Forme d'onde emploi les bits COM01x et
COM00x pour définir l'état d’OC0x.

105
Timer/Counter0 avec PWM
TC0 Control Register A (TCCR0A)

TC0 Control Register B (TCCR0B)

TC0 Interrupt Mask Register TIMSK0

TC0 Interrupt Flag Register TIFR0

106
Description des registres duTimer/Counter0

107
Modes de fonctionnement du Timer/Counter0

1- Mode Normal

Le mode normal est le mode de fonctionnement le plus simple


(WGM01:0 à 0). Dans ce mode le comptage est toujours
incrémental sans remise à 0 manuel du compteur.
Il passe par le maximal $FF en débordant, le drapeau TOV0 est
mis à 1, puis le compteur repart au début $00, combiné avec
l’interruption de débordement du Timer, le drapeau TOV0 peut être
remis à 0 automatiquement.
 Une nouvelle valeur peut être écrite n'importe quand dans le
registre TCNT0.

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.

Le compteur est incrémentée et quant la valeur est égale à


OCR0A, le compteur est remis à $00 et le drapeau OCF0A est mis
à 1 pour déclencher une éventuelle interruption.

L'OCR0A définit la valeur supérieure pour le compteur donc sa


résolution.

 Ce mode peut être utilisé pour générer des signaux de fréquence


programmable sous réserve de configurer les bits COM0x1 et
COM0x0 de façon à faire changer d’état la sortie OC0A sur chaque
109
comparaison réussie.
Modes de fonctionnement du Timer/Counter0

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. 110
Modes de fonctionnement du Timer/Counter0

111
Modes de fonctionnement du Timer/Counter0
3- Mode Modulation en Largeur d'Impulsion Rapide

• Le mode PWM rapide permet de produire des impulsions de


largeur variable en fonction des informations du registre
WGM01:0 à 3.
• Le compteur est incrémenté de BOTTOM à TOP puis reprend
à BOTTOM.
• Le bit OC0x (PB3) est mis à 1 au début du comptage puis il
est mis à 0 lors de la comparaison entre TCNT0 et OCR0x
(Non-inverting mode).
112
Modes de fonctionnement du Timer/Counter0

113
Modes de fonctionnement du Timer/Counter0

• The Timer/Counter Overflow Flag (TOV0) is set each time the


counter reaches TOP.
• If the interrupt is enabled, the interrupt handler routine can be
114
used for updating the compare value.
Modes de fonctionnement du Timer/Counter0

115
Modes de fonctionnement du Timer/Counter0

4- Mode PWM correct en phase

• 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.

• Le PWM correct est basée sur une opération à double pente. Le


compteur change de direction, il passe de $00 à Max et ensuite de Max
à $00.

• Dans le mode montant la sortie OC0x est remise à 0 sur comparaison


entre TCNT0 et OCR0x et dans le mode descendant, la sortie sur
OC0x est mise à 1 de même sur le cycle de monté descente ou les
valeurs sont inversées.
116
Modes de fonctionnement du Timer/Counter0

• Dans la phase corrigée, le compteur est incrémenté jusqu'à la


valeur maximale avant d’être inversé et le compteur TCNT0
sera égal au Max pour un cycle d'horloge complet du Timer2.

• Les petites marques horizontales sur les pentes de TCNT0


représentent les comparaisons entre OCR0 et TCNT0.

• Le drapeau de débordement TOV0 est mis à 1 à chaque fois


que le compteur atteint $00.

117
Modes de fonctionnement du Timer/Counter0

118
Description des registres duTimer/Counter0
TC0 Control Register A (TCCR0A)

119
Description des registres duTimer/Counter0

TC0 Control Register A (TCCR0A)

120
Description des registres duTimer/Counter0

TC0 Control Register A (TCCR0A)


Compare output mode, Non-PWM

121
Description des registres duTimer/Counter0

TC0 Control Register A (TCCR0A)

122
Description des registres duTimer/Counter0

123
Description des registres duTimer/Counter0
TC0 Control Register B (TCCR0B)

Bit 7 – FOC0A: Force Output Compare A


•Ce bit n’est actif que lorsque le circuit ne foctionne pas en mode PWM
• il doit être toujours positionné à zero lorsque le timer ne fonctionne pas en
mode PWM
• Lorsque ce bit est mis à 1, une comparaison valide est forcée vis-à-vis du
générateur de signaux ce qui permet d’agir sur la sortie OC0A comme si une
véritable comparaison valide avait lieu.
Bit 6 – FOC0B: Force Output Compare B
•Même chose que FOC0A sauf que ce dernier agit sur la sortie OC0B
Bit 3 – WGM02 : Waveform Generator Mode
•Ce bit sert à définir le comportement du générateur de signaux et de ses
paramètres conformément aux indications du tableau précédent
124
Description des registres duTimer/Counter0

Bits 2:0 – CS0[2:0]: Clock Select 0 [n = 0..2]


• Ces bits servent à définir la source d’horloge utilisée par le Timer0
conformément aux indications du tableau suivant:

125
Description des registres duTimer/Counter0

Les interruptions relatives à ce Timer sont gérées au moyen


de deux registres :

• un registre de masque d’interruption TIMSK0


• Et un registre de drapeaux TIFR0.

Ces registres sont organisés comme suit :

126
Description des registres duTimer/Counter0

TC0 Interrupt Mask Register TIMSK0

• Bit 2 – OCIEB: Timer/Counter0, Output Compare B Match Interrupt Enable


• Lorsqu’il est mis à 1, ce bit autorise la génération d’une interruption lors
d’une comparaison réussie au niveau du registre OCR0B (OCF0B = 1)

• Bit 1 – OCIEA: Timer/Counter0, Output Compare A Match Interrupt Enable


• Lorsqu’il est mis à 1, ce bit autorise la génération d’une interruption lors
d’une comparaison réussie au niveau du registre OCR0A (OCF0A = 1)

• Bit 0 – TOIE: Timer/Counter0, Overflow Interrupt Enable


• Lorsqu’il est mis à 1, ce bit autorise la génération d’une interruption lors
d’un débordement du registre de comptage TCNT0 (TOV0 =1)
127
Description des registres duTimer/Counter0
TC0 Interrupt Flag Register TIFR0

Bit 2 – OCFB: Timer/Counter0, Output Compare B Match Flag


• Ce bit est mis à 1 lors d’une comparaison réussie au niveau du registre
OCR0B.
• Il es automatiquement remis à zéro lors de l’éxécution du programme
d’interruption correspondant, si cette dérnière est autorisée, si non, il peut
être remis manuellement à zéro en écrivant un 1 à son emplacement

Bit 1 – OCFA: Timer/Counter0, Output Compare A Match Flag


• Ce bit est mis à 1 lors d’une comparaison réussie au niveau du registre
OCR0A.
• Il es automatiquement remis à zéro lors de l’éxécution du programme
d’interruption correspondant, si cette dérnière est autorisée, si non, il peut
être remis manuellement à zéro en écrivant un 1 à son emplacement 128
Description des registres duTimer/Counter0

Bit 0 – TOV: Timer/Counter0, Overflow Flag


-Ce bit est mis à 1 lors d’un débordement du registre de comptage TCNT0

Trois autres registres 8 bits accessible en lecture et en écriture


sont aussi présents dans ce Timer :

• Le registre de comptage TCNT0


• Le registre de comparaison A (OCR0A)
• Le registre de comparaison B (OCR0B)

129
Chapitre 7
L’interface série USART

130
Définition de l’USART

L'USART est l'abréviation de Universal Synchronous and


Asynchronous Receiver and Transmitter ,
 C’est une Interface Série Synchrone (Half duplex )et
Asynchrone (full duplex)

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

Les parties entourées


dans le diagramme
séparent les trois parties
principales de l'USART:
- Générateur d'Horloge,
- Émetteur et Récepteur.
- Les registres de
contrôle sont partagés
par toutes les unités.

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 .

 Le registre UBRR est associé à un décompteur recevant


l’horloge système.

Chaque fois que ce décompteur passe à 0, il est rechargé avec


le contenu d’UBRR et génère un front d’horloge à destination
de l’USART.

 la sortie de ce compteur peut etre divisée par 2, 8 ou 16 selon


le mode choisi

Dans le seul mode asynchrone, il est possible de doubler la


fréquence d’émission max en invalidant un des diviseur par 2.136
Organisation de l’USART

 Les relations liant le contenu du registre UBRR et la vitesse


de transmission sont indiquées dans le tableau suivant

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).

Trame d’un mot de données

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

Voici les principaux modes de fonctionnement :


 Initialisation Emission Réception
 Mise en marche et validation de l'USART avec
USCR
 Configuration de la vitesse de l'USART avec UBRR
 Attente de TXC = 1 pour fin d'émission
 Emission de la donnée contenue dans UDR
 Attente de RXC = 1 pour fin de réception
 Lecture de la donnée contenue dans UDR
149
Programmation de l’USART
#define FOSC 16000000 // Clock Speed
#define BAUD 9600
#define MYUBRR FOSC/16/BAUD-1
void USART_Init( unsigned char ubrr)
{
UBRR0H = (ubrr>>8);
UBRR0L = ubrr ;
UCSR0B = (1<<RXEN0)|(1<<TXEN0);
UCSR0C = (1<<USBS0)|(3<<UCSZ00);
}
unsigned char usart-receive (void)
{
while (!(UCSR0A&(1<<RXC)));
return UDR;
}
Void usart-send(unsigned char data)
{
while(!(UCSRA&(<<UDRE)));
UDR = data ;
}
150
Programmation de l’USART
void main( void )
{
USART_Init(MYUBRR);
while(1)
{
usart-send (usart-receive());
}
}

151
Programmation de l’USART

152
Chapitre 8

Le Convertisseur Analogique/Numérique

153
INTRODUCTION

• Le monde réel étant continu, c’est-`a-dire analogique


(température, pression, humidité, luminosité,…), tandis
que les microcontrôleurs fonctionnent en numérique, il
faut bien avoir une interface entre les deux : le
convertisseur analogique/numérique .

154
INTRODUCTION

• Son fonctionnement est simple à comprendre : à intervalles de


temps réguliers, la tension analogique est mesurée puis arrondie
afin de pouvoir être convertie en numérique.

• La conversion est donc d’autant plus fidèle que le nombre de bits


du codage est élevé et est inversement proportionnelle à la plage de
tension analogique en entrée.

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'ADC convertit une tension d'entrée analogique en une valeur à 10


bits digitale par approximation successive.

• Le temps maximum de conversion est de 260µs mais peut être


diminué en réduisant la résolution (nombre de bits du codage).

• 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

• Facultativement la tension de référence AREF peut être connecter à


AVCC ou une tension interne de 2,56 V en modifiant la valeur 157
REFSn dans le Registre ADMUX.
Schéma Synoptique du
Pré-diviseur du convertisseur AD

158
Organisation du CAN

• Le résultat de la conversion est disponible dans les deux registres


appelés ADCH et ADCL puisque sa largeur est de 10bits.

• Par défaut, le résultat est présenté ajusté à droite, mais peut


facultativement être présenté ajusté à gauche en mettant le bit
ADLAR dans ADMUX.

• ADCL doit être lu en premier puis ADCH pour assurer la


cohérence des données qui appartiennent à la même conversion.

• Une fois ADCL lu, l'accès aux registres de commandes est


bloqué afin d’empêcher une nouvelle conversion tant que
ADCH n’est pas lu.

159
Organisation du CAN
• Les entrées analogiques à gain différentiel sont choisies en
écrivant dans le bit MUX dans ADMUX

• L'ADC a sa propre interruption qui peut être déclenchée quand une


conversion est achevée.

• Quand une conversion est complète, le résultat est écrit dans le


registre de données et ADIF est mis à 1.

• La logique du convertisseur est associée à trois registres d’état et de


contrôle.

160
Fonctionnement de l’ADC

• Le convertisseur étant chargé de convertir une tension analogique en


résultat numérique (digital) codé sur 10 bits, nous pouvons écrire
l'équation suivante :

Résultat num = (Tension d'entrée / tension de référence AREF) x 1024 – 1

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 convertisseur peut fonctionner dans deux modes:


- Le mode coup par coup: chaque conversion doit être initiée par
l’utilisateur
- Le mode continu : une fois initialisé, exécute les conversions les unes
à la suite des autres à la vitesse maximum permise par l’horloge de
conversion choisie.
161
Fonctionnement de l’ADC

• L'ADC est actif avec le bit ADEN à 1 dans ADCSRA.

• La référence de tension et le choix du canal d'entrée n'entrera pas en


vigueur quand ADEN est mis à 1, il faut d’abord désactiver ADEN.

• L'ADC ne consomme pas de puissance quand ADEN est à zéro,

• Une conversion simple est commencée en écrivant à 1 le bit de début de


conversion AD dans ADSC.

• 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.

• Si un canal de données différent est choisi tandis qu'une conversion est


en cours, l'ADC finira la conversion actuelle avant l'exécution du
changement de canal. 162
Horloge de l’ADC
• Le CAN utilise une horloge qui détermine la vitesse de conversion

• Le module ADC contient un pré-diviseur qui produit une fréquence


d'horloge acceptable pour l’ADC avec n'importe quelle fréquence d'UC de
plus de 100 KHz. Le pré diviseur est mis en service par des bits dans
ADCSRA.

• 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

Sélection du canal d’entrée

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

Vous aimerez peut-être aussi