Sommaire: Thème 1: Microcontrôleurs
Sommaire: Thème 1: Microcontrôleurs
Sommaire: Thème 1: Microcontrôleurs
Sommaire
Page
Séquence 1 :
SOURCES D’INTERRUPTION
1. Définition d’une interruption ................................................................................. 2
2. Étapes de déroulement d’une interruption .......................................................... 2
3. Registre de configuration des interruptions......................................................... 3
4. Schéma synoptique du registre INTCON du PIC 16F84A .................................. 4
Séquence 2 :
TIMERS
1. Introduction........................................................................................................... 5
2. Timer0 ................................................................................................................... 5
2.1. Schéma du timer0 ................................................................................................ 5
2.2. Fonctionnement ................................................................................................... 5
2.3. Registre de contrôle : OPTION_REG.................................................................. 6
2.4. TIMER0 en mode temporisation ou contrôle du temps ...................................... 7
2.4.1 Principe de fonctionnement ................................................................................ 7
2.4.2 Exemple .............................................................................................................. 7
2.5. TIMER0 en mode comptage ................................................................................ 8
Séquence 3 :
CONVERTISSEUR ANALOGIQUE NUMERIQUE (C.A.N)
1. Définition .............................................................................................................. 9
2. Symbole ............................................................................................................... 9
3. Principe de conversion......................................................................................... 9
4. Registre ADCON1.............................................................................................. 12
5. Configuration des PORTS en fonctions des 4 bits PCFG ................................ 13
1
THÈME 1 : MICROCONTRÔLEURS
SEQUENCE 1 : SOURCES D’INTERRUPTION
1. Définition d’une interruption
Une interruption est un évènement imprévisible qui provoque l’arrêt d’un programme
en cours d’exécution pour exécuter un autre programme appelé programme (ou
routine) d’interruption. A la fin du programme d’interruption, le microcontrôleur reprend
le programme principal à l’endroit où il s’est arrêté.
Exemple:
2
3. Registre de configuration des interruptions
Le registre INTCON (INTerrupt CONtroller) est le registre principal de contrôle et de
gestion des interruptions.
Le registre INTCON est parfois différent d’un PIC à un autre. Il est impératif de revenir
au document constructeur pour chaque type de microcontrôleur.
Dans cette partie on s’intéresse au registre INTCON pour la configuration des
interruptions externes. C’est un registre de bits configurables en lecture ou écriture.
Registre INTCON pour PIC16F84A
3
RBIF (RB Port Change Interrupt Flag) – Bit 0
‘1’ : Indicateur d’interruption du changement de RBI est actif.
‘0’ : Indicateur d’interruption du changement de RBI est non actif.
REMARQUES
Les drapeaux (T0IF, INTF, RBIF) doivent être remis à zéro par le programme
de traitement de l’interruption.
Le bit INTEDG (bit 6) du registre OPTION_REG permet de sélectionner le
type du front de l’interruption externe (RB0/INT) :
‘1’ : Front montant
‘0’ : front descendant
Figure 2
4
THÈME 1 : MICROCONTRÔLEURS
SEQUENCE 2 : TIMERS
1. Introduction
Les timers sont des modules intégrés dans les microcontrôleurs. Ils assurent la fonction
comptage. Il existe 3 types de timers : TIMER0, TIMER1 et TIMER2. Le nombre de
timers intégrés varie d’un microcontrôleur à un autre. Le PIC 16F84A par exemple ne
comporte qu’un seul TIMER exprimé sur 8 bits (timer0), contrairement à d’autres PIC
(voir tableau ci-dessous).
TIMER2 (8bits)
2. TIMER0
Le TIMER0 est incrémenté en permanence soit par une horloge interne (mode TIMER) soit
par une horloge externe appliquée à la broche RA4 (mode compteur).
2.1. Schéma du TIMER0
Figure 3
2.2. Fonctionnement
Le bit T0CS permet de choisir l’horloge interne (Fosc/4) ou externe RA4/T0CKI dont
l’incrémentation du TIMER0 peut se faire sur front montant ou descendant suivant la valeur
du bit T0SE du registre OPTION_REG.
Quelle que soit l'horloge choisie, on peut pré-diviser la fréquence correspondante par un
rapport, allant de 2 à 256. Ce rapport est fixé par les bits PS0, PS1 et PS2.
5
Le contenu du TMR0 est accessible dans le fichier de registres aussi bien en lecture qu’en
écriture.
Remarque importante: Lorsque le bit T0IF passe à 1 lors du passage de la valeur 0xFF à
0x00 du registre TMR0, on doit le remettre à 0 de façon logicielle par une instruction du type
INTCON.T0IF=1.
NB : Quand le pré-diviseur est attribué au watchdog (PSA=1), le TMR0 est pré-divisé par 1
(sans pré-division).
6
2.4. TIMER0 en mode temporisation ou contrôle du temps
En mode temporisateur, l’entrée d'incrémentation du module TIMER0 est l'horloge
interne de fréquence (Fosc/4). Il est possible dans ce cas d'utiliser un pré-diviseur de
fréquence que nous verrons dans la suite.
Figure 4
F ORMULE GENERALE :
Pour un cycle et TMR0 initialisé à 0 :
Avec :
DIV: valeur de pré-diviseur ;
TMR0 : valeur initiale pré-chargée (ou initiale) dans le registre TMR0 ;
Fosc : fréquence de l’oscillateur ;
Tc = temps écoulé pour un cycle.
2.4.2 Exemple
Supposons que le TIMER0 utilise l’horloge interne à base d’un quartz de 4 MHz. Calculons
alors le temps de débordement du TIMER correspondant à une pré-division de 2.
Le TIMER TMR0 est un compteur de 8 bits qui compte 256 périodes d’horloge. Puisque la
période d’horloge est multipliée par 2, alors le temps de débordement du TIMER est égal à
256*2*1 μs soit 512 μs.
7
2.5. TIMER0 en mode comptage
Pour configurer le module TMR0 en mode compteur, il faut au préalable que :
Le contenu du registre TMR0 est alors incrémenté à chaque front du signal présent sur la
broche RA4/T0CKI :
A titre d’exemple, avec un taux de pré-division de 32 (PSA = 0, PS2 = 1, PS1 = 0, PS0 = 0),
le contenu du registre TMR0 est incrémenté toutes les 32 impulsions sur la broche
RA4/T0CKI.
8
THÈME 1 : MICROCONTRÔLEURS
SEQUENCE 3 : CONVERTISSEUR ANALOGIQUE NUMERIQUE (C.A.N)
1. Définition
Un Convertisseur Analogique Numérique (C.A.N) est un dispositif électronique
permettant la conversion d’un signal analogique (souvent une tension Ve) en un signal
numérique (nombre N).
Dans la plupart des microcontrôleurs, la conversion est réalisée avec un convertisseur
interne (module intégré).
2. Symbole
Figure 5
3. Principe de conversion
La conversion implémentée sur les PICs a une résolution de 10 bits c’est à dire le
résultat de la conversion est codé sur 10 bits, ce qui permet un nombre « N » allant de 0
à 1023, proportionnel aux valeurs de référence, qui sont par défaut 0 volts et 5 volts.
Figure 6
Entre les entrées analogiques du microcontrôleur et le convertisseur analogique
numérique, on trouve un multiplexeur analogique pour aiguiller le signal à convertir.
9
Figure 7
Les tensions de référence haute et basse peuvent être choisies par programmation
parmi: Vdd ou la broche RA3 pour Vref + et Vss ou la broche RA2 pour Vref -.
Les 4 registres utilisés par le module convertisseur Analogique/Numérique sont :
- ADRESH: contient les MSB des 10 bits du résultat de la conversion.
- ADRESL: contient les LSB des 10 bits du résultat de la conversion.
- ADCON0: registre de contrôle des opérations de la fonction conversion analogique
numérique (ne fera pas l’objet d’étude).
- ADCON1: registre de contrôle de configuration du portA (et du portE pour le PIC
16F877A) en mode analogique ou numérique.
10
Pour utiliser cette bibliothèque, on peut observer, simuler et analyser le programme
suivant :
//Déclaration d’une variable à 2 octets
Unsigned int valeur;
void main ( )
{
//Configurations et Initialisation des ports
TRISB = 0;
TRISC = 0;
PORTB = 0;
PORTC = 0;
ADC_Init() ; // Initialisation du module convertisseur
Figure 10
11
4. Registre ADCON1
C’est un registre qui permet le contrôle de la configuration du portA et du portE en mode
analogique ou numérique.
ADFM = 1: Le résultat de la conversion est justifié à droite. ADRESH ne contient que les
2 bits MSB du résultat. Les 6 autres bits de ce registre sont lus comme des "0".
ADRESH ADRESL
0 0 0 0 0 0 B9 B8 B7 B6 B5 B4 B3 B2 B1 B0
10 Bits du résultat
ADRESH ADRESL
B9 B8 B7 B6 B5 B4 B3 B2 B1 B0 0 0 0 0 0 0
10 bits du résultat
Bit 3, bit 2, bit 1 et bit 0 : PCFG3 ; PCFG2 ; PCFG1 et PCFG0. Bits de contrôle de la
configuration des Ports.
Ces bits permettent de configurer les entrées analogiques ou digitales sur le portA et le
portE. Ils permettent également de choisir pour VREF+ entre VDD et RA3 et pour VREF-
entre VSS et RA2.
12
5. Configuration des PORTs en fonction des 4 bits PCFG:
A = Entrée Analogique.
D = I/O Digitale (numérique).
PIC 16F876
Tensions
PIC 16F877 de
4 bits PCFG références
PORTE PORTA
PCFG3 PCFG2 PCFG1 PCFG0 AN7/RE2 AN6/RE1 AN5/RE0 AN4/RA5 AN3/RA3 AN2/RA2 AN1/RA1 AN0/RA0 Vref+ Vref
0 0 0 0 A A A A A A A A VDD VSS
0 0 0 1 A A A A Vref+ A A A RA3 VSS
0 0 1 0 D D D A A A A A VDD VSS
0 0 1 1 D D D A Vref+ A A A RA3 VSS
0 1 0 0 D D D D A D A A VDD VSS
0 1 0 1 D D D D Vref+ D A A RA3 VSS
0 1 1 X D D D D D D D D VDD VSS
1 0 0 0 A A A A Vref+ Vref- A A RA3 RA2
1 0 0 1 D D A A A A A A VDD VSS
1 0 1 0 D D A A Vref+ A A A RA3 VSS
1 0 1 1 D D A A Vref+ Vref- A A RA3 RA2
1 1 0 0 D D D A Vref+ Vref- A A RA3 RA2
1 1 0 1 D D D D Vref+ Vref- A A RA3 RA2
1 1 1 0 D D D D D D D A VDD VSS
1 1 1 1 D D D D Vref+ Vref- D A RA3 RA2
Remarques :
Au reset, le registre ADCON1 est initialisé à 0x00. Cela signifie que les 5 bits du
PortA et les 3 bits du PortE sont configurés en entrées analogiques.
Pour récupérer les 5 bits du PortA et les 3 bits du PortE en tant que I/O digitales il
faut écrire la valeur 0x86 ou la valeur 0x87 dans le registre ADCON1.
13