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 :
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.
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 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 :
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.
Le module ADC peut être allumé (mis sous tension) par un interrupteur commandé par le
bit ADON.
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 :
Configuration :
Le module ADC est configuré via les bits PCFG3, PCFG2, PCFG1, PCFG0. La
configuration de l’ADC permet de configurer deux aspects :
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 :
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 :
Solution
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.
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.
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-
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.
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 :
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
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).
Choix du mode désiré avec les bits des registres CMCON. Les Interruptions doivent être
désactivées.
17
Prof : HATIM Anas ENSA Marrakech 3GE 2020/2021
VRR = 0 (high range)
CVref = (VDD/4) + ([VR3:VR0]VDD/32)
- 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.
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
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)
20
Prof : HATIM Anas ENSA Marrakech 3GE 2020/2021
21
Prof : HATIM Anas ENSA Marrakech 3GE 2020/2021