matière mai82 systèmes embarqués et systèmes temps ......- 1 registre de travail : w et un...

21
Matière MAI82 Systèmes Embarqués et Systèmes Temps Réels 1 Chapitre I : Les systèmes embarqués I. Qu'est-ce qu'un système embarqué ? Qu'est-ce que l'embarqué ? Vous programmez votre machine à café pour avoir un bon petit serré; c'est un système embarqué. Vous allumez la télévision et utilisez votre télécommande ; ce sont des systèmes embarqués. Vous prenez votre voiture et la voix du calculateur vous dit que vous n'avez pas mis votre ceinture; c'est un système embarqué. Les équipements médicaux, les caméras, les avions, les jouets, les téléphones portables sont des exemples de systèmes qui abritent des SE. Un système embarqué (en anglais : embedded system) peut être défini comme un système électronique et informatique autonome, qui est dédié à une tâche bien précise. Les systèmes embarqués sont composés d'une partie matérielle (hardware) et d'une partie logicielle (software). Le logiciel embarqué étant enfoui, noyé dans le matériel. Certains SE ont un système d’exploitation et d’autres non car toute leur logique peut être implantée en un seul programme. II. Caractéristiques principales d'un système embarqué C'est un système principalement numérique. • Il est réalisé autour d’un processeur (ou microcontrôleur) ayant un bon rapport performance/consommation et performance/prix • Dédié pour une application spécifique ▪ Coût réduit ▪ Espace restreint (volume, capacité mémoire) ▪ Exécution temps réel ▪ Fiabilité et sécurité de fonctionnement ▪ Consommation d’énergie maitrisée, voir très faible en cas d’utilisation sur batterie Différences avec un ordinateur de bureau (PC): Un PC standard peut exécuter tout type d'applications car il est généraliste alors qu'un système embarqué n'exécute qu'une application dédiée. Que l’interface IHM peut être aussi simple qu’une led qui clignote ou aussi complexe qu’un cockpit d'avion. Généralement: pas de clavier, écran réduit. Le système embarqué dispose de capteurs spécifiques pour son application: (Température, courant, pression, module GSM-GPS, …). Démarrage autonome du système (boot) (pas de disque dur, utilisation de mémoire flash, …) L'omniprésence des systèmes embarqués est liée à la révolution numérique opérée dans les années 1970 avec l'avènement des processeurs. Les processeurs, de plus en plus rapides, puissants et bon marché ont permis cette révolution de l'embarqué. Ceci se confirme au travers de la loi empirique de Gordon Moore, cofondateur d'Intel, qui stipule que pour une surface de silicium donnée, on double le nombre de transistors intégrés tous les 18 mois !

Upload: others

Post on 17-Nov-2020

8 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Matière MAI82 Systèmes Embarqués et Systèmes Temps ......- 1 registre de travail : W et un registre fichier : F permettant d'accéder à la RAM ou aux registres internes du PIC

Matière MAI82 Systèmes Embarqués et Systèmes Temps Réels

1

Chapitre I : Les systèmes embarqués

I. Qu'est-ce qu'un système embarqué ? Qu'est-ce que l'embarqué ?

� Vous programmez votre machine à café pour avoir un bon petit serré; c'est un système

embarqué.

� Vous allumez la télévision et utilisez votre télécommande ; ce sont des systèmes embarqués.

� Vous prenez votre voiture et la voix du calculateur vous dit que vous n'avez pas mis votre

ceinture; c'est un système embarqué.

� Les équipements médicaux, les caméras, les avions, les jouets, les téléphones portables sont des

exemples de systèmes qui abritent des SE.

• Un système embarqué (en anglais : embedded system) peut être défini comme un système

électronique et informatique autonome, qui est dédié à une tâche bien précise.

• Les systèmes embarqués sont composés d'une partie matérielle (hardware) et d'une partie

logicielle (software). Le logiciel embarqué étant enfoui, noyé dans le matériel.

• Certains SE ont un système d’exploitation et d’autres non car toute leur logique peut être

implantée en un seul programme.

II. Caractéristiques principales d'un système embarqué

C'est un système principalement numérique.

• Il est réalisé autour d’un processeur (ou microcontrôleur) ayant un bon rapport

performance/consommation et performance/prix

• Dédié pour une application spécifique

▪ Coût réduit

▪ Espace restreint (volume, capacité mémoire)

▪ Exécution temps réel

▪ Fiabilité et sécurité de fonctionnement

▪ Consommation d’énergie maitrisée, voir très faible en cas d’utilisation sur batterie

Différences avec un ordinateur de bureau (PC):

• Un PC standard peut exécuter tout type d'applications car il est généraliste alors qu'un système

embarqué n'exécute qu'une application dédiée.

• Que l’interface IHM peut être aussi simple qu’une led qui clignote ou aussi complexe qu’un

cockpit d'avion.

• Généralement: pas de clavier, écran réduit.

• Le système embarqué dispose de capteurs spécifiques pour son application: (Température,

courant, pression, module GSM-GPS, …).

• Démarrage autonome du système (boot) (pas de disque dur, utilisation de mémoire flash, …)

L'omniprésence des systèmes embarqués est liée à la révolution numérique opérée dans les années 1970

avec l'avènement des processeurs. Les processeurs, de plus en plus rapides, puissants et bon marché ont

permis cette révolution de l'embarqué. Ceci se confirme au travers de la loi empirique de Gordon

Moore, cofondateur d'Intel, qui stipule que pour une surface de silicium donnée, on double le nombre de

transistors intégrés tous les 18 mois !

Page 2: Matière MAI82 Systèmes Embarqués et Systèmes Temps ......- 1 registre de travail : W et un registre fichier : F permettant d'accéder à la RAM ou aux registres internes du PIC

Matière MAI82 Systèmes Embarqués et Systèmes Temps Réels

2

Les grands secteurs de l'embarqué concernent les domaines suivants :

• Jeux et calcul général : application similaire à une application de bureau mais empaquetée dans un

système embarqué : jeux vidéo, set top box...

• Contrôle de systèmes : automobile, processus chimique, processus nucléaire, système de navigation...

• Traitement du signal : radar, sonar, compression vidéo...

• Communication et réseaux : transmission d’information et commutation, téléphonie, Internet...

La figure suivante présente les caractéristiques principales d'un système embarqué typique

� On retrouve en entrée des capteurs généralement analogiques couplés à des convertisseurs A/N.

� On retrouve en sortie des actionneurs généralement analogiques couplés à des convertisseurs

N/A.

� Au milieu, on trouve le calculateur mettant en œuvre un processeur embarqué et ses

périphériques d'E/S.

� Il est à noter qu'il est complété généralement d'un circuit FPGA jouant le rôle de coprocesseur

afin de proposer des accélérations matérielles au processeur.

Sur ce schéma théorique se greffe un paramètre important: le rôle de l'environnement extérieur.

Page 3: Matière MAI82 Systèmes Embarqués et Systèmes Temps ......- 1 registre de travail : W et un registre fichier : F permettant d'accéder à la RAM ou aux registres internes du PIC

Matière MAI82 Systèmes Embarqués et Systèmes Temps Réels

3

Contrairement au PC logé dans un bureau, un système embarqué doit faire face à des

environnements plus hostiles. Il doit faire face à un ensemble de paramètres agressifs :

• Variations de la température.

• Vibrations, chocs.

• Variations des alimentations.

• Interférences RF.

• Eau, feu, radiations.

� L'environnement dans lequel opère le système embarqué n'est pas contrôlé ou contrôlable. Cela

suppose donc de prendre en compte ce paramètre lors de sa conception. On doit par exemple

prendre en compte les évolutions des caractéristiques électriques des composants en fonction de

la température, des radiations.

� les systèmes embarqués sont aujourd'hui fortement communicants. Cela est possible grâce aux

puissances de calcul offertes par les processeurs pour l'embarqué (32 bits en particulier) et grâce

aussi à l'explosion de l'usage la connectivité Internet ou connectivité IP. La connectivité IP

permet fondamentalement de contrôler à distance un système embarqué par Internet.

� Il faut aussi noter la montée en puissance des communications sans fil dans l'embarqué au

détriment des communications filaires pour limiter le câblage et faciliter la mise en place du

système embarqué.

III. Le Microcontrôleur � Les µcontrôleurs ont l’avantage des µprocesseurs mais sont limités aux applications ne

nécessitant pas trop de puissance de calcul et le nombre de composants est très réduit. Le

µcontrôleur est adapté pour répondre au mieux aux besoins des applications embarquées.

� Le µcontrôleur est un circuit programmable capable d’exécuter un programme. Il contient un

CPU, de la RAM , de la ROM et des ports d’entrée/sortie ( parallèle , serie,I2c…) . Il comporte

aussi des fonctions spécifiques comme des compteurs programmables pour effectuer des

mesures de durée, des CAN, voir des CNA, des interfaces.

Les avantages des microcontrôleurs

• Diminution de l’encombrement du matériel et du circuit imprimé

• Augmentation de la fiabilité du système

• Nombre de composants réduit.

• Intégration en technologie MOS, CMOS, ou HCMOS ; diminution de la consommation

• Diminution des coûts de main d’oeuvre (conception et montage)

• Environnement de programmation et de simulation évolués

Remarque : Ce qui différencie les divers microcontrôleurs est le nombre d’instructions Assembleur disponibles, la

quantité de mémoire SRAM présente et surtout le nombre de lignes d’entrées/sorties (E/S ou I/O pour

Input/Output), ainsi que la présence ou l’absence de périphériques tels que le UART, le timer, le

convertisseur A/D, etc.

III.1. Architecture du microcontrôleur Les microprocesseurs sont conçus à base de l’architecture von-Neumann avec des instructions

complexes (architecture CISC), par contre les microcontrôleurs sont à base de l’architecture Havard

avec un nombre d’instructions réduit.

Page 4: Matière MAI82 Systèmes Embarqués et Systèmes Temps ......- 1 registre de travail : W et un registre fichier : F permettant d'accéder à la RAM ou aux registres internes du PIC

Matière MAI82 Systèmes Embarqués et Systèmes Temps Réels

4

Architecture Harvard : - 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

- structure interne plus complexe.

Architecture Von-Neumann: - un seul espace adressable

- Même bus programme et données

- les données et les adresses sont rangées à des adresses différentes.

III.2. Qu’est-ce qu’un PIC ?

Un PIC n’est rien d’autre qu’un microcontrôleur dont la dénomination PIC est sous copyright de

Microchip, donc les autres fabricants ont été dans l’impossibilité d’utiliser ce terme pour leur propre

microcontrôleurs.

� Il existe trois familles de PIC :

1. La famille Base Line, Les instructions sont codées sur 12 bits

2. La famille Mid-Range, qui utilise des mots de 14 bits

3. La famille High-End, qui utilise des mots de 16 bits.

� Un PIC est identifié par un numéro de la forme suivant :

xx(L)XXyy –zz

a. xx : Famille du composant (12, 14, 16, 17, 18, 24)

b. L : Tolérance plus importante de la plage de tension (exemple : 2 V à 5,5 V si LF —

4,2 V à 5,5 V si F).

c. XX : Type de mémoire de programme (C : EPROM ou EEPROM -CR : PROM -F :

FLASH )

d. yy : Identification

e. zz : Vitesse maximum du quartz.

La mémoire flash est un compromis entre les mémoires RAM et ROM : c’est une mémoire non

volatile, comme les mémoires mortes, mais qui possède par ailleurs les caractéristiques d'une

mémoire vive

Nous nous limiterons dans ce cours à la famille Mid-Range et particulièrement au PIC 16F877.

Page 5: Matière MAI82 Systèmes Embarqués et Systèmes Temps ......- 1 registre de travail : W et un registre fichier : F permettant d'accéder à la RAM ou aux registres internes du PIC

Matière MAI82 Systèmes Embarqués et Systèmes Temps Réels

5

III.3. Brochage et Architecture interne du PIC 16F877

Page 6: Matière MAI82 Systèmes Embarqués et Systèmes Temps ......- 1 registre de travail : W et un registre fichier : F permettant d'accéder à la RAM ou aux registres internes du PIC

Matière MAI82 Systèmes Embarqués et Systèmes Temps Réels

6

Schéma Bloc du PIC 16F877

Page 7: Matière MAI82 Systèmes Embarqués et Systèmes Temps ......- 1 registre de travail : W et un registre fichier : F permettant d'accéder à la RAM ou aux registres internes du PIC

Matière MAI82 Systèmes Embarqués et Systèmes Temps Réels

7

III.3.1. Description du PIC 16F877

- Consommation : moins de 2mA sous 5V à 4 MHz.

- Architecture RISC : 35 instructions de durée 1 ou 2 cycles.

- Durée du cycle : Période de l'oscillateur quartz divisée par 4 soit 200 ns pour un quartz de 20 MHz.

- Deux bus distincts pour le code programme et les data.

- Code instruction : mot de 14 bits et compteur programme (PC) sur 13 bits, ce qui permet d'adresser 8

K mots ( de h'0000' à h'1FFF')

- Bus DATA sur 8 bits.

- 33 Pins Entrée-Sortie bidirectionnels pouvant produire 25 mA par sortie.

- 5 ports : PORTA = 6 bits et PORTB PORTC et PORTD = 8bits PORTE = 3 bits.

- 4 sources d'interruption :

� Externe par la broche partagée avec le Port B : PB0

� Par changement d'état des bits du Port B: PB4 PB5 PB6 ou PB7

� Par un périphérique intégré dans le chip: écriture de Data en EEPROM terminée, conversion

analogique terminée, réception USART ou I2C.

� Par débordement du Timer.

- 2 Compteurs 8 bits et 1 compteur 16 bits avec pré diviseur programmable.

- Convertisseur analogique 10 bits à 8 entrées pour le 16F877 et 4 entrées pour le 16F876.

- UART pour transmission série synchrone ou asynchrone.

- Interface I2C.

- 2 modules pour PWM avec une résolution de 10 bits.

- Interface avec un autr micro: 8 bits + 3 bits de contrôle pour R/W et CS.

- 368 Octets de RAM

- 256 Octets d'EEPROM Data.

- 1 registre de travail : W et un registre fichier : F permettant d'accéder à la RAM ou aux registres

internes du PIC. Tous les deux sont des registres 8 bits.

III.3.2. Les éléments de base du PIC 16F876/877

� L'Horloge

Quelque soit l'oscillateur utilise, l'horloge système dite aussi horloge instruction est obtenue en divisant

la fréquence par 4. Dans la suite de ce document on utilisera le terme Fosc/4 pour designer l'horloge

système. Avec un quartz de 4 MHz, on obtient une horloge instruction de 1 MHz, soit le temps pour

exécuter une instruction de 1µs.

Page 8: Matière MAI82 Systèmes Embarqués et Systèmes Temps ......- 1 registre de travail : W et un registre fichier : F permettant d'accéder à la RAM ou aux registres internes du PIC

Matière MAI82 Systèmes Embarqués et Systèmes Temps Réels

8

� L'ALU et l’accumulateur W

L’ALU est une unité arithmétique et logique 8 Bits qui réalise les opérations arithmétiques et logique de

base. L’accumulateur W est un registre de travail 8 bits, toutes les opérations à deux opérandes passent

par lui. On peut avoir :

- Une instruction sur un seul opérande qui est en général un registre situé dans la RAM

- Une instruction sur 2 opérandes. Dans ce cas, l’un des deux opérandes est toujours dans l’accumulateur

W, l’autre peut être soit un registre soit une constante.

Pour les instructions dont un des opérandes est un registre, le résultat peut être récupéré soit dans

l’accumulateur, soit dans le registre lui-même.

� Organisation de la mémoire RAM

L’espace mémoire RAM adressable est de 512 positions de 1 octet chacune :

· 96 positions sont réservées au SFR (Special Function Registers) qui sont les registres de configuration

du PIC.

· Les 416 positions restantes constituent les registres GPR (General Propose Registers) ou RAM

utilisateur. 3 blocs de 16 octets chacun ne sont pas implantes physiquement d’ou une capacité de RAM

utilisateur de 368 GPR.

� Accès à la RAM par adressage DIRECT

Avec ce mode d’adressage, on précise dans l’instruction la valeur de l’adresse à laquelle on veut

accéder. Par exemple, pour copier le contenu de l'accumulateur W dans la case mémoire d'adresse 50, on

utilise l'instruction MOVWF 50. Cette instruction sera codée sur 14 bits, la partie adresse est codée

sur 7 bits. En effet, 7 bits permettent d’adresser seulement 128 positions. Pour pouvoir adresser les 512

positions accessibles, il faut 9 bits d’adresse. Pour avoir ces 9 bits, le PIC complète les 7 bits venant de

l’instruction par deux bits situés dans le registre de configuration STATUS. Ces bits sont appelés RP0 et

RP1 et doivent être positionnes correctement avant toute instruction qui accède a la RAM par

l’adressage direct.

Page 9: Matière MAI82 Systèmes Embarqués et Systèmes Temps ......- 1 registre de travail : W et un registre fichier : F permettant d'accéder à la RAM ou aux registres internes du PIC

Matière MAI82 Systèmes Embarqués et Systèmes Temps Réels

9

La RAM apparait alors organisée en 4 banks de 128 octets chacun. L'adresse instruction permet

d'adresser à l'intérieur d'un bank alors que les bits RP0 et RP1 du registre STATUS permettent de

choisir un bank.

L’organisation de la RAM est donnée à la page 10 avec les zones allouée au SFR et aux GPR. Les zones

hachurées ne sont pas implantées physiquement.

Même si on précise une adresse supérieure à 127 (+ de 7 bits) dans une instruction, elle est tronquée à 7

bits puis complétée par les bits RP0 et RP1 pour former une adresse 9 bis.

Par exemple, pour copier l’accumulateur W dans la case mémoire d’adresse 1EFh, il faut d’abord

placer les bits RP0 et RP1 à 1 (bank 3), ensuite on utilise soit l’instruction MOVWF 6Fh soit

l’instruction MOVWF 1EFh, qui donne le même résultat.

En effet, que l’on écrive 6Fh = 0110 1111 ou 1EFh = 0001 1110 1111, le PIC ne prend que 7

bits soit : 1101111 = 6Fh et complète avec les bits RP1,RP0 pour obtenir 11 1101111 = 1EFh.

Les instructions bcf et bsf et qui permettent de positionner un bit à 0 ou à 1 sont :

bcf STATUS,RP0 ; place le bit RP0 à 0

bsf STATUS,RP1 ; place le bit RP1 à 1

� Accès à la RAM par l’adressage INDIRECT

Pour accéder à une position de la RAM en utilisant l’adressage indirect, on passe toujours par une

position fictive appelée INDF (Indirect File).

Exemple : l’instruction CLRF INDF signifie : mettre à zéro la case mémoire d’adresse INDF. Mais

quelle est l’adresse de cette position appelée INDF ? La réponse est :

INDF est la case mémoire pointée par le pointeur IRP/FSR (File Selection Register acts as a

pointer).

IRP est un bit qui se trouve dans STATUS et FSR est un registre accessible dans tous les bancs. On peut

se demander pourquoi on ajoute le bit IRP. En effet, le registre de pointage FSR est un registre 8 bits, il

peut donc adresser au maximum 256 positions mémoire (de 00h a FFh), c’est seulement la moitié de la

RAM dont on dispose. Il nous manque un bit pour avoir les 9 bits nécessaires. On utilise le bit IRP qui

se trouve dans le registre STATUS.

Exemple : Si on place 74h dans le registre FSR et on positionne le bit IRP à 1, alors, l’instruction

CLRF INDF signifie : remettre zéro la case mémoire d’adresse 174h.

Donc en résumé, chaque fois que le PIC rencontre le mot INDF dans un programme, il sait qu’il s’agit

de la case mémoire dont l’adresse (9 bits) se trouve dans le registre FSR complété par le bit IRP du

registre STATUS

Page 10: Matière MAI82 Systèmes Embarqués et Systèmes Temps ......- 1 registre de travail : W et un registre fichier : F permettant d'accéder à la RAM ou aux registres internes du PIC

Matière MAI82 Systèmes Embarqués et Systèmes Temps Réels

10

� Organisation de la RAM du PIC 16F877

Page 11: Matière MAI82 Systèmes Embarqués et Systèmes Temps ......- 1 registre de travail : W et un registre fichier : F permettant d'accéder à la RAM ou aux registres internes du PIC

Matière MAI82 Systèmes Embarqués et Systèmes Temps Réels

11

IV. Tableau récapitulatif

{W,F ? d} signifie que le résultat va soit dans W si d=0 ou w, soit dans F si d= 1 ou f

MOVWF 55h ; signifie : Copier le

contenu de W dans la case mémoire

d’adresse 55h

MOVF 35h,0 ; Copier le contenu de

la case mémoire d’adresse 35h dans

l’accumulateur W.

ADDWF 70h,1 ou ADDWF 70h,f

Signifie : additionner le contenu de W

avec le contenu de la case mémoire

d’adresse 70h et placer le résultat

dans la case mémoire 70h.

BSF STATUS,2 ; signifie : placer à 1

le bit 2 (3ème bit à partir de la

droite) du registre STATUS

BCF 45h,6 ; signifie : placer à 0 le

bit 6 du registre de la case mémoire

d’adresse 45h.

On remarque que : Les instructions qui agissent sur un registre ou un bit d’un registre contiennent toutes

la lettre F dans le nom de l’instruction. Ceci vient du fait que chez Microchip, la RAM est appelée

register File (SFR ou GPR) . Les instructions qui agissent sur une constante contiennent toutes la lettre

L, parce que chez Microchip, on appelle ≪ Literal ≫ ce genre d’adressage, chez d’autres constructeurs,

on parle d’adressage immediat.

Page 12: Matière MAI82 Systèmes Embarqués et Systèmes Temps ......- 1 registre de travail : W et un registre fichier : F permettant d'accéder à la RAM ou aux registres internes du PIC

Matière MAI82 Systèmes Embarqués et Systèmes Temps Réels

12

TD1

Boucles et fonctions avec Mickro C

Exercice 1

Corriger les erreurs contenues dans le programme suivant. Que pouvez-vous dire au sujet de la boucle

while ?

k=0;

Total=0; Som=0;

While (k<10) {

Somme++;

Total+=somme; }

Exercice 2

Ecrire un programme pour vérifier si un nombre est pair ou impair.

Exercice 3

Ecrire une fonction qui permet de calculer la circonférence d'un rectangle. La fonction doit recevoir les

deux cotes du rectangle en tant que nombres réels et retourner le résultat en réel.

Exercice 4

Ecrire un programme principal qui utilise la fonction que vous avez développé dans l'exercice 1.

Trouvez la circonférence d'un rectangle dont les cotés sont 2.3 cm et 5.6 cm. Stocker le resultat dans un

nombre en virgule flottante appelé MonRésultat.

Exercice 5

Une LED est connectée à la broche RB0 du PORT B d'un microcontrôleur de type PIC 16F877 à

travers une résistance de limitation de courant en mode d'absorption de courant. Ecrire un programme

pour faire clignoter la LED durant cinq secondes.

Exercice 6

Huit LEDs sont connectées au PORT C d'un microcontrôleur de type PIC 16F877. Ecrire un programme

de sorte que les LEDs comptent en séquence binaire avec un délai d'une seconde entre les sorties.

Exercice 7

Ecrire deux fonctions pour convertir la température exprimée en degrés Celsius à Fahrenheit et vis

versa. Montrer comment ces fonctions peuvent être appelées à partir d'un programme principal pour

convertir 20o C en F et également 100

o F en C.

TC= (TF - 32)*5/9

Exercice 8

Ecrire un programme pour stocker la valeur de la fonction f(x) dans un tableau appelé x qui varie de 0 à

10 par un pas de 0.5. On suppose que:

f(x) = 1.3x3-2.5x

2+3.1x -4.5

Exercice 9

Ecrire un programme qui stocke des nombres 1 à 10 dans un tableau appelé Numbers. Créer une

fonction nommée Moyenne qui sera appelée pour calculer la moyenne de ces nombres.

Page 13: Matière MAI82 Systèmes Embarqués et Systèmes Temps ......- 1 registre de travail : W et un registre fichier : F permettant d'accéder à la RAM ou aux registres internes du PIC

Matière MAI82 Systèmes Embarqués et Systèmes Temps Réels

13

Chapitre II : Les entrées / sorties

Le microcontrôleur PIC 16F877 dispose de 33 broches d’entrée sortie regroupées dans 5 ports :

• Port A : 6 pins I/O numérotées de RA0 à RA5.

• Port B : 8 pins I/O numérotées de RB0 à RB7.

• Port C : 8 pins I/O numérotées de RC0 à RC7.

• Port D : 8 pins I/O numérotées de RD0 à RD7.

• Port E : 3 pins I/O numérotées de RE0 à RE2.

� A chaque port correspondent deux registres :

1. Un registre direction pour programmer les lignes soit en entrée, soit en sortie : TRISA, TRISB,

TRISC, TRISD et TRISE.

2. Un registre de données pour lire ou modifier l’état des broches. PORTA, PORTB, PORTC,

PORTD et PORTE

� Pour déterminer les modes des ports (I/O), il faut sélectionner leurs registres TRISX:

1. Le positionnement d’un bit à « 1 » place le pin en entrée.

2. Le positionnement de ce bit à « 0 » place le pin en sortie.

� La plupart des broches des PORTs sont partagées avec des périphériques. En général, si un

périphérique est utilisé, les broches correspondantes ne peuvent pas être utilisées.

� Au reset, les lignes des ports A et E sont configurées en entrées analogiques, les autres lignes

sont configurées en entrées digitales.

Remarque : Le courant absorbé ou fourni peut atteindre 25 mA

� I. Le port d' E/S PORTA

Le port A désigné par PORTA est un port de 6 bits (RA0 a RA5). RA6 et RA7 ne sont pas

accessibles. Au départ toutes les broches sont configurées en entrée.

� I.1. La broche RA4

En entrée, la broche RA4 peut être utilisée soit comme E/S numérique normale, soit comme entrée

horloge pour le Timer TMR0. Pour l'utiliser comme sortie logique, il faut ajouter une résistance de

pull-up externe.

(N.B. logique négative: si on envoie un ‘0’ sur RA4, l’interrupteur se

ferme et la LED s’allume. Si on envoie un ‘1’, l’interrupteur s’ouvre

et la LED s’ettient).

Page 14: Matière MAI82 Systèmes Embarqués et Systèmes Temps ......- 1 registre de travail : W et un registre fichier : F permettant d'accéder à la RAM ou aux registres internes du PIC

Matière MAI82 Systèmes Embarqués et Systèmes Temps Réels

14

� I.2. Les autres broches de PORTA

Les autres broches (RA0, RA1, RA2, RA3 et RA5) peuvent être utilisées soit comme E/S

numériques soit comme entrées analogiques. Au RESET, ces E/S sont configurées en entrées

analogiques.

Pour les utiliser en SORTIES NUMERIQUES, il suffit de les configurer en sortie à l'aide du

registre de direction TRISA.

Pour les utiliser en ENTREES NUMERIQUES, il faut les configurer en entrée à l'aide de TRISA,

en plus il faut les configurer en numérique en plaçant la valeur '00000110' dans le registre

ADCON1 ; Voir(la conversion Analogique numérique)

� II. Le port d' E/S PORTB

Le port B désigné par PORTB est un port bidirectionnel de 8 bits (RB0 a RB7). Toutes les broches

sont compatibles TTL.

En entrée, la ligne RB0 appelée aussi INT peut déclencher l’interruption externe INT.

En entrée, une quelconque des lignes RB4 a RB7 peut déclencher l'interruption RBI.

� III. Le port d' E/S PORTC

Le port C désigné par PORTC est un port bidirectionnel de 8 bits (RC0 a RC7). Toutes les

broches sont compatibles TTL. Au départ toutes les broches sont configurées en entrée.

Toutes les broches du port C peuvent être utilisées soit comme E/S normales soit comme broches

d‘accès à différents modules comme le timer 1, les modules de comparaison et de capture

CCP1/2, le timer 2, le port I2C ou le port série.

Pour l’utilisation d’une broche du port C comme E/S normale, il faut s’assurer qu’elle n’a pas été

affectée à un de ces modules. Par exemple, si TIMER1 est valide, il peut utiliser les broches RC0

et RC1 selon sa configuration.

� IV. Le port d' E/S PORTD

Le port D désigné par PORTD est un port bidirectionnel de 8 bits (RD0 a RD7). Toutes les

broches sont compatibles TTL.

PORTD peut être utilisé dans un mode particulier appelé parallel slave port, pour cela il faut

placer le bit PSPMODE (bit 4) de TRISE à 1. Dans ce cas les 3 bits de PORTE deviennent les

entrées de contrôle de ce port (RE, WE et CS).

� V. Le port d' E/S PORTE

PORTE contient seulement 3 bits RE0, RE1 et RE2. Les 3 sont configurables en entrée ou en

sortie à l’aide des bits 0, 1 ou 2 du registre TRISE.

Les 3 bits de PORTE peuvent être utilisés soit comme E/S numérique soit comme entrées

analogiques du CAN. La configuration se fait à l’aide du registre ADCON1.

� Situation au démarrage : Tous les ports sont configurés en entrée ; PORTD et PORTE sont

configurés en mode normal ; PORTA et PORTE sont configurés en analogique

Page 15: Matière MAI82 Systèmes Embarqués et Systèmes Temps ......- 1 registre de travail : W et un registre fichier : F permettant d'accéder à la RAM ou aux registres internes du PIC

Matière MAI82 Systèmes Embarqués et Systèmes Temps Réels

15

La conversion analogique / numérique

(Principe du convertisseur à approximations successives)

• Le circuit est constitué par un convertisseur digital / analogique auquel est associé un circuit de

commande générant des nombres binaires.

• La tension analogique Vx est appliquée à l'entrée «+» du comparateur.

• La conversion commence quand une impulsion est appliquée à l'entrée «Start».

• Au premier coup d'horloge (clock), le circuit de commande met le MSB à 1 et tous les autres bits

à 0.

• Le convertisseur digital / analogique voit en entrée le nombre binaire 100 et délivre une tension

analogique VC correspondant à la moitié de la tension de référence VR ( VC=VR/2).

• L'amplificateur opérationnel effectue la comparaison entre VC et Vx et informe le circuit de

commande.

� Si Vx est supérieure à VC, le circuit de commande laisse le MSB à 1.

� Si Vx est inférieure à VC, le MSB est ramené au niveau logique 0.

• Le circuit de commande passe ensuite le bit N° 2 à l'état 1. Ce dernier restera à l'état 1 si la

nouvelle tension de comparaison VC ( VC=VR/2+ VR/4 ) est supérieure à Vx ou retournera à

l'état 0 si VC est inférieure à Vx.

• Le même processus est répété pour le bit N° 3 en comparant Vx avec VC (VC=VR/2+ VR/4+

VR/8 ) et ainsi de suite jusqu'à ce que le dernier bit (LSB) soit traité.

Page 16: Matière MAI82 Systèmes Embarqués et Systèmes Temps ......- 1 registre de travail : W et un registre fichier : F permettant d'accéder à la RAM ou aux registres internes du PIC

Matière MAI82 Systèmes Embarqués et Systèmes Temps Réels

16

L'exemple suivant permet d'éclaircir le mécanisme de la conversion.

Supposons une tension Vx = 7,3 volts et une tension de référence VR de 10 volts.

a) Le circuit de commande génère le nombre binaire 100. Puisque le bit le plus significatif (MSB) a un

poids égal à 1 / 2 de VR, le convertisseur D / A délivre une tension analogique VC de 5 volts.

b) Le comparateur signale que Vx est plus grande que VC.

c) Le circuit de commande conserve le bit (MSB) à l'état 1.

d) Le circuit de commande met le bit N° 2 à l'état 1, produisant ainsi le nombre binaire 110 auquel

correspond la tension analogique VC de 7,5 volts (5 V du bit le plus significatif plus 2,5 volts du

deuxième bit).

e) Le comparateur signale que Vx est inférieure à VC.

f) Le circuit de commande remet le deuxième bit à 0.

g) Le circuit de commande met le bit le moins significatif à l'état 1. Au nombre binaire 101 correspond

la tension analogique VC de 6,25 volts (1 / 2 de VR plus 1 / 8 de VR).

h) Le comparateur signale que Vx est supérieure à VC.

i) Le circuit de commande conserve au troisième bit (LSB) la valeur de 1.

j) La conversion est terminée et nous avons obtenus le nombre binaire 101.

La figure suivante montre comment se déroule la conversion dans le temps. On note qu'à chaque bit sont

consacrés deux intervalles de temps égaux

Page 17: Matière MAI82 Systèmes Embarqués et Systèmes Temps ......- 1 registre de travail : W et un registre fichier : F permettant d'accéder à la RAM ou aux registres internes du PIC

Matière MAI82 Systèmes Embarqués et Systèmes Temps Réels

17

� Dans le premier intervalle (créneau positif du signal d'horloge), le circuit de commande met un

bit à l'état 1, le convertisseur D / A génère la tension VC et le comparateur informe le circuit de

commande.

� Dans le deuxième intervalle, le circuit de commande valide l'état 1 sur le bit en cours de

traitement ou décide de le remettre à 0.

� Ce fait est important, car pendant la conversion, qui est assez lente, le convertisseur délivre des

signaux binaires inexacts. Il faut donc savoir si la conversion est en cours ou si elle est terminée.

� C'est le rôle de la sortie «état» qui est à 1 lorsque la conversion est en cours d'exécution et

à 0 lorsque la conversion est terminée.

VI. Module de la CAN du PIC 16F877

� Ce module est constitué d'un convertisseur Analogique Numérique 10 bits dont l’entrée

analogique peut être connectée sur l'une des 8 entrées analogiques externes. On dit qu'on

a un CAN à 8 canaux.

� Les entrées analogiques doivent être configurées en entrée à l'aide des registres TRISA

et/ou TRISE. L’échantillonneur bloqueur est intégré, il est constitué d’un interrupteur

d’échantillonnage et d’une capacité de blocage de 120 pF.

� Les tensions de références permettant de fixer la dynamique du convertisseur. Elles

peuvent être choisies parmi Vdd, Vss, Vr+ ou Vr- .Le contrôle du module se fait par les

deux registres ADCON0 et ADCON1.

Module de conversion A/N.

Page 18: Matière MAI82 Systèmes Embarqués et Systèmes Temps ......- 1 registre de travail : W et un registre fichier : F permettant d'accéder à la RAM ou aux registres internes du PIC

Matière MAI82 Systèmes Embarqués et Systèmes Temps Réels

18

ADCS1:ADCS0 : Choix de l'horloge de conversion donc du temps de conversion

00 : Fosc/2

01 : Fosc/8

10 : Fosc/32

11 : Oscillateur RC pour FOSC < 1MHz)

CHS2:CHS0 : choix de l’entrée analogique

000 = channel 0, (RA0)

001 = channel 1, (RA1)

010 = channel 2, (RA2)

011 = channel 3, (RA3)

100 = channel 4, (RA5)

101 = channel 5, (RE0)

110 = channel 6, (RE1)

111 = channel 7, (RE2)

GO/DONE : Une conversion démarre quand on place ce bit à 1. A la fin de la conversion, il

est remis automatiquement a zéro. Ce bit peut aussi être positionné automatiquement par le

module CCP2.

ADON : Ce bit permet de mettre le module AN en service

ADFM : justification à droite ou à gauche du résultat dans les registre ADRESH et

ADRESL

ADRESH ADRESL

1 : justifié à droite 000000XX XXXXXXXX

0 : justifié à gauche XXXXXXXX XX000000

PCFG3:PCFG0 : configuration des E/S et des tensions de références. Les 5 broches de

PORTA et les 3 de PORTE peuvent être configurés soit en E/S digitales, soit en entrées

analogiques. RA2 et RA3 peuvent aussi être configurées en entrée de référence.

Page 19: Matière MAI82 Systèmes Embarqués et Systèmes Temps ......- 1 registre de travail : W et un registre fichier : F permettant d'accéder à la RAM ou aux registres internes du PIC

Matière MAI82 Systèmes Embarqués et Systèmes Temps Réels

19

VI.1. Déroulement d’une Conversion

• Le PIC dispose d’un échantillonneur bloqueur intégré constitue d'un interrupteur S, d'une

capacité de maintien C=120 pF et d’un convertisseur Analogique numérique 10 bits. Pendant la

conversion, la tension Ve à l'entrée du convertisseur A/N doit être maintenue constante.

• Au départ il faut commencer par faire l’acquisition du signal en fermant l’interrupteur S, ceci se

fait à l’aide du registre ADCON0, soit au moment de la validation du module par le bit ADON

soit après un changement de canal si ADON est déjà positionné.

• Après la fin de l’acquisition, on peut démarrer une conversion en positionnant le bit GO_DONE,

l'interrupteur S s’ouvre pour assurer le blocage de la tension.

• La conversion commence, elle est réalisée en 12 TAD, à la fin, le bit GO_DONE repasse à 0 et

le résultat est chargé dans les registres ADRESL et ADRESH. Le module met 2 TAD

supplémentaires pour fermer l'interrupteur S ce qui démarre une nouvelle phase l’acquisition

pendant laquelle la tension Ve rejoint la tension analogique d'entrée Va.

• Le temps d'acquisition dépend de la constante de temps RC.

Page 20: Matière MAI82 Systèmes Embarqués et Systèmes Temps ......- 1 registre de travail : W et un registre fichier : F permettant d'accéder à la RAM ou aux registres internes du PIC

Matière MAI82 Systèmes Embarqués et Systèmes Temps Réels

20

VI.2. Temps de conversion Le temps de conversion est égal à 12 TAD, TAD est le temps de conversion d'un bit, il dépend de la

fréquence du quartz et du prédiviseur (div) choisi : TAD = div x 1/fosc. Le choix de div doit être ajusté

pour que TAD soit ≥ à 1,6 µs.

Avec un quartz de 4 MHz, il faut choisir div=8 ce qui donne TAD = 2 µs soit un temps de conversion :

TCONV = 24 µs

VI.3. Etapes de la conversion A/N

Pour effectuer une conversion A/N, voici les étapes à suivre :

1. Configuration du module CAN :

• Configuration du port entrée pour le CAN et les tensions de référence (par le registre ADCON1

bits 3 :0).

• Sélection du canal d’entrée analogique (par le registre ADCON0 bits 5 :3).

• Sélection de l’horloge de conversion (par le registre ADCON0 bits 7 :6).

• Mise en route du module CAN (par le registre ADCON0 bit 0).

2. Attendre à ce que l’acquisition soit faite (temps d’acquisition).

3. Démarrer la conversion :

- Mettre à ‘1’ le bit GO/DONE (registre ADCON0).

4. Attendre à ce que la conversion soit terminée :

- Signalée par la mise à ‘0’ du bit GO/DONE, ou par une interruption.

5. Lire le résultat de la conversion. Le résultat est stocké dans les registres ADRESH : ADRESL.

6. Pour effectuer une deuxième conversion, il faut attendre au moins 2 fois le temps de conversion

par bit.

Remarque :

Du fait que le registre pair du résultat (ADRESH : ADRESL) est sur 16-bits, on a donc la possibilité

de justifier le résultat (qui est sur 10-bits) soit à gauche en mettant à ‘0’ le bit ADFM (registre

ADCON1), soit à droite en mettant le bit ADFM à ‘1’.

Page 21: Matière MAI82 Systèmes Embarqués et Systèmes Temps ......- 1 registre de travail : W et un registre fichier : F permettant d'accéder à la RAM ou aux registres internes du PIC

Matière MAI82 Systèmes Embarqués et Systèmes Temps Réels

21

TD2

La conversion analogique numérique

Exercice 1

Selon le schéma ci-dessous la conversion analogique numérique comprend deux étapes. Lesquelles? En

déduire le temps d’échantillonnage.

Le temps TAD est le temps nécessaire pour la conversion d’un bit qui doit être ≥ 1.6 µs selon le fabricant

et il correspond à la période de l’horloge du CAN (TAD = div x 1/fosc).

• Quel sera donc le temps de conversion totale.

• En déduire la fréquence maximale d'échantillonnage si on admet un temps d’acquisition Tacq

compris entre 10 µs et 20 µs et un temps d’attente de 2µs avant de lancer une nouvelle conversion.

Exercice 2

Etablir les différentes étapes à suivre pour effectuer une conversion analogique numérique.

Etudier le cas du polling.

Exercice 3.

Sachant que Vref=5V et Vin=2V.

1. Trouver le pas de quantification.

2. Calculer le résultat de la conversion.

3. En déduire le contenu des registres ADRESL et ADRESH sachant qu'on utilise la justification à

gauche.

Exercice 4

On désire afficher en binaire à l'aide de diodes LED reliées aux ports B et C le résultat de la conversion

d'une grandeur analogique à l'entrée RA5 d'un PIC16F877 piloté par un quartz de 15Mhz. Sachant que

l'on utilise l'horloge interne pour la conversion, le résultat de la conversion est justifié à gauche, la

tension de référence est de 2.5V à l'entrée AN3:

1. Quelle est le pas de conversion?

2. Quel est le résultat de conversion en hexa pour une tension d'entrée de 1V.

3. Calculer le facteur de division.

4. Trouver en hexadécimal le contenu des registres TRISB, TRISA, TRISC, ADCON0,

ADCON1.

5. Ecrire un programme en MikroC qui permet d'afficher le résultat de conversion.