Présentation de la gamme «Mid-range» des microcontrôleurs PIC

Documents pareils
PIC : COURS ASSEMBLEUR

PIC 16F84. Philippe Hoppenot

MICROCONTROLEURS PIC PROGRAMMATION EN C. V. Chollet - cours-pic-13b - 09/12/2012 Page 1 sur 44

Cours Informatique 1. Monsieur SADOUNI Salheddine

PIC EVAL Dev Board PIC18F97J60

Informatique Industrielle

Chapitre 4 : Les mémoires

Assembleur. Faculté I&C, André Maurer, Claude Petitpierre

Introduction à l architecture des ordinateurs. Adrien Lebre Décembre 2007

ELP 304 : Électronique Numérique. Cours 1 Introduction

Programmation en langage C d un µcontrôleur PIC à l aide du compilateur C-CCS Sommaire

ASR1 TD7 : Un microprocesseur RISC 16 bits

1 Architecture du cœur ARM Cortex M3. Le cœur ARM Cortex M3 sera présenté en classe à partir des éléments suivants :

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Conférence sur les microcontroleurs.

Contraintes, particularités. 1. Généralités Gestion de la mémoire a. Type des variables et constantes... 2

Ordinateurs, Structure et Applications

Conception de circuits numériques et architecture des ordinateurs

Architecture des ordinateurs

Leçon 1 : Les principaux composants d un ordinateur

Structure de base d un ordinateur

Rappels d architecture

Hiérarchie matériel dans le monde informatique. Architecture d ordinateur : introduction. Hiérarchie matériel dans le monde informatique

DU BINAIRE AU MICROPROCESSEUR - D ANGELIS CIRCUITS CONFIGURABLES NOTION DE PROGRAMMATION

Diagrammes de Package, de déploiement et de composants UML

1. PRESENTATION DU PROJET

Transmissions série et parallèle

Conception de circuits numériques et architecture des ordinateurs

La programmation des PIC en C. Les fonctions, les interruptions.

Flowcode - Mode d'emploi

Equipement. électronique

ARCEAU DE PARKING MOTORISÉ VIGIPARK

Informatique Industrielle Année Architecture des ordinateurs Note de cours T.Dumartin

On distingue deux grandes catégories de mémoires : mémoire centrale (appelée également mémoire interne)

PROGRAMMATION D'UN MICROCONTRÔLEUR

TD Architecture des ordinateurs. Jean-Luc Dekeyser

MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C

Mémoire de l'imprimante

Architecture des Ordinateurs. Partie II:

Prototypage électronique

Document de formation pour une solution complète d automatisation Totally Integrated Automation (T I A) MODULE A5 Programmation de la CPU 314C-2DP

! analyse du fonctionnement

THEME 1 : L ORDINATEUR ET SON ENVIRONNEMENT. Objectifs

Sur un ordinateur portable ou un All-in-One tactile, la plupart des éléments mentionnés précédemment sont regroupés. 10) 11)

Architecture des ordinateurs Introduction à l informatique

Codage d information. Codage d information : -Définition-

La mémoire. Un ordinateur. L'octet. Le bit

Architecture matérielle des systèmes informatiques

Comme chaque ligne de cache a 1024 bits. Le nombre de lignes de cache contenu dans chaque ensemble est:

Programmation C. Apprendre à développer des programmes simples dans le langage C

TABLE DES MATIÈRES 1. DÉMARRER ISIS 2 2. SAISIE D UN SCHÉMA 3 & ' " ( ) '*+ ", ##) # " -. /0 " 1 2 " 3. SIMULATION 7 " - 4.

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

Matériel & Logiciels (Hardware & Software)

Robot WIFIBOT Lab V3. 4 roues motrices

Proteus VSM. manuel_vsm.doc

Variateurs de vitesse

Séverine Marien Maxime Ringard. 2 ème année GEII. Régulateur de charge pour station de recharge photovoltaïque

Jeu d instructions NIOS II

LISA. Manuel Utilisateur

QUESTION 1 {2 points}

Mise en place d une plateforme de télécommande des équipements électrique à distance «Smart House»

Représentation des Nombres

Chapitre V : La gestion de la mémoire. Hiérarchie de mémoires Objectifs Méthodes d'allocation Simulation de mémoire virtuelle Le mapping

Information. BASES LITTERAIRES Etre capable de répondre à une question du type «la valeur trouvée respecte t-elle le cahier des charges?

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

MODE D EMPLOI DU LOGICIEL LIGNES DE TEMPS A partir du film La Mort aux trousses d Alfred Hitchcock

Informatique Générale

MultiMedia Board. Système de développement. Manuel utilisateur. pour PIC32MX4

CM2 L architecture MIPS32

Robot WIFIBOT Lab V4. Lab V4.

Procédure appropriée pour éditer les diagrammes avec ECM Titanium

Tests de performance du matériel

2013 Nos nouveaux outils basés sur Arduino

Exécution des instructions machine

La conversion de données : Convertisseur Analogique Numérique (CAN) Convertisseur Numérique Analogique (CNA)

Etudier l influence de différents paramètres sur un phénomène physique Communiquer et argumenter en utilisant un vocabulaire scientifique adapté

Licence Sciences et Technologies Examen janvier 2010

Partie 1. Professeur : Haouati Abdelali. CPGE Lycée Omar Ibn Lkhattab - Meknès haouaticpge@gmail.com

AMICUS 18 (2ème partie) 4) Présentation du logiciel Amicus IDE

Configuration de TCPIPconfig.h

ENREGISTREUR DE TEMPERATURE

Electron MECATRONIQUE. S.r.l. Educational Equipment Design, Production & Trading. Member of I.D.E.A. International Didactic Equipment Association

IMMS-CELL-GSM. Kit de Communication Cellulaire IMMS-CELL- [GSM, ou GSM-E] Instructions d installation

Premiers pas sur l ordinateur Support d initiation

IV- Comment fonctionne un ordinateur?

Multichronomètre SA10 Présentation générale

CQP 112 Introduc/on à la programma/on. Thème 2 : Architecture d un système informa/que. Département d informa/que

La carte à puce. Jean-Philippe Babau

Organisation des Ordinateurs

CONFIGURATION DE L AUTOMATE SIEMENS

CH.3 SYSTÈMES D'EXPLOITATION

Architecture des Ordinateurs Première partie. Licence d Informatique - IUP Miage - FIIFO

Sélection du contrôleur

Les liaisons SPI et I2C

Microprocesseur + Logiciel

I00 Éléments d architecture

Tout savoir sur le matériel informatique

TER Licence 3 Electronique des Télécoms Transmission GSM

Système de sauvegarde amovile pour Disques Durs SATA à 2,5

Transcription:

Présentation de la gamme «Mid-range» des microcontrôleurs PIC La société Microchip propose une large gamme de microcontrôleurs, appelés PIC ; ils peuvent être répartis en plusieurs familles différenciées par la largeur respective de leur bus : - Base-line avec des mots d instruction de 12 bits (gamme 12FXX), données de 8 bits; - Mid-range, avec des mots d instruction de 14 bits (gamme 16FXX comme le 16F84 et le 16F877), données de 8 bits ; - End-range avec des mots d instructions de 16 bits (gamme 18FXXX), données de 8 bits ; - Les PIC 16 bits de données (gamme PIC24 et dspic) ; - Les PIC 32 bits de données (gamme PIC32). Le succès de cette famille microcontrôleurs est en partie dû à la diversité des composants proposés, allant d un petit microcontrôleur dans un boîtier DIL 6 broches à un composant dédié au traitement du signal (dspic) avec 40 broches. A titre d exemple, voici deux composants classiques de la gamme Mid-range : PIC16F84 ; - 1 Ko de ROM, - 68 octets de RAM, - 64 octets de ROM, - 13 entrées sorties, - 10 MHz, - un timer, - 4 sources d interruption PIC16F877A : - 14,3 Ko de ROM, - 368 octets de RAM, - 256 octets d EEPROM, - 33 entrées sorties, un CAN, - 20 MHz - 3 timers, - 15 sources d interruptions - une USART, - un MSSP, - 2 comparateurs, - 2 modules comparateur et PWM IUFM Aix Marseille programmation des microcontrôleurs PIC 1/14

On trouvera d autre part une littérature abondante et de nombreux exemples d applications sur le site du constructeur : http://www.microchip.com/ Malgré leur diversité, ils présentent de nombreuses caractéristiques communes, qui rendent assez aisé le passage d un composant à l autre. Nous nous intéresserons ici plus particulièrement à la gamme «Mid-range». 1 Architecture de base Ces microcontrôleurs sont construits autour d une architecture de type «Harvard» où bus de données (pour la «mémoire vive» ou «mémoire de données») et bus d instructions (pour la «mémoire morte» ou «mémoire programme») sont séparés. Cette solution permet d avoir un bus d avoir un nombre de bit plus important sur le bus d instruction 14 pour la gamme «mid-range»- que sur le bus de données 8 pour la gamme «mid-range». programmation des microcontrôleurs PIC 2/14

2 Structure en Pipe Line et séquencement Mis à part les sauts, toutes les instructions du programme peuvent alors être codées sur un seul mot - instruction proprement dite et opérande- ce qui rend l accès aux instructions possible en un cycle machine. La structure en Pipe Line permet alors d exécuter une instruction sur un cycle machine soit 4 coups d horloge-. 3 Processeur RISC et structure orthogonale Ces processeurs disposent d un jeu d instruction réduit (RISC : Reduced Instructions Set Computer) : 35 pour les gammes «Base line» et «Mid-range», 58 ou 77 en «High end». Toutes les instructions s exécutent dans tous les registres et modes d adressage, comme on peut le voir sur la figure suivante, où les instructions sortant de l unité arithmétique et logique (ALU) sont orientées vers le registre de travail W, ou vers la zone «RAM et Registre à fonction spéciales SFR-). programmation des microcontrôleurs PIC 3/14

La programmation est alors facilitée, on parle de structure orthogonale. 4 Organisation générale Sur la figure suivante représentant l organisation générale du contrôleur (ici un PIC16F877A), on peut constater la séparation des deux bus, instructions à gauche, données, registres et périphériques à droite. programmation des microcontrôleurs PIC 4/14

5 La mémoire programme La mémoire programme est constituée de 8 K mots (dans le cas d un 16F877A) de 14 bits en EEPROM flash (si lettre F dans la référence). On peut lire en effet sur la figure suivante que le plan mémoire va de 0000h à 1FFFh. Le constructeur donne généralement la taille de la mémoire en K octets, ce qui donne donc 14 K octets si on considère qu un kilo octets fait 1000 octets et 14,3 K octets si on considère qu un kilo octets fait 1024 octets. On notera que : - la remise à 0 du µc remet le programme à l adresse 0000h ; - le vecteur d interruption à l adresse 0004h ; - la pile, hors du plan mémoire accessible au programmateur ; - l adressage de la mémoire par le compteur programme, constitué de 13 bits, - le découpage du plan mémoire en pages (ici 4 dans le cas d un 16F877A) de 2 Ko ; 6 La mémoire données et registres à fonctions spéciales (SFR) Dans le cas d un 16F877A, cette mémoire comprend les différents registres (SFR), ainsi que 368 octets de 8 bits (soit 368 bytes) de RAM statique (SRAM). On notera : - le découpage de la mémoire en banques (attention à ne pas confondre avec les pages de la mémoire programme) ; dans le cas du 16F877A, on trouve 4 banques de 128 emplacements de 8 bits, soit au total 512 octets ; programmation des microcontrôleurs PIC 5/14

- l accès possible à certains registres, comme PCL et STATUS dans toutes les banques ; - la non nécessité d un rafraîchissement de la mémoire SRAM (contrairement à la RAM dynamique ou DRAM) qui n impose donc aucune fréquence minimale à l horloge. Les PIC disposent également de mémoire données EEPROM, non localisée dans le plan mémoire précédent, mais adressable indirectement via certains registres. programmation des microcontrôleurs PIC 6/14

7 Le jeu d instructions Comme nous l avons vu, il s agit d un jeu réduit à 35 instructions codées sur 14 bits (la mémoire programme est constitué de mots de 14 bits). Elles sont exécutées en un cycle machine, soit quatre périodes du quartz, excepté les instructions de saut qui durent deux cycles machine. On distingue 4 types d instructions : 7.1.1 Instructions générales Manipulent les données : - 6 bits pour l instruction ; - 8 bits d adressage littéral. ex ADDLW k (W) + k ----> (W) additionne le contenu du registre W avec k et place le résultat dans W 7.1.2 Instructions orientées bit Manipule 1 bit dans un registre (ou un emplacement RAM) : - 4 bits pour l instruction ; - 3 bit de numéro de bit au sein du registre (8 bits possibles); - 7 bits pour l opérande (adresse du registre ou de l emplacement RAM) ; ex BCF f, b ; met à 0 le bit b du registre f Si on prend l exemple du 16F877A qui comprend 4 banques de128 octets de RAM (soit 512 octets), il manque donc 2 bits pour adresser l ensemble du plan mémoire RAM ; les 7 bits de l opérande seront donc complétés par les 2 bits, RP0 et RP1 du registre STATUS. Ceux-ci seront donc positionnés correctement avant de pouvoir accéder à la banque où est situé le registre adressé. programmation des microcontrôleurs PIC 7/14

7.1.3 Instruction orientées octets Effectue des opérations au sein des registres : - 6 bits pour l instruction ; - 1 bit de destination ; - 7 bits pour l opérande ; ex ADDLWF F,d (W) + (F)----> (W) ou (F) suivant la valeur de d (1 ou 0) Additionne le contenu de W et le contenu du registre F et place le résultat dans W (d=0 ou d=w) ou dans le registre F (d=1 ou d=f) ; dans le premier cas, le contenu de F n a pas changé. La valeur de «d» est 1 par défaut ; si elle n est pas précisée, le résultat de l opération sera donc envoyé dans le registre F Si on prend l exemple du 16F877A qui comprend 4 banques de128 octets de RAM (soit 512 octets), il manque de nouveau 2 bits pour adresser l ensemble du plan mémoire RAM ; les 7 bits de l opérande seront une fois encore complétés par les 2 bits, RP0 et RP1 du registre STATUS. 7.1.4 Sauts et appels de sous routines 7.1.4.1 Les sauts Un saut dans le programme modifie la valeur du «compteur programme» PC pour sauter à l adresse correspondant à l étiquette (l adresse pointée par l instruction «GOTO»). 7.1.4.2 Les appels de sous routines Un appel de sous programme permet d exécuter des lignes de programmes qui risquent d être nécessaire plusieurs fois dans le programme principal (une temporisation par exemple), sans avoir à surcharger la mémoire programme plusieurs fois avec des lignes identiques. Le sous programme est appelé par un «CALL», la sortie du sous programme se faisant par un «RETURN» ou «RETLW k» (cette dernière instruction retourne l octet k dans le registre W). De nombreuses erreurs sont dues à une opération effectuée dans la mauvaise banque, il est donc conseillé de faire en sorte de se placer systématiquement dans une banque (0 par exemple) lors de l appel d un sous programme, et de se replacer dans cette même banque juste avant le retour au programme principal. Attention de ne pas confondre «sous programme» et «macro», cette dernière allégeant l écriture du programme mais pas la place occupée en mémoire programme. La macro diminue le temps d exécution en évitant l appel et le retour du sous programme (instruction en deux cycles). 7.1.4.3 instructions Les instructions de sauts et appels de sous programmes sont constituées de : - 3 bits pour l instruction ; - 11 bits de destination ; ex GOTO etiquette effectue un saut à la ligne repérée «etiquette» Les 11 bits de destination doivent pouvoir pointer n importe quel emplacement dans la mémoire programme qui comprend dans le cas d un 16F877A quatre pages de 2 Ko, ce qui fait 8 Ko ; il manque donc 2 bits pour adresser l ensemble de la mémoire programme (le compteur programme est un compteur 13 bits). Les 11 bits de destination seront complétés par les bits 4 et 3 du registre PCLATH qu il faudra donc positionner avant le saut (nous allons voir que le compteur programme est composé de l association d un registre 8 bits, PCL, et 5 bits du registre PCLATH). programmation des microcontrôleurs PIC 8/14

8 L adressage 8.1.1 Adressage littéral La valeur littérale est directement placée dans le registre W qui est le seul concerné par ce type d adressage : MVLW 0x55 55---->w (il faut lire «la valeur 55, exprimée en hexadécimal, est placée dans W») 8.1.2 Adressage direct Le contenu d un registre est modifié et/ou placé dans un autre MOVF 0x10,w (0x10)---->W (il faut lire «le contenu du registre d adresse hexadécimal 10 est placé dans le registre W») Remarque : l instruction s écrit «MOVF, f,d», «f» représentant l adresse du registre source et «d» la direction du résultat ; si d=0, (on peut aussi écrire w), le résultat est mis dans W, si d=1 (on peut aussi écrire f), le résultat est placé dans le registre de départ. ce type d instructions, sur 14 bits, comprend : - 6 bits pour l instruction ; - 1 bit de destination ; - 7 bits pour l opérande ; Comme nous l avons vu, il manque donc 2 bits pour adresser l ensemble du plan mémoire RAM dans le cas d un PIC16F877 ; les 7 bits de l opérande seront donc complétés par les 2 bits, RP0 et RP1 du registre STATUS. Le choix d une banque se fait par «BCF» ou «BSF» STATUS RPx (mise à 0 ou à 1 du bit RPx du registre STATUS). Comparaison des deux modes d adressage : comparer «MOVLW, k» et «MOVWF, f», comparer «ADDLW» et «ADDWF, f d», comparer «ANDLW, k» et «ANDWF, f d». 8.1.3 Adressage indirect L adresse souhaitée est placée dans le registre FSR (registre 8 bits dans les 4 banques du PIC16F877A) et lue dans le registre IND (registre 8 bits dans les 4 banques du PIC16F877A). Exemples : MOVWF FSR ; le contenu de W (qui contient l adresse à pointer) est mis dans FSR MOVF INDF, W, le contenu de l adresse pointée par IND (donc mise dans FSR) est mis dans W. Dans le cas d un PIC16F877A, il manque donc un bit au registre FSR pour adresser les 4 banques de 128 emplacements ; c est le bit IRP du registre STATUS qui donnera le poids fort de l adresse. programmation des microcontrôleurs PIC 9/14

9 Les registres importants 9.1.1 Registre W C est le registre de travail. Il ne se trouve pas dans le plan mémoire SFR, il est directement accessible par adressage littéral. 9.1.2 Registre PC et PCLATH Le compteur programme PC est constitué de 13 bits sur les PIC de la gamme «Mid range», ce qui est suffisant pour adresser les 4 pages de 2 Ko de mémoire programme (soit 8 K mots de 14 bits en tout) dans le cas d un PIC16F877, et d une manière générale tous les composants de cette gamme. Les 8 bits de poids faible sont accessibles dans les 4 banques par le registre PCL, et les 5 bits de poids fort correspondent aux 5 bits de poids faible de PCLATCH, un registre accessible dans les 4 banques. La figure suivante montre comment s effectue l écriture dans PC lors d une instruction : - où le registre PCL est la destination ( exemple ADDWF PCL,1), sur la figure du haut ; - dans le cas d un saut par les instructions CALL ou GOTO sur la figure du bas ; l opérande est alors comme nous l avons vu sur 11 bits, qui seront complétés par les bits 3 et 4 de PCLATH. programmation des microcontrôleurs PIC 10/14

Attention : PC pointe toujours l instruction suivant celle qui est en train d être exécuté. 9.1.3 Registre STATUS C est le registre d état (résultat nul d une opération, dépassement.) ; il inclut aussi RP0 et RP1 pour sélectionner la banque RAM, ainsi que IRP utilisé dans l adressage indirect. 9.1.4 Registres PORTX et TRISX Suivant le composant choisi, un nombre plus ou moins important de ports d entrées sorties est disponible, sous la dénomination PORTA, PORTB etc Chacun de ces ports est associé à un registre TRISA, TRISB etc qui permet de configurer individuellement en entrée ou sortie chaque bits du port. 9.1.5 Registre de configuration Registre de configurations diverses comme : - le choix de la structure de l oscillateur (RC, quartz etc ) ; - la mise en fonction du chien de garde ; - autorisation du mode débogage etc... Ce registre n est pas dans le plan mémoire SFR. On y écrit au moment de la programmation du composant (il définit une partie de sa structure matérielle) et n est plus accessible ensuite. De nombreuses erreurs de fonctionnement sont dues à une mauvaise programmation de ce registre (mauvais choix pour l oscillateur par exemple) ; on consultera donc attentivement la documentation associée au composant utilisé (chapitre «Spécial Features of the CPU»). Pour une meilleure lisibilité, il est fortement conseillé de programmer ce registre à partir du code source (par la directive «CONFIG») et non par les menus de MPLAB. 9.1.6 La pile Elle comprend 8 niveaux et n est pas gérée par l utilisateur qui doit donc vérifier que son programme ne comporte pas plus de 8 imbrications, interruptions diverses comprises. programmation des microcontrôleurs PIC 11/14

10 Les périphériques Suivant les références un nombre plus ou moins importants de périphériques est intégré dans le circuit : - port d entrées sorties, en nombre plus ou moins grand, éventuellement en drain ouvert avec possibilité de mettre en service une résistance de tirage ; - timer ; - liaisons séries diverses : liaison synchrone SPI ou I2C, asynchrone, bus CAN, USB ; - CAN, CNA ; - comparateur analogique ; - tension de référence ; - Modulateur de largeur d impulsions. 11 Choix d un PIC Le choix d un PIC se fait en fonction de la capacité mémoire disponible, des périphériques nécessaires à l application : nombre de timer, présence d une liaison I2C, nombre de ports d entrées sorties etc Le type de boîtier et le nombre de broches peuvent également intervenir Référence des composants : Famille 10, 12, 16, 17 ou 18 PIC16 F 877 20 Fréquence maximale (MHz) Type de mémoire et alimentation F : Flash 4,5 à 6 V C : EEPROM et EPROM 4,5 à 6 V CR : ROM 4,5 à 6 V LF : Flash 2 à 6 V LC : EEPROM ou EPROM 2 à 6 V LCR : ROM 2 à 6 V Référence programmation des microcontrôleurs PIC 12/14

12 Mise au point et programmation L algorigramme ci-contre représente les différentes phases de la mise au point d un programme. Seuls les composants dont la référence contient la lettre F ont leur mémoire programme en flash et sont reprogrammables sur site via un programmateur connecté à la carte imprimée où se trouve le PIC et l application associée. Le programmateur peut être un produit Microchip (l ICD2 par exemple) ou un programmateur «maison» (on trouve de nombreux schéma sur internet). Quelle que soit l option choisie, les entrées / sorties RB6 et RB7 du port B seront utilisées au moment de la programmation. Il est éventuellement possible de les dédier de nouveau à l application en prévoyant sur la carte un circuit d isolation pour ces deux broches, entre l application et le programmateur. DEBUT ALGORIGRAMME CODE SOURCE COMPILATION SIMULATION CORRECT? oui MODE "DEBUG" ou EMULATEUR CORRECT? oui PROGRAMMATION non non CORRECT? non oui FIN 13 Documentations Remarque : le «datasheet» d un composant est souvent insuffisant pour décrire complètement le composant, il faut également consulter les manuels de référence liés à la famille du composant. On trouve cette documentation sur le site de Microchip en laçant une recherche «datasheet» autour de la référence du composant choisi. programmation des microcontrôleurs PIC 13/14

Annexe 1 : le jeu d instructions programmation des microcontrôleurs PIC 14/14