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
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.
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) //……………………………………………………………. //……………………………………………………………. //…………………………………………………………….
● ▬ ● ▬ ● ▬ ● ▬ ● ▬
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)
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