Vous êtes sur la page 1sur 21

Cours du Microcontrôleur

16F877A : Partie 3

SOMMAIRE

I. Complément TIMER1
II. Module ADC
III. Module Comparateur

1
Prof : HATIM Anas ENSA Marrakech 3GE 2020/2021
I. Complément Timer1
Le timer 1 possède 3 configurations principales :

- En mode timer connecté à l’horloge interne


- En mode timer connecté à une horloge externe (horloge d’horloger) connecté à RC0
et RC1.
- En mode compteur d’événement externe connecté RC0

Le schéma du Timer 1 est le suivant

Pour travailler avec l’oscillateur interne il faut mettre à 0 le bit TMR1CS, si on désir utiliser
un oscillateur externe alors il faut mettre le bit TMR1CS à 1puis le bit T1OSCEN à 1. Si on
désir travailler avec le mode compteur d’événement connecté à RC0 alors il faut mettre à 1
TMR1CS et mettre T1OSCEN à 0. Si on travail avec les modes externes on peut choisir de
synchroniser le comptage avec l’horloge interne ou non via le bit T1SYNC.

Les cas de figures sont résumés dans le tableau suivant :

MODES TMR1CS T1OSCEN


Timer (horloge interne) 0 X (don’t care)
Compteur d’événement 1 0
Timer (horloge interne) 1 1

2
Prof : HATIM Anas ENSA Marrakech 3GE 2020/2021
Dans le mode timer connecté à l’horloge interne on règle le préscalaire, la synchronisation
n’est pas activée car on ne peut pas synchroniser le timer à la même horloge qui le cadence.
Ce mode est illustré dans la figure suivante :

Dans le mode timer connecté à une horloge externe on règle le préscalaire et la


synchronisation. Le quartz externe est souvent 32,768 Khz qui s’appel un quartz d’horloger.
Ce mode est illustré dans la figure suivante :

Dans le mode compteur d’événement, on compte les imputions reçu via la pine RC0. On doit
régler le préscalaire er la synchronisation qu’on désir. Le schéma de ce mode est le suivant :

3
Prof : HATIM Anas ENSA Marrakech 3GE 2020/2021
4
Prof : HATIM Anas ENSA Marrakech 3GE 2020/2021
II. Module ADC du PIC16F877A
Le module ADC est responsable de la conversion d’un signal analogique en un signal
numérique utilisable par le microcontrôleur. Le PIC 16F877A possède 8 entrées qui peuvent
être configurées en analogique. Les entrées du PIC16F877A qui peuvent êtres configurés en
analogiques sont :

- RA0 - RA2 - RA5 - RE1


- RA1 - RA3 - RE0 - RE2

Ces entrées correspondent aux PORTA excepte RA4 et le PORTE.

1. Caractéristiques
Le module ADC converti un signal analogique à l’entrée en un signal numérique codé sur 10
bits. Ces 10 bits sont enregistrés dans deux registres ADRESL et ADRESH. Ces deux
registres se trouvent dans les bancs 1 et 0. La figure suivante illustre le schéma fonctionnel de
l’ADC.

 Mise sous tension

Le module ADC peut être allumé (mis sous tension) par un interrupteur commandé par le
bit ADON.

 Sélection des entrées

5
Prof : HATIM Anas ENSA Marrakech 3GE 2020/2021
Le module se comporte d’un bloc de sélection qui a pour rôle de choisir entre les 8 entrées
à convertir. Le bloc de sélection est commandé par 3 bits, ses bits sont CHS2, CHS1,
CHS0. La sélection se fait comme suite :

CHS2 :CHS1 :CHS0 Entrée


000 RA0
001 RA1
010 RA2
011 RA3
100 RA5
101 RE0
110 RE1
111 RE2

 Configuration :

Le module ADC est configuré via les bits PCFG3, PCFG2, PCFG1, PCFG0. La
configuration de l’ADC permet de configurer deux aspects :

- Choisir les entrées qui doivent être configurées en analogique


- Choisir si les références de voltages vont être modifiées

Le constructeur a conçu le module avec un nombre limité de combinaison entre les entrées.
Les références de conversion peuvent être assignées aux entrées RA3 et RA2. VREF+ peut
être assigné à RA3 et VREF- peut être assigné à RA2. Le tableau suivant regroupe les
configurations possibles selon les valeurs de PCFG3, PCFG2, PCFG1, PCFG0.

6
Prof : HATIM Anas ENSA Marrakech 3GE 2020/2021
Par exemple pour configurer toute les entrées en analogique on donne à PCFG3:PCFG0 la
valeur ‘0000’ et pour configurer toute les entrées en numérique on donne à PCFG3:PCFG0
‘0110’ ou ‘0111’. Si on désir configurer deux entrées en analogique et modifier les références
de voltage la valeur à donner aux PCFG3:PCFG0 est 1101.

 Justification :

Puisque l’ADC produit 10 bits et les enregistre sur 16 bits dans deux registres ADRESH et
ADRESL, deux manière sont possibles. Le bit ADFM permet de choisir la manière avec
laquelle on écrit ces 10 bits dans les 16 bits et s’appelle la justification. Si ADFM=’1’ on
commence de droite a gauche et on l’appel une justification a droite, si ADFM=’0’ on
commence de gauche a droite et l’on l’appel justification à gauche. La figure suivante illustre
la justification.

 Temps de conversion

L’ADC comme tout autre bloc prend un temps pour finir sa fonction. L’ADC convertis un bit
durant un temps qui s’appel le TAD. Pour qu’une bonne conversion soit faite le TAD doit être
au moins 1,6 us. Pour faire la conversion l’ADC a besoin d’une horloge pour synchroniser son
travail et gérer le temps de conversion. Le temps de conversion d’un bit peut être paramétré
via les bits ADCS2,ADCS1,ADCS0 qui configure un préscalaire. Pour obtenir les 10 bits il
faut attendre 12 TAD. Avant de commencer la conversion, l’ADC consomme un temps de
19,7 us qui s’appel temps de capture ou on stocke la valeur à convertir.

Le tableau suivant résume les différentes valeurs de temps de conversion d’un bit possibles.
Les temps inferieur à 1,6 us ne sont pas acceptés car conduiront à des valeurs erronées.

7
Prof : HATIM Anas ENSA Marrakech 3GE 2020/2021
ADC Fréquence du PIC (FOSC)
ADCS2 ADCS1 ADCS0 CLOCK
SOURCE 20 Mhz 8 Mhz 4 Mhz 1 Mhz
0 0 0 Fosc/2 100 ns 250 ns 500 ns 2 us
0 0 1 Fosc/8 400 ns 1 us 2 us 8 us
0 1 0 Fosc/32 1.6 us 4 us 8 us 32 us
0 1 1 FRC 2 - 6 us
1 0 0 Fosc/4 200 ns 500 ns 1 us 4 us
1 0 1 Fosc/16 800 ns 2 us 4 us 16 us
1 1 0 Fosc/64 3.2 us 8 us 16 us 64 us
1 1 1 FRC 2 - 6 us

Pour une horloge de 4 Mhz les valeures d’horloge possibles sont ( Fosc/8 , Fosc/16, Fosc/32,
Fosc/64) car leur période est supérieur à 1,6 us .

 Lancement de conversion :

Pour commencer une conversion après avoir configurer l’ADC il faut mettre à un le bit
Go/Done, une fois la conversion est terminé ce bit revient automatiquement à 0. La fin de la
conversion peut être aussi sanctionnée par une interruption enregistrée dans son flag ADIF.
Cette interruption est autorisée par le bit ADIE.

 Registres :

Les registres responsables de la configuration des entrées analogique et de l’ADC sont


ADCON0 et ADCON1. Ils regroupent tous les bits qu’on a cités auparavant.

2. Etapes pour configurer le module ADC :

Etape 1: Configuration des pins


• Configurer les pins choisies en entrée (TRIS)
• Configurer les entrées Analog , la référence du voltage ainsi que les I/O numérique via les
bits PCFG3:PCFG0 (ADCON1)
• Choisir l’horloge via les bits ADCS1 ADCS0 (ADCON0) et le bit ADCS2 (ADCON2)
• Configurer la justification des bits par ADFM (ADCON1)
• Allumer l’ADC via le bit ADON(ADCON0)
8
Prof : HATIM Anas ENSA Marrakech 3GE 2020/2021
Etape 2. Configuration des interruptions si desiré
• mettre à zéro le flag ADIF (PIR1)
• mettre à un le bit ADIE (PIE1)
• mettre à un le bit PEIE (INTCON)
• mettre à un le bit GIE (INTCON)

Etape 3. Choix de l’entrée :


Choisir le canal d’entrée de ADC via les bits CHS2:CHS0 (ADCON0)

Etape 4 . Commencer la conversion:


Mettre à 1 le bit GO/DONE (ADCON0)

Etape 5. Attendre la fin de la conversion:


Deux manière à suivre
• Scruter sur le bit GO/DONE jusqu’a ce qu’il devient nul (interruptions annulée)
• Attendre l’interruption A/D

Etape 6. Lecture du résultat:


Lire le résultat de l’ADC via les pair de registre (ADRESH:ADRESL), mettre à zéro bit ADIF si
nécessaire.

Etape 7. Conversion suivante :


Aller à étape 1 ou étape 2 selon la nécessité

3. Exemple :
On désir lire la valeur d’une tension au borne d’une résistance variable et l’afficher sur 10
LEDs. La résistance variable est connecté sur RA2 et la sortie converti et affiché sur le
PORTB , RC0 et RC1.

9
Prof : HATIM Anas ENSA Marrakech 3GE 2020/2021
Question :

1. Configurer les entrées analogiques.


2. Configurer les sorties numériques.
3. Déterminer les fréquences de conversion possible.
4. Donner les valeurs de ADCON0 et ADCON1 (justification a droite)

Solution

1- Une seule entrée est utilisée branché sur RA2.


Donc TRISA=0b’00000100’=0x04
2- Le PORTB et les deux RC0,RC1 sont en sortie les autres pines du PORTC sont en
entrée. Donc :
TRISB=0b’00000000’=0x00
TRISC=0b’11111100’=0xFC

3- On utilise un Quatrz de 8MHz. Selon le tableau des fréquences les préscalaire qui
permettent d’avoir des périodes supérieur à 1,6 us sont 16, 32, 64. D’où les fréquences
possibles sont : 0,5Mhz, 0,25 Mhz, 0,125 Mhz. On va prendre 0.5 Mhz car c le plus
rapide , donc :
ADSC2 :ADSC1 :ADSC0 =101.

4- Selon le tableau de la configuration il est impossible de configurer RA2 à elle toute


seule. La meilleure combinaison est :
PCFG3 :PCFG0 = ’0010‘
Pour choisir RA2 la valeur des bits de sélection est :
CHS2 :CHS0=’010’
La justification est à droite donc ADFM=1.
Donc les valeures des registres sont :
ADCON0 = 0x55
ADCON1 = 0xC2

10
Prof : HATIM Anas ENSA Marrakech 3GE 2020/2021
III. Les modules comparateurs du PIC16F877A

Le PIC 16F877A possède deux modules comparateurs. Il possède deux entrées Vin+et Vin-.
Il compare Vin+et Vin – et affecte 0 ou 1 à sa sortie selon le résultat de comparaison. Les
comparateurs procèdent comme illustré à la figure suivante.

Si Vin+<Vin- la sortie sera 0 si Vin+>Vin- la sortie sera 1. Cette logique peut être inversée.
Le registre CMCON est responsable de la configuration des modules comparateurs. Les
sorties des deux modules respectivement C1OUT et C2OUT sont affecté aux deux dernier bits
de CMCON. Les deux bits C1INV et C2INV permettent d’inverser la logique des
comparateurs. Trois bits CM2:CM1:CM0 permettent de configurer les 2 modules.

C2OUT: Sortie du C1INV: Inverseur CIS: Switch des CM2:CM0: Mode


comparateur 2 du comparateur 1 entrées quand du Comparateur
CM2:CM0 = 110:
Si C2INV = 0: 1 = sortie C1 Pour choisir le mode
1 = C2 VIN+ > C2 VIN- 1 = C1 VIN-
0 = C2 VIN+ < C2 VIN-
inversée du comparateur
Si C2INV = 1: 0 = sortie C1 non connects to détaillé par suite
1 = C2 VIN+ < C2 VIN- inversée RA3/AN3
0 = C2 VIN+ > C2 VIN- C2 VIN- connects to

11
Prof : HATIM Anas ENSA Marrakech 3GE 2020/2021
C2INV: Inverseur RA2/AN2
C1OUT: Sortie du du comparateur 2
comparateur 1 0 = C1 VIN-
1 = sortie C2 connects to
Si C1INV = 0:
1 = C1 VIN+ > C1 VIN-
inversée RA0/AN0
0 = C1 VIN+ < C1 VIN- 0 = sortie C2 non C2 VIN- connects to
Si C1INV = 1: inversée RA1/AN1 bit 2
1 = C1 VIN+ < C1 VIN-
0 = C1 VIN+ > C1 VIN-

1. Modes des comparateurs du PIC16F877A

Les modes des comparateurs sont configurés via es bits CM2 :CM0.

- Si CM2 :CM0 =000 les comparateurs sont en mode reset leur sorties sont forcées à 0.

- Si CM2 :CM0 =111 les comparateurs sont en mode OFF leur sorties sont à 0.

- Si CM2 :CM0 =001 le comparateur1 est en mode normale sa sortie est connectée à RA4, le
comparateur2 est OFF.

12
Prof : HATIM Anas ENSA Marrakech 3GE 2020/2021
- Si CM2 :CM0 =010 les deux comparateur sont en mode normale et sont indépendant. leur
sorties ne sont pas connectées aux sorties.

- Si CM2 :CM0 =011 les deux comparateur sont en mode normale et sont indépendant. Les
sorties de C1 et C2 sont connectées respectivement aux sorties RA4 et RA5.

13
Prof : HATIM Anas ENSA Marrakech 3GE 2020/2021
- Si CM2 :CM0 =100 les deux comparateurs possèdent la même référence Vref+ leurs sorties
ne sont pas connectées.

- Si CM2 :CM0 =101 les deux comparateurs possèdent la même référence Vref+. Les sorties
de C1 et C2 sont connectées respectivement aux sorties RA4 et RA5.

14
Prof : HATIM Anas ENSA Marrakech 3GE 2020/2021
Si CM2 :CM0 =110 les deux comparateurs possèdent la référence Vref+ liée a Vref issu d’un
module qui génère une tension référence. L’entrée Vin- dépend de CIS. Si CIS=0 Vin- de C1
est connecté à RA0 et celui de C2connecté à RA1. Si CIS=1 Vin- de C1 est connecté à RA3 et
celui de C2connecté à RA2.

2. Module générateur de VREF :

Ce module permet de générer le Vref si CM2 :CM0. Il permet aussi de faire sortir Vref depuis
RA2.

Le principe de ce module est le diviseur de tension. le module est sous forme d’un diviseur de
tension qui possède une résistance de valeur 8R en série avec 16 résistance de valeur R. une
autre résistance d’une valeur de 8R est en série avec les résistances précédente mais qui peut
15
Prof : HATIM Anas ENSA Marrakech 3GE 2020/2021
être court circuit par un interrupteur commandé par CVRR. Le module est illustré dans la
figure suivante :

Le registre CVRCON permet de configurer le module qui génère VREF. Quatre bits
permettent de choisir entre les 16 résistances. Le bit CVREN permet d’allumer le module. Le
bit CVRR permet de court-circuiter la dernière résistance de 8R. Les valeurs de Vref
dépendent de la dernière résistance 8R. Si cette résistance est court circuit alors :

0 < Vref < Vdd×15/24

Si cette résistance n’est pas court circuité alors :

8/32×Vdd < Vref < Vdd× 23/32

16
Prof : HATIM Anas ENSA Marrakech 3GE 2020/2021
CVREN: CVROE: CVRR: CVR3:CVR0: valeur de la
Bit de mise en Connection de Vref a Réglage de la comparaison
marche RA2 plage de valeur. 0 ≤ VR3:VR0 ≤ 15

1 = CVREF est 1 = CVREF est connecté 1 = la résistance 8R si CVRR = 1:


activé à RA2/AN2/VREF- est court circuité CVREF = (VR<3:0>/ 24) • (Vdd)
0 = CVREF est /CVREF pin
désactivé 0 = la résistance 8R si CVRR = 0:
0 = CVREF est n’est pas court CVREF = 1/4 • (Vdd) +
déconnecté de circuité (VR3:VR0/32)
RA2/AN2/VREF-
/CVREF pin

3. Interruptions

Les modules de comparaisons génèrent une interruption à chaque fois que leur valeur
s’inverse. Les interruptions des modules de comparaison sont autorisées par le bit CMIE
(PIE1) , le flag correspondant est CMIF ( PIR1).

4. Etapes pour configurer les comparateurs internes

Etape 1 - Configuration du module

Choix du mode désiré avec les bits des registres CMCON. Les Interruptions doivent être
désactivées.

Etape 2 - Configuration de Vref (si nécessaire) via le registre VRCON

- Sélectionner la plage de voltage via le bit VRR;


- Configurer Vref via les bits VR3 - VR0;
- Mettre à 1 VROE si nécessaire , et allumer la source de Vref via le bit VREN
- Les formules suivantes doivent être prise en considération
VRR = 1 (low range)
CVref = ([VR3:VR0]/24)VDD

17
Prof : HATIM Anas ENSA Marrakech 3GE 2020/2021
VRR = 0 (high range)
CVref = (VDD/4) + ([VR3:VR0]VDD/32)

Etape 3 - Commencer l’opération

- Activer les interruptions via CMIE (PIE registre), PEIE et GIE (INTCON),Ou lire le
flag CMIF (PIR)
- Lire C1OUT et C2OUT (CMCON ) et en suite le remettre le flag à zéro par le
programme .

18
Prof : HATIM Anas ENSA Marrakech 3GE 2020/2021
5. Exercice

On désir réguler la température de l’eau contenu dans un récipient via deux électrovanne qui
commandent deux robinets. L’un des deux véhicule de l’eau chaude l’autre de l’eau froide pour
créer un mélange dont la température est celle désiré. Un capteur de niveau permet de détecter le
niveau max permis dans le réservoir. Une fois le niveau max atteint, un robinet de vidange
s’ouvre et les robinets de drainage d’eau se ferme jusqu’a ce que le niveau min est atteint.

La commande des électrovannes se fera comme suite :

- Si la température de l’eau dépasse une Tempmax, de l’eau froide sera versé.


- Si la température baisse en dessous de Tempmin , de l’eau chaude sera versée.
- Les limites max et min seront réglés par des résistances variables connectées sur RA0 et RA1
- Le signal analogique issu du capteur de température sera connecté à RA3.
- Le signal du capteur de niveau sera connecté à la pine RA5.
- Les commandes des électrovannes de drainage d’eau sont issus de RE0,RE1 et celle de
vidange et connecté dans RC0.

Le schéma suivant illustre le système :

1- Déterminer les entrées sortie du systèmes et donner leur configuration en I/O (TRIS)
2- Donner la configuration des PORTA et PORTE (analogique /numériques), avec la
fréquence de conversion est Fosc/8 (4Mhz) et une justification à droite.
3- On utilise les deux composants de comparaison C1 et C2 pour comparer la température aux
références min et max, donner leur configuration (C1inv=C2inv=0)

19
Prof : HATIM Anas ENSA Marrakech 3GE 2020/2021
4- Remplissez le Tableau suivant :

Cas de figure
C1out:C2out RC0:RE0:RE1
Niveau d’eau Température
Temp > max
Min<Niveau d’eau < Max Temp < min
Min <Temp< max
Niveau d’eau > Max xx xx

5- Donner le logigramme de l’algorithme à programmer dans le microcontrôleur (devoir)

Solution

Question 1)
-Les entrées sont : RA0,RA1,RA3,RA5
-Les s sorties sont : RC0, RE0,RE1
- TRIS A= 0x 2B , TRISC= 0x01, TRISE=0x03

Question 2)

- Puisque toutes les entrées sont analogiques, la combinaison possible est:


PCFG3:PCFG0 =‘0000’
- L’horloge de conversion utilisé est Fosc/8 d’où :
ADCS2:ADCS0 =‘001’

20
Prof : HATIM Anas ENSA Marrakech 3GE 2020/2021
21
Prof : HATIM Anas ENSA Marrakech 3GE 2020/2021

Vous aimerez peut-être aussi