Pic

Published on June 2016 | Categories: Documents | Downloads: 55 | Comments: 0 | Views: 1026
of 29
Download PDF   Embed   Report

Comments

Content

L A
p2 p3 p3 p3 p4 p4

ES MICROCONTRÔLEURS PIC

I) Généralités sur les microcontrôleurs 8 bits
Historique, domaines d’applications, architecture générale, quelques grandes familles de microcontrôleur +TD

II) Présentation de la famille PIC
Le PIC et ses trois grandes familles Décryptage de la référence des PIC Descriptif sommaire de quelques PIC Caractéristiques principales de la famille PIC TD sur la présentation de la famille PIC

II) Architecture interne des PIC de la famille MID-RANGE
p5 p7 p8 p9 p10 p11 p13 p15 p16 p17 p18 p21 p22 Schéma de l’architecture +TD Principe de fonctionnement de l’unité centrale : exécution d’une instruction +TD Horloge +TD RESET +TD La mémoire programme +TD La mémoire donnée +TD Les E/S parallèles : Fonctionnement d’une broche d’un port d’E/S logique +TD Les E/S parallèles : PORTA + Exemple pour le C et FLOWCODE Les E/S parallèle : PORTB + Exemple pour le C et FLOWCODE Le C.A.N. : Présentation Le C.A.N. : Mise en œuvre + Exemple pour le C et FLOWCODE et TD La liaison série asynchrone : Présentation La liaison série asynchrone : Mise en œuvre + Exemple pour le C et TD

IV) La programmation ICSP des PIC
P25 p26 p27 p28 Principe de programmation in situ ou ICSP (In-Circuit Serial Programming) + TD Le programmateur + TD La carte d’expérimentation « ELECTROPIC » Schéma d’implantation de la carte d’expérimentation « ELECTROPIC »

Auteur : C. Roudaut, Lycée Vauban, Brest

Les microcontrôleurs PIC

pic.doc

Page 1

I. Généralités sur les microcontrôleurs 8 bits

● ▬ ● ▬ ● ▬ ● ▬ ● ▬
1. Historique des microcontrôleurs 8 bits
Nés en 1980 avec le microcontrôleur 8048 d’INTEL et le HC05 de MOTOROLA, les microcontrôleurs reposent sur un concept très pratique : réunir sur une même puce un processeur 8 bits et des périphériques numériques et analogiques divers ( ex : pilotage d’actionneurs tel que relais, moteur, afficheur,…, acquisition de grandeurs physiques fournies par des capteurs, poussoirs, clavier…..).

2. Domaines d’application des microcontrôleurs
Les domaines d’application sont extrêmement variés et touchent tous les secteurs : grand public, industriel, informatique, les télécommunications avec les téléphones portables, l’automobile pour toutes les fonctions autour du tableau de bord, de l’ouverture des portes, contrôle des sièges, feux, et autres alarmes.

3. Architecture générale des microcontrôleurs
Les microcontrôleurs 8 bits sont des composants peu coûteux qui bénéficient des progrès technologiques comme la mémoire flash pour le stockage des programmes, la mixité analogique-numérique sur le même silicium. C’est un circuit intégré qui regroupe dans le même boîtier toutes les fonctions élémentaires d’un système minimum à microprocesseur : • unité centrale • mémoire programme, donnée • Bus d’adresse, de donnée, de contrôle • interface d’entrée/sortie parallèle, série. Selon les besoins de l’application et les modèles de microcontrôleurs disponibles dans une famille (PIC, ATMEL, INTEL) il peut comprendre en plus : • • des blocs analogiques (CAN, CNA, filtres, amplificateurs, comparateurs analogiques, …..) des blocs numériques (temporisateurs, modulateurs, multiplexeur, UART,…..)

4. Quelques grandes familles de microcontrôleurs
Quatre familles sont de véritables standards du domaine : les 8048 et 8051 pour INTEL et les 68HC05 et 68HC11 pour MOTOROLA. MOTOROLA est le leader dans le domaine des microcontrôleurs 8 bits avec 21 % des parts de marché pour le 68HCXX. INTEL est le second avec le microcontrôleur 8051 et représente 15%. qui fabrique les microcontrôleurs PIC possède 6% du marché.

 TD sur la présentation de la famille PIC
a) Quels sont les deux principaux fabricants de microcontrôleur ? b) Quelle est la proportion de PIC vendus sur le marché des microcontrôleurs ? c) Citer trois domaines d’application des microcontrôleurs ?

Les microcontrôleurs PIC

pic.doc

Page 2

II. Présentation de la famille PIC

● ▬ ● ▬ ● ▬ ● ▬ ● ▬
1. Le PIC et ses trois grandes familles
Les microcontrôleurs de Microchip, les PIC sont une marque déposée. Il existe trois grandes familles de microcontrôleurs : • La famille Base-line, qui utilise des mots d’instructions codés sur 12 bits (ex : 12C508). • la famille Mid-Range que nous étudierons, qui utilise des mots d’instructions1 codés sur 14 bits (ex : 16F84, 16F628) • La famille High-End, qui utilise des mots d’instructions codés sur16 bits (ex : 18F8x ou 17Cxx).

2. Décryptage de la référence des PIC XX X XXX -XX X /XX XXX
N°de famille 12 : Base line Type de mémoire programme du circuit et plage d’alimentation Type de Standard Etendu mémoire (4,5V– 6V) (2,5V- 6V) EPROM 16 C xxx 16 LC xxx ROM 16 CR xxx 16 LCR xxx Flash 16 F xxx 16 LF xxx Référence du circuit au sein de la famille (Base line ou Mid-Range ou HighEnd). Gamme de fréquence -04=4MHz Gamme de Température Industrial : I = -40°C to +85°C (l) Code lié à la programmation de la ROM en usine (QTP : SO= SOIC Quick Turn Production) Commercial: SS= SSOP (QTP) ...= 0°C to +70°C Type de boîtier : P= PDIP

16 : Mid-Range
17, 18 : High-End

-20=20MHz

3. Descriptif sommaire de quelques PIC
référence Mémoire programme Oct Organisa ets tion 768 512x12 1792 3584 1024x14 2048x14 EEPROM de donnée 64 128 Taille RAM 25 68 256 CAN 8 bits Analogiques Com autres para teur 2 Port E/S E/S série 6 13 Numériques PWM 10 bits USART/ SCI

système Timers 1-8bits. 1-WDT2
Vit. Max en MHz

Autres particularités IC SP oui Une E/S fournit/absorbe 25mA oui Une E/S fournit/ absorbe 25mA max. oui Une E/S fournit/ absorbe 25mA max. Horloge interne 4MHz . oui Une E/S fournit/ absorbe 25mA max. CCP5, oui Une E/S fournit/ absorbe 25mA max. CCP, PSP6

12C508 16F84 16F628

4

1

BOD3, 16 Prog Vref4 BOD BOD 22 33

1-8bits. 20 1-WDT 1-16bits. 20 2-8bits. 1-WDT 1-16bits. 20 2-8bits. 1-WDT 1-16bits. 20 2-8bits. 1-WDT

16F870 16F877

3584 14336

2048x14 8192x14

64 256

128 368

5 de 10bits 8 de 10bits

USART/ SCI USART/ SCI I2C

1 2

1

Instructions de 14 bits : Code binaire sur 14 bits qui correspond à un ordre précis que doit exécuter le microcontrôleur. Ce code binaire est aussi nommé code machine. Un programme est composé d’une suite séquentielle d’ordres ou d’instructions. 2 WDT : watch dog 3 BOD : Brown out detection : Détection de chute de la tension d’alimentation 4 Prog Vref : tension de référence programmable en sortie 5 CCP : Capture, Compare, PWM 6 PSP : port // esclave Les microcontrôleurs PIC pic.doc Page 3

II. Présentation de la famille PIC

● ▬ ● ▬ ● ▬ ● ▬ ● ▬
4. Caractéristiques principales de la famille PIC
Un jeu d’instruction réduit ou RISC ( Reduced instruction set computer) Un jeu d’instruction RISC permet d’accélérer la vitesse d’exécution des programmes. Les instructions7 pour commander le microcontrôleur sont alors peu nombreuses (33 ou 35 instructions différentes) mais aussi plus simples et donc plus rapides à exécuter. Chaque mot de la mémoire programme (de 12 ou 14 ou 16 bits) contient une instruction et toutes les instructions (sauf les sauts) sont exécutées en un seul cycle machine. Une architecture de type HARVARD Il existe deux types classiques d’architecture interne de microcontrôleur :  Architecture de HARVARD qui est celle des PIC. Avec ce type d’architecture les instructions et les données transitent sur des bus bien différenciés. Il en résulte un gain de temps, puisque pour exécuter une instruction on peut simultanément accéder à l’instruction ET à la donnée associée à cette instruction.  Architecture VON NEUMANN qui possède un unique bus de données pour faire transiter les instructions et les données Architecture Von Neumann Architecture Harvard
Unité centrale Mémoire programme = Instructions Bus d’instructions

Unité centrale Bus données

Mémoire programme = Instructions + données

Mémoire de données

Bus de données

 TD sur la présentation de la famille PIC
a) b) c) d) e) f) g) Donner la signification d’un jeu d’instruction RISC. Indiquer la différence entre une architecture Von Neumann et Harvard. Préciser l’architecture utilisée par les PIC ? Donner la signification de la référence PIC suivante: 16 F 84 –04 /P . Détailler les caractéristiques du microcontrôleur 16F870. Donner la famille à laquelle appartient le 16F870 (Base-line, Mid-range, End-line). A partir de la documentation technique du 16F84 à la page suivante, rechercher : • le nombre de bits de données du PIC 16F84. • l’organisation de la mémoire donnée. • l’organisation de la mémoire programme. • le nombre d’écriture/ effacement de la mémoire programme. • le nombre d’Entrées/Sorties disponibles. • Le courant maximum IOH pour l’état logique haut et le sens de ce courant. • Le courant maximum IOL pour l’état logique bas et le sens de ce courant. h) Donner les différences entre un 16F84 et un 16F628

7

Instructions de 14 bits : Code binaire sur 14 bits qui correspond à un ordre précis que doit exécuter le microcontrôleur. Ce code binaire est aussi nommé code machine. Un programme est composé d’une suite séquentielle d’ordres ou d’instructions. Les microcontrôleurs PIC pic.doc Page 4

II. Présentation de la famille PIC

● ▬ ● ▬ ● ▬ ● ▬ ● ▬

Organisation et registres de la mémoire de donnée

Les microcontrôleurs PIC

pic.doc

Page 5

III. Architecture interne des PIC de la famille MID-RANGE

● ▬ ● ▬ ● ▬ ● ▬ ● ▬
1. Schéma de l’architecture
L’architecture ci-dessous correspond à un microcontrôleur de la famille MID-RANGE qui serait doté de toutes les fonctionnalités possibles pour un PIC.

Repérer en rouge l’unité centrale, en vert la mémoire programme, en bleu la mémoire donnée, en jaune les ports parallèles d’E/S, en violet le périphérique CAN et en orange le périphérique liaison série RS232.

Les microcontrôleurs PIC

pic.doc

Page 6

III. Architecture interne des PIC de la famille MID-RANGE

● ▬ ● ▬ ● ▬ ● ▬ ● ▬
2. Principe de fonctionnement de l’unité centrale : exécution d’une instruction
1. Le PC (Compteur Programme) registre de 13 bits contient l’adresse de la prochaine instruction à exécuter dans la mémoire programme. Le PC peut être stocké, si nécessaire, dans une pile qui peut contenir 8 valeurs aux maximum (8 niveaux). Au début du programme qui commence à l’adresse 0, PC=0.

2. La mémoire programme contient l’ensemble des instructions du programme. Par exemple en adressage direct une instruction se compose d’un mot de 14 bits qui a la structure suivante : Opération à exécuter sur 7 bits Opérande de 7 bits qui est l’adresse de la donnée dans la RAM. 4.B. L’opérande fournit l’adresse qui va permettre d’accéder à la donnée dans la RAM.

+

5. La donnée et l’opération décodée arrivent simultanément dans un multiplexeur. (structure de Harvard). 6.A. L’ALU (Unité Arithmétique et Logique) va exécuter les calculs ou tests logiques requis par l’instruction.

.
3. Le registre d’instruction permet de mémoriser la prochaine instruction qui sera exécutée. 4.A. L’opération va être décodée pour pouvoir indiquer à l’ALU les calculs qui devront être exécutées.

7.A. L’ALU pour effectuer ses opérations a besoin d’une variable, ici un registre de travail W (Working register).

a) Repérer en les fléchant les éléments participants aux phases 1 à 7 de l’exécution d’une instruction.
b) Tracer en rouge, le chemin utilisé pour exécuter une instruction. c) Indiquer le rôle du PC. d) Retrouver le circuit dont le rôle est d’effectuer les opérations arithmétiques et logiques.

Les microcontrôleurs PIC

pic.doc

Page 7

III. Architecture interne des PIC de la famille MID-RANGE

● ▬ ● ▬ ● ▬ ● ▬ ● ▬
3. Horloge a) Durée d’exécution d’une instruction
La durée (Tcy) pour exécuter une instruction est telle que : Tcy = Tosc x 4 avec Tosc la période de l’horloge du microcontrôleur PIC. Les microcontrôleurs exécutent toutes les instructions en un seul cycle machine (sauf les sauts en 2 cycles). Pour une horloge équipée d’un quartz de 4 MHz, on obtient alors environ 1 million d’instructions par seconde.

b) Type d’horloge et mot de configuration
On peut équiper le microcontrôleur avec 3 types d’horloge : Oscillateur à quartz ou résonateur céramique, ensemble résistance capacité, oscillateur à résistance capacité interne. Au moment de la programmation du PIC dans le mot de configuration, il est obligatoire d’informer le microcontrôleur du type d’horloge qui est utilisé. • Oscillateur à quartz ou résonateur céramique Mode LP : 32 KHz - 200KHz Mode XT : 100 KHz - 4 MHz Mode HS : 4 MHz - 20 MHz Après un reset, le programme démarre après 1024 cycles d’instructions.

• Horloge pilotée par un ensemble résistance capacité Mode EXTRC avec une possibilité de sortir l’horloge instruction sur CLKOUT Après un reset, le programme démarre après 4 cycles d’instructions.



Horloge à 4 MHz pilotée par un oscillateur à résistance capacité interne Mode INTRC avec une possibilité de sortir l’horloge instruction sur CLKOUT. Pour ajuster précisément l’horloge interne à 4 MHz, il est possible de la modifier avec le registre OSCCAL. a) Choisir le mode de fonctionnement adapté à un PIC équipé d’une horloge à 4 MHz. b) Retrouver dans le chapitre II.3 les microcontrôleurs fonctionnant avec le mode INTRC.

Les microcontrôleurs PIC

pic.doc

Page 8

III. Architecture interne des PIC de la famille MID-RANGE

● ▬ ● ▬ ● ▬ ● ▬ ● ▬
4. RESET a) Sources de Reset
Après un RESET, le programme démarre, ce qui se traduit concrètement par la mise à 0 de PC. Le PC contient alors l’adresse 0 du début du programme. Il existe plusieurs sources de reset : • Un reset par mise à l’état bas de /MCLR. A la mise sous tension, VC=0 V d’ou /MCLR=0 il y a donc un RESET.

• Un reset à la mise sous tension du microcontrôleur appelé POR (Power On Reset) A la mise sous tension, si la vitesse de croissance de la tension d’alimentation est assez élevée (>0,05V.ms-1) il se produit un reset automatique si le microcontrôleur est équipé de l’option POR.

• •

Un reset par détection de chute d’alimentation du microcontrôleur ou BOR (Brown Out Reset) Un reset par débordement du timer du chien de garde WDT (Watch Dog Timer)

Remarque : Il est possible de retarder le Reset de type POR, ou BOR de 72ms par action sur le bit « Enable POWER TIMER » dans le mot de configuration du PIC. Le Reset du microcontrôleur a lieu alors quand la tension d’alimentation est stable.

 TD sur le reset et l’horloge appliqué à une carte minimum avec un 16F628
a) Indiquer la source du reset. b) Indiquer la fréquence de l’horloge du PIC.

Cette carte minimum est équipée d’un connecteur ICSP qui fournit l’alimentation de la carte, et permet de programmer le PIC.

1 2 3 4 6 7 8 9

RA2 RA3 RA4 RA5/MCLR RB0 RB1 RB2 RB3

18 RA1 17 RA0 OSC1/RA7 16 OSC2/RA6 15 RB7 RB6 RB5 RB4 13 12 11 10

Les microcontrôleurs PIC

pic.doc

Page 9

III. Architecture interne des PIC de la famille MID-RANGE

● ▬ ● ▬ ● ▬ ● ▬ ● ▬
5. La mémoire programme
Pour la famille MID-RANGE la mémoire programme est constituée de mots de 14 bits. Lors de la lecture d’un PIC vierge tous les bits de la mémoire programme sont à 1, on peut donc lire en binaire (11 1111 1111 1111) ou encore en hexadécimal 3FFFh. Le PC a une taille de 13 bits, il est donc capable d’adresser au maximum 8Kmots (1mot=14 bits). Cette espace mémoire est divisée en 4 pages de 2 Kx14 (0h - 7FFh, 800h - FFFh, 1000h - 17FFh, et 1800h - 1FFFh). Organisation de cette mémoire
Registre PC (Program Counter) de 13 bits

 TD sur la mémoire programme
a) Indiquer le rôle du PC. b) Donner la taille maximale en Kmots d’un programme d’un PIC 12C508 en utilisant le chapitre II.3. c) Donner la taille maximale en Kmots d’un programme d’un PIC 16F870 en utilisant le chapitre II.3. d) Donner la taille maximale en Kmots d’un programme d’un PIC 16F877 en utilisant le chapitre II.3.

Les microcontrôleurs PIC

pic.doc

Page 10

III. Architecture interne des PIC de la famille MID-RANGE

● ▬ ● ▬ ● ▬ ● ▬ ● ▬
6. La mémoire donnée a) Deux types de registres8
Cette mémoire est organisée en mot de 8 bits. Elle contient deux types de registres :  Les registres SFR (Special Function Registers) sont spécifiques à l’unité centrale. Ils permettent : • à l’utilisateur de paramétrer le cadre de travail de l’unité centrale, prises en compte d’interruption, … • à l’unité centrale de pouvoir exécuter une instruction (registre PC, …) • à l’utilisateur et à l’unité centrale de piloter les périphériques (port E/S, CAN,….) • à l’unité centrale d’analyser au moyen de drapeau (mémoire de 1 bit) les résultats d’une opération effectuée par l’Unité Arithmétique et Logique  Les registres GPR (General Purpose Register) à usage général qui servent de zone de variables pour l’utilisateur.

b) Organisation de la mémoire de données
Elle est divisée en quatre pages d’une taille maximum de 128 octets, chaque page est aussi nommée « banque de registres ». Les instructions PIC qui permettent d’accéder directement à une donnée de la RAM sont structurées de la façon suivante :
Opération à exécuter sur 7 bits

+

Opérande de 7 bits qui est l’adresse de la donnée dans la RAM.

L’opérande est une adresse de 7 bits. On ne peut donc qu’accéder à 27=128 bits. Or il existe au maximum 4 banques, il manque donc deux bits qui permettent de sélectionner une banque de 128 octets parmi 4. Le registre STATUS contient ces deux bits RP1 et RP0 de sélection de banque.

Il faut donc systématiquement que le programmateur renseigne l’unité centrale sur le numéro de banque dans laquelle il désire travailler. Il réalise cette opération en donnant une valeur au bit RP1 et RP0 du registre STATUS.

8

Registres : Le registre est un ensemble de bascules. Ces bascules permettent de mémoriser l’information. Ici la mémoire de donnée est organisée en mots de 8 bits. Un registre se compose donc de 8 bascules.
Les microcontrôleurs PIC pic.doc Page 11

III. Architecture interne des PIC de la famille MID-RANGE

● ▬ ● ▬ ● ▬ ● ▬ ● ▬
 TD sur la mémoire donnée
a) Indiquer la différence entre registres SFR et GPR. b) Encadrer en rouge la zone de variables SFR. c) Encadrer en vert la zone de variables GPR. d) Retrouver la nature du registre PORTA (SFR ou GPR) en utilisant un exemple d’organisation des registres en mémoire donnée ci-dessous. e) Retrouver la taille de la zone de variable utilisateur dans une banque. f) Nommer les registres SFR qui sont communs aux quatre banques. g) Compléter le tableau suivant : Valeur des bits RP1 et RP0 du registre STATUS RP1 RP0

Nom du registre

N° de banque

PORTA TRISA PORTB STATUS

Un exemple d’organisation des registres SFR et GPR
Les adresses des registres sont toujours à vérifier dans la documentation technique de chaque composant PIC.

Les microcontrôleurs PIC

pic.doc

Page 12

III. Architecture interne des PIC de la famille MID-RANGE

● ▬ ● ▬ ● ▬ ● ▬ ● ▬
7. Les entrées / sorties parallèles a) Fonctionnement typique d’une broche d’un port d’E/S logique
Fonction : Chaque broche du port peut être utilisée en entrée ou en sortie. Par défaut après un reset les broches des ports sont placées en entrée. Schéma de principe pour la broche 2 d’un PORTX:
Databus = bit2 de TRISX ou PORTX S3 S1 RX2 T1 S2 T2 S4

Caractéristiques électriques typiques: Chaque sortie d’un port individuellement peut fournir un courant maximum de 20mA Chaque sortie d’un port individuellement peut absorber un courant maximum de 25mA Mais le courant maximum fourni par chaque port en sortie ne peut dépasser 40 mA et le courant maximum absorbé par chaque port ne peut dépasser 50mA max. Registres associés :

TRISX: un registre de direction de 8 bits
Le sens de fonctionnement de chaque broche est déterminé par un registre de direction TRISX. • Mettre le bit 2 de TRISX à 1 aura pour effet de mettre la broche RX2 du PORTX en entrée. • Mettre le bit 2 de TRISX à 0 aura pour effet de mettre la broche RX2 du PORTX en sortie.

PORTX: un registre d’écriture ou lecture de 8 bits
Si la broche est configurée en entrée une lecture du bit 2 de PORTX donnera le niveau logique présent sur la broche RX2. Si la broche RX2 est configurée en sortie une écriture du niveau logique dans le bit 2 du PORTX fixera la niveau logique de la broche RX2.

Les microcontrôleurs PIC

pic.doc

Page 13

III. Architecture interne des PIC de la famille MID-RANGE

● ▬ ● ▬ ● ▬ ● ▬ ● ▬
 TD sur le fonctionnement typique d’une broche d’un port d’E/S logique a) Compléter le tableau ci-dessous pour étudier la configuration de la broche RX2 en entrée. On utilisera le schéma
structurel de la page précédente. Bit2 de WRTRIS S3 TRISX2 / Data bus 1 1 0 1 S1 S2 T1 (B/P) T2 (B/P) Etat de la broche RX2

b) Compléter le tableau ci-dessous pour étudier la lecture de la broche RX2 en entrée. On utilisera le schéma
structurel de la page précédente. RX2 0 1 RDPORT Bit 2 du PORTX2 0 0

c) Compléter le tableau ci-dessous pour étudier la configuration de la broche RX2 en sortie. On utilisera le schéma
structurel de la page précédente. Bit2 de TRISX / Data bus 0 0 WRTRIS S3 S1 S2 T1 (B/P) T2 (B/P) Etat de la broche RX2

0 1

d) Compléter le tableau ci-dessous pour étudier l’écriture d’un niveau logique sur la broche RX2 en sortie. On
utilisera le schéma structurel de la page précédente. Bit 2 du PORTX2 0 1 WRPORT RX2

Les microcontrôleurs PIC

pic.doc

Page 14

III. Architecture interne des PIC de la famille MID-RANGE

● ▬ ● ▬ ● ▬ ● ▬ ● ▬
b) Les Entrées/Sorties parallèles portA
Fonction : Le portA possède 6 broches E/S. Chaque broche du port peut être utilisée en entrée ou en sortie. Les broches du PORTA peuvent avoir deux fonctions en entrées : entrées analogiques, entrées logiques. Par défaut après un reset le portA est placé en entrée et s’il y a des entrées analogiques, les entrées sont positionnées en mode analogique. Schéma pour un bit du PORTA: Structure pour RA0, RA1, RA2, RA3, RA5

Structure pour RA4, qui est une sortie à drain ouvert

Registres associés :

TRISA: un registre de direction de 8 bits
Un bit de TRISA mis à 1 aura pour effet de mettre la broche correspondante du PORTA en entrée.

PORTA: un registre d’écriture ou lecture de 8 bits.
Exemple avec FLOWCODE Exemple en C: Utilisation du portA avec un 16F84
STATUS=STATUS|0x20; TRISA=0xF3; STATUS=STATUS&0xDF; PORTA=0x08; //RP0 à 1; bank1 // RA3 :RA2=Sorties //RP0 à 0; bank0 //RA3=1 ; RA2=0

Les microcontrôleurs PIC

pic.doc

Page 15

III. Architecture interne des PIC de la famille MID-RANGE

● ▬ ● ▬ ● ▬ ● ▬ ● ▬
c) Les Entrées/Sorties parallèles portB
Fonction : Le portB possède 8 broches E/S. Chaque broche du port peut être utilisée en entrée ou en sortie. Par défaut après un reset le portB est placé en entrée. Caractéristiques électriques : Toutes les broches du portB lorsqu’elles sont en entrées peuvent être reliées à VDD via une résistance de pull-up activée par programmation du bit RBPU du registre OPTION_REG.

Schéma pour un bit du PORTB:
Résistance de pull_up

Registres associés :

TRISB: un registre de direction de 8 bits
Un bit de TRISB mis à 1 aura pour effet de mettre la broche correspondante du PORTB en entrée.

PORTB: un registre d’écriture ou lecture de 8 bits
Exemple avec FLOWCODE Exemple en C: Utilisation du portA avec un 16F84
STATUS=STATUS|0x20; TRISB=0x03; STATUS=STATUS&0xDF; PB1_0 = PORTB & 0x03; //RP0 à 1; bank1 //RB0 et RB1 = Entrées //RP0 à 0; bank0 // PB1_0= Entrées RB1 et RB0

Les microcontrôleurs PIC

pic.doc

Page 16

III. Architecture interne des PIC de la famille MID-RANGE

● ▬ ● ▬ ● ▬ ● ▬ ● ▬
8. Le Convertisseur Analogique Numérique a) Présentation du C.A.N
Le PIC peut être équipé d’un C.A.N de résolution 10 bits. Ce convertisseur analogique/numérique convertit par approximations successives. Si on appelle VAIN la tension analogique en entrée à convertir alors on peut établir l’équation suivante : VAIN = (VREF+ - VREF-) (29b9+28b8+27b7+26b6+25b5+24b4+23b3+22b2+21b1+20b0) 210

Schéma :

Un échantillonneurbloqueur permet de mémoriser la tension analogique à convertir pendant la conversion.
A D R E S H

Un multiplexeur à 8 entrées maximum permet de sélectionner l’entrée analogique ANx à convertir.

VAIN (Input Voltage)

A D R E S L

La référence de tension peut être interne (VDD, 0V) ou externe sur la broche AN3 (Vref+) et AN2 (Vref-).

Les microcontrôleurs PIC

pic.doc

Page 17

III. Architecture interne des PIC de la famille MID-RANGE

● ▬ ● ▬ ● ▬ ● ▬ ● ▬
b) Mise en œuvre du CAN

Etape 1 : Initialisation du convertisseur
Action
1) Sélectionner des broches d’entrées qui seront analogiques. Les lignes d’entrée analogiques du convertisseur sont partagées avec les lignes d’un port parallèle. Ces broches doivent être configurées en entrées lorsqu’elles sont utilisées pour la conversion.

Registre ADCON1

Détails du registre

2) Sélectionner le type de justification à droite ou à gauche pour le résultat de conversion. ADFM=1 pour justifier à droite le résultat de la conversion. ADFM=0 pour justifier à gauche le résultat de la conversion. 3) Sélectionner la vitesse de conversion en fonction de l’horloge du PIC. TAD définit le temps pour la conversion. Il faut respecter un minimum de 1,6 µs pour la conversion 4) Sélectionner la voie à convertir.

ADCON1

ADCON0

Pour un quartz de 4 MHz

ADCON0

5) Activer le C.A.N. ADON=1

ADCON0

6) Faire une pause pour charger la capacité de l’échantillonneur pendant une durée t > 16,5µs.

Les microcontrôleurs PIC

pic.doc

Page 18

III. Architecture interne des PIC de la famille MID-RANGE

● ▬ ● ▬ ● ▬ ● ▬ ● ▬
Etape 2 :Lancement de la conversion
Action
7) Lancer la conversion. GO/DONE=1 8) Attendre la fin de la conversion. Lorsque la conversion est finie le bit G0/DONE passe à 0.

Registre Détails du registre associé ADCON0 ADCON0
Lire GO/DONE Boucle Boucle Tant que (GO/DONE=1)

Il faut attendre 2 TAD entre deux conversions successives, le temps que se charge la capacité de l’échantillonneur.

Etape 3 :Lire le résultat de la conversion
Action
9) Lire le poids faible du résultat de la conversion. 10) Lire le poids fort du résultat de la conversion.

Registre Détails du registre associé ADRESL ADRESH

 TD sur la mise en œuvre du CAN
a) Rédiger les commentaires du programme C en précisant le rôle des instructions. Exemple avec FLOWCODE Exemple en C: conversion A/N sur la broche ……….. pour le 16F876 avec un quartz 3,2768 MH
1) Choix de la voie à convertir ADCON1=0x84; //......................................................................................................... STATUS=STATUS&0xDF; //RP0 à 0; bank0

ADCON0 = 0x81 ; //......................................................................................................... cnt =0; while (cnt <200) cnt++; // on charge la capa pdt TCmin >16,5µs finconv= ADCON0 & 0x04 ; //............................................................................. while ( finconv !=0 ) //............................................................................. { finconv= ADCON0 & 0x04 ; } STATUS=STATUS|0x20; // RP0 à 1; bank1 ADCON1 = 0x07; // Porta en E/S logique STATUS=STATUS|0x20; // RP0 à 1; bank1 resultat_l=ADRESL; //................................................................................................ STATUS=STATUS&0xDF; //RP0 à 0; bank0 resultat_h=ADRESH;//................................................................................................

2) Lancer la conversion

3) Lire le résultat de la conversion

Les microcontrôleurs PIC

pic.doc

Page 19

III. Architecture interne des PIC de la famille MID-RANGE

● ▬ ● ▬ ● ▬ ● ▬ ● ▬
9. La liaison série asynchrone a) Présentation de la liaison série asynchrone
Il s’agit de connecter le microcontrôleur à un équipement informatique (terminal, PC,….).
RX_232 +12V, -12V TX_232 +12V, -12V

Adaptation de niveaux
RX_232 TX_232 RX TX

0V, 5V 0V, 5V RX TX

PIC

Les bits sont émis depuis la broche TX et reçus avec la broche RX en série et de façon asynchrone. Il n’y a donc pas d’horloge de synchronisation. Pour commencer l’envoi de bit en série, on envoie un bit de START et pour clôturer cet envoi la transmission s’achève avec un caractère de STOP selon la trame suivante :

1 Bit de START

8 Bits de DONNEES

1 Bit de STOP

Le périphérique qui s’occupe de la transmission série s’appelle l’UART (Universal Asynchronous Receiver Transmitter) et dans le PIC ses caractéristiques sont les suivantes : • fonctionnement en full duplex (dans le sens émission et réception à la fois). • vitesse de transmission programmable. • 8 ou 9 bits de données • un bit de start et un bit de stop Schéma de l’émetteur simplifié sur 8 bits :
Test de registre d’émission vide Si le bit TXIF=1 le registre TXREG est vide

Ecriture de la donnée à transmettre Registre de transmission 8 bits parallèle

Autorisation d’émettre Si le bit TXEN=1 l’émission est possible

Utilisation de cette broche pour la liaison série Sélection de la vitesse de transmission

Conversion parallèle →série Registre à décalage d’émission non accessible directement en écriture.

Les microcontrôleurs PIC

pic.doc

Page 20

III. Architecture interne des PIC de la famille MID-RANGE

● ▬ ● ▬ ● ▬ ● ▬ ● ▬
Schéma du récepteur simplifié sur 8 bits :
Sélection de la vitesse de transmission Autorisation de recevoir Si le bit CREN=1 la réception est possible Erreur de débordement en réception Les données arrivent trop rapidement et ne peuvent pas être lues sans perte.

Conversion série → parallèle Registre à décalage de réception non accessible directement en lecture. Utilisation de cette broche pour la liaison série

Test de registre de réception plein Si le bit RCIF=1 le registre RCREG est plein

Lecture de la donnée à recevoir Registre de réception 8 bits parallèle

b) Mise en œuvre de la liaison série

Etape 1 : Initialisation de la liaison série
Action
1) Sélectionner la vitesse de communication en bauds (bit/s) de la liaison série.

Registres TXSTA

Détails du registre
A partir d’une vitesse (Baud Rate) définie et deux formules au choix, il va s’agir d’en déduire un réel X. Le registre SPBRG contiendra la partie entière du réel X. On limitera les erreurs d’arrondi entre X et SPBRG pour être le plus proche de la vitesse (Baud Rate) définie à l’origine et donc éviter au maximum les erreurs de transmissions. Si BRGH=0, sélection de la formule avec division par 64.
Baud Rate= Fosc / (64(X+1)) avec X le réel à calculer et SPBRG = partie entière de X.

SPBRG

Si BRGH=1, sélection de la formule avec division par 16.
Baud Rate= Fosc / (16(X+1)) avec X le réel à calculer et SPBRG = partie entière de X.

2) Sélectionner le mode liaison série ASYNCHRONE bit SYNC=0

TXSTA

Les microcontrôleurs PIC

pic.doc

Page 21

III. Architecture interne des PIC de la famille MID-RANGE

● ▬ ● ▬ ● ▬ ● ▬ ● ▬
Etape 1 : Initialisation de la liaison série (suite)
3) Connection des broches E/S à l’UART ASYNCHRONE bit SPEN=1 4) Activation de l’émission bit TXEN=1 5) Activation de la réception bit CREN=1

RCSTA

TXSTA

RCSTA

Etape 2.a :Emission de l’octet
Action Détails du registre
6) Attendre que l’octet soit émis et donc que le tampon d’émission TXREG soit vide. Lorsque le tampon d’émission est vide.TXIF passe à 1.

Registre PIR1
--RCIFTXIF----

Lire TXIF Boucle Tant que (TXIF=0) Lire TXIF Boucle

7) Stocker l’octet à émettre dans le registre TXREGTXREGTXREG ←

octet à émettre

Les microcontrôleurs PIC

pic.doc

Page 22

III. Architecture interne des PIC de la famille MID-RANGE

● ▬ ● ▬ ● ▬ ● ▬ ● ▬
Etape 2.b :lecture de l’octet reçu
Action
8) Vérifier s’il n’y a pas une erreur de débordement au niveau du tampon de réception tampon. Les octets reçus ne sont pas lus assez rapidement du registre RCREG et la réception se bloque. Si OERR=1 il y a une erreur de débordement et le bit CREN doit être mis à 0 puis remis à 1

Registre RCSTA

Détails du registre

OERR=1 ?

oui
CREN=0

non

CREN=1

9) Attendre que l’octet soit reçu et donc que le tampon de réception RCREG soit plein. Lorsque le tampon d’émission est plein RCIF passe à 1.

PIR1
RCIF TXIF -

Lire RCIF Boucle Tant que (RCIF=0) Lire RCIF Boucle

10) Réceptionner l’octet à recevoir depuis le registre RCREG

RCREG

octet à recevoir ← RCREG

Les microcontrôleurs PIC

pic.doc

Page 23

III. Architecture interne des PIC de la famille MID-RANGE

● ▬ ● ▬ ● ▬ ● ▬ ● ▬
 TD sur la mise en œuvre de la liaison série asynchrone full duplex à …………bauds, 8 bits de données et un bit de stop sur les broches RC6/TX et RC7/RX pour le 16F870 avec un quartz 4 MHz. a) Rédiger les commentaires du programme C en précisant le rôle des instructions.
Exemple en C: conversion A/N sur la broche ……….. pour le 16F876 avec un quartz 3,2768 MH
char tamp_em; char tamp_rec; char over; int compt=0; //************************INITIALISATION DE LA LIAISON SERIE STATUS=STATUS|0x20; //RP0 à 1; bank1 SPBRG=25; // vitesse= ………………bauds TXSTA=TXSTA | 0x04; // formule de calcul utilisée : ……………………………………………………………. TXSTA=TXSTA & 0xEF; //mise à 0 de SYNC (mode asynchrone) STATUS=STATUS&0xDF; //RP0 à 0; bank0 RCSTA=RCSTA | 0x80; //……………………………………………………………. STATUS=STATUS|0x20; //RP0 à 1; bank1 TXSTA=TXSTA | 0x20; //……………………………………………………………. STATUS=STATUS&0xDF; //RP0 à 0; bank0 RCSTA=RCSTA | 0x10; //……………………………………………………………. //************************EMISSION STATUS=STATUS&0xDF; //RP0 à 0; bank0 tamp_em=PIR1 & 0x10 ; while (tamp_em == 0) //……………………………………………………………. //……………………………………………………………. //…………………………………………………………….

{ tamp_em=PIR1 & 0x10 ; }

TXREG=FCV_CAR_EM; //……………………………………………………………. //************************RECEPTION over=RCSTA&0x02; //……………………………………………………………. if (over==0x02) { RCSTA=RCSTA&0xEF; //……………………………………………………………. RCSTA=RCSTA | 0x10; //……………………………………………………………. } tamp_rec=PIR1 & 0x20; //……………………………………………………………. while (tamp_rec==0) //……………………………………………………………. { tamp_rec=PIR1 & 0x20; //……………………………………………………………. } FCV_CAR_REC=RCREG; //…………………………………………………………….

Les microcontrôleurs PIC

pic.doc

Page 24

IV. La programmation ICSP des PIC

● ▬ ● ▬ ● ▬ ● ▬ ● ▬
2. Principe de programmation in situ ou ICSP (In-Circuit Serial Programming)
La programmation en circuit ICSP permet de programmer un microcontrôleur PIC in situ dans son application industrielle par une liaison série synchrone.

Le PC

Le programmateur (ici en mode programmation)
Cde aiguillage D4/PROG D1/CLK +13,5V +5V

L’application avec le PIC

Connecteur ICSP

PIC
/MCLR RB6/CLK

D0/DATA

Port parallèle

RB7/DATA Aiguillage Actionneur ou capteur de l’application reliés à RB6 et RB7 hors mode programmation

Sur le PC est stocké le fichier xxx.hex qui contient le programme à transférer. Ce programme est envoyé bit par bit en série sur la ligne D0/DATA du port parallèle du PC.

Le programmateur a pour rôle d’aiguiller les informations selon deux modes : programmation et hors programmation du PIC. La broche D4/PROG permet de mettre le PIC en mode programmation.

La mémoire programme du PIC est programmée sans que le PIC ne soit déplacé de son support, c’est de la programmation in situ. Le principe de programmation est très simple et nécessite 3 broches sur le PIC : /MCLR=13,5V pour mettre le PIC en mode programmation. RB7 pour recevoir les données synchrone RB6 pour l’horloge synchrone avec les données. Hors mode de programmation RB6 et RB7 sont disponibles comme E/S pour l’application et /MCLR est disponible pour faire un RESET du PIC.

 TD sur le principe de programmation in situ
a) Indiquer la particularité de la programmation ICSP. b) Préciser les deux rôles de la broche RB6. c) Préciser les deux rôles de la broche RB7. d) Préciser les deux rôles de la broche /MCLR. e) Noter les trois tensions que l’on peut appliquer sur la broche /MCLR.

Les microcontrôleurs PIC

pic.doc

Page 25

LES MICROCONTROLEURS PIC

IV) La programmation ICSP des PIC
2. Le programmateur – a) Schéma structurel

FPA ALIMENTATION +13,5V et +5V

Connecteur ICSP
Vers l’application et son PIC

FP1 Elaboration de /MCLR
Il existe de nombreux programmateurs sur le marché. Il est possible pour programmer les PIC d’utiliser sur le PC la liaison série RS232, USB ou la liaison parallèle. Ce programmateur utilise la liaison parallèle côté PC et le cordon ICSP côté PIC pour le programmer. Il est compatible avec le logiciel de téléchargement PPP.exe qui est fourni avec FLOWCODE.

FP2 Aiguillage
.
cri pic.doc Page 26

IV. La programmation ICSP des PIC

● ▬ ● ▬ ● ▬ ● ▬ ● ▬
b) Analyse fonctionnelle du programmateur FONCTION FP1 : Elaboration du signal /MCLR Rôle : Elaborer une tension pour : réinitialiser le PIC /MCLR=0V,
mettre le PIC en fonctionnement normal /MCLR=+5V mettre le PIC en mode programmation /MCLR=+13,5V

Entrées :
D3/RESET : Signal logique au niveau logique « 1 » pour générer un reset. D4/PROG : Signal logique au niveau logique « 1 » pour faire passer le PIC en mode programmation et au niveau logique « 0 » pour mettre le PIC en fonctionnement normal.

Sorties :
/MCLR : différence de potentiel valant 0V ou 5Vou +13,5V. BUSY : Signal logique au niveau logique « 1 » quand le PIC est en cours de programmation et « 0 » sinon.

FONCTION FP2 : Aiguillage Rôle : Aiguiller les informations sur les broches RB6 et RB7 du PIC selon les deux modes de fonctionnement :
programmation et hors programmation du PIC..

Entrées :
BUSY : Signal logique au niveau logique « 1 » quand le PIC est en cours de programmation et « 0 » sinon. D1/CLK: Signal logique pour générer une horloge. D0/DATA: Signal logique pour écrire les données en série dans la mémoire programme du microcontrôleur.

Sorties :
/MCLR : différence de potentiel valant 0V ou 5Vou +13,5V. ACK/LECT : Signal logique pour LIRE/VERIFIER les données dans la mémoire programme du microcontrôleur.

Entrees/Sorties :
RB6 : Différence de potentiel connecté via le connecteur ICSP à l’application (ex : capteur, actionneur, …) RB7 : Différence de potentiel connecté via le connecteur ICSP à l’application (ex : capteur, actionneur, …) CLOCK/RB6 : Différence de potentiel connecté via le connecteur ICSP à la bit n°6 du PORTB du PIC DATA/RB7: Différence de potentiel connecté via le connecteur ICSP à la bit n°7 du PORTB du PIC

 TD sur le programmateur
a) Compléter le tableau suivant relatif à la fonction FP1 « Elaboration du signal /MCLR ». D4/PROG D3/RESET /MCLR BUSY Mode de fonctionnement du PIC

0 0 1 1

0 1 0 1

b) Compléter le tableau suivant relatif à la fonction FP2 « Aiguillage ». BUSY D1/CLK D0/DATA RB6 RB7 CLOCK/RB6 DATA/RB7 ACK/LECT

0 1

X6 X6

X7 X7

X6 et X7 sont des signaux logiques pouvant valoir « 0 » ou « 1 » .

cri

pic.doc

Page 27

LES MICROCONTROLEURS PIC
Connecteur ICSP

IV) La programmation ICSP des PIC
Adaptation de niveaux pour la liaison série (+5V, 0V) → (-12V,+12V)

3.a La carte d’expérimentation « ELECTROPIC » : schéma structurel

12 LEDS

D0 à D11
4 générateurs de tension variables (0,+5V)

1 2 3 4 6 7 8 9

RA2 RA3 RA4 RA5/MCLR RB0 RB1 RB2 RB3

IC0

18 RA1 17 RA0 16 OSC1/RA7 15 OSC2/RA6 RB7 RB6 RB5 RB4 13 12 11 10

JP1

1 2 3 4 5 6 7 9 10

MCLR RA0 RA1 RA2 RA3 RA4 RA5

IC1

OSC1/CLKI OSC2/CLKO RC0 RC1 RC2 RC3

RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0

28 27 26 25 24 23 22 21

P0 à P3

11 12 13 14

RC7 RC6 RC5 RC4

18 17 16 15

Horloge à quartz

JP2

S0 à S4

BP0 à BP4

1 2 3 4 5 6 7

MCLR RA0 RA1 RA2 RA3 RA4 RA5

IC2

JP0
Résistance de pull-up pour RA4

8 RE0 9 RE1 10 RE2 13 14 OSC1/CLKI OSC2/CLKOUT 15 16 17 18 23 24 25 26 RC0 RC1 RC2 RC3 RC4 RC5 RC6 RC7

RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0

40 39 38 37 36 35 34 33

RD7 RD6 RD5 RD4 RD3 RD2 RD1 RD0

30 29 28 27 22 21 20 19

Un seul PIC à la fois doit être inséré sur un des supports. Le PORTA et PORTB sur les 3 supports de PIC sont reliés. Le PORTC sur 2 supports de PIC (28 et 40 broches) sont reliés.

BP RESET

cri

5 boutons poussoirs et 5 interrupteurs bistables

pic.doc

Page 28

LES MICROCONTROLEURS PIC

IV) La programmation ICSP des PIC

3.b La carte d’expérimentation « ELECTROPIC » : schéma d’implantation

19 17 JP1 +5V 18

15 13

11 9

7 5

3 J1 JP2 +5V 25

23

19 15 11 9 21 17 13

7 5

3 J2

14 16 12 D8

10 8 D7

6 4

2 24 D6 D5

22 20 D4

18 16 D3

14 12 D2

10 8 D1

6 4 D0

2

D10

D9

CARTE PROGRAMMATEUR
1

RD0 RD1 RD2 RD3 RD4 RD5 RD6 RD7

RE2 RE1 RE0

RA5RA4RA3RA2RA1RA0 Horloge JP0 RA4

conn. ICSP +5V P0

IC2

IC1

IC0

RC7RC6RC5RC4RC3RC2RC1RC0

RB7RB6RB5RB4RB3RB2RB1RB0

P1 BP RESET ELECTRO_PIC P2 Lycée VAUBAN BREST P3 krt_elv143 RX TX

GND J0

RX- TX232 232

BP4
cri

BP3

BP2

BP1
pic.doc

BP0

S4

S3

S2
Page 29

S1

S0

Sponsor Documents

Or use your account on DocShare.tips

Hide

Forgot your password?

Or register your new account on DocShare.tips

Hide

Lost your password? Please enter your email address. You will receive a link to create a new password.

Back to log-in

Close