LST Ingénierie Electronique et Télécommunications Par : E. AGOURIANE Cours : Ci
LST Ingénierie Electronique et Télécommunications Par : E. AGOURIANE Cours : Circuits programmables Microcontrôle PIC 16F84 Filières Ingénieurs: -Génie Physique -Productique Mécatronique MICROCHIP Université Sultan Moulay Slimane FST Béni Mellal Département de Physique 0. Introduction aux microcontrôleurs 1. Introduction au PIC16F84 2. Organisation de la mémoire 3. Les registres SFR 4. Jeux d’instructions 5. Programmation 6. Interruptions 7. Adressage indirect 8. Timer / Compteur 9. Watchdog 10. Mode Sleep 11. Astuces 12. La famille 16FXXX SOMMAIRE 0. Introduction aux microcontrôleurs PIC Un microcontrôleur est un circuit intégré qui contient en interne, c’est-à-dire dans un seul et même boîtier, l’équivalent de la structure complète d’un micro-ordinateur. La figure montre quels sont ces éléments dont voici les fonctions: -l’unité centrale ou CPU (Central Processing Unit) est le coeur du microcontrôleur. C’est l’équivalent du microprocesseur avec une puissance généralement moindre, la vocation n’étant pas la même. C’est cette unité centrale qui exécute le programme et pilote ainsi tous les autres éléments. Elle dispose généralement de deux connexions avec l’extérieur, une pour son horloge et une pour sa réinitialisation ou reset. -La mémoire morte ou ROM (Read Only Memory) est une mémoire dont le contenu est conservé même en cas de coupure de courant. Elle contient le programme que va exécuter l’unité centrale. C’est donc elle en fait qui personnalise le circuit, puisque c’est elle qui définit sa fonction. - La mémoire vive ou RAM (Random Access Memory) est une mémoire dans laquelle l’unité centrale peut lire et écrire à tout instant. Elle est utilisée dans les phases de calcul du programme, pour stocker des résultats intermédiaires, stocker les variables d’une application. - Les entrées/sorties permettent au microcontrôleur de communiquer avec le monde extérieur. C’est donc là que vont être connectés les claviers, afficheurs, poussoir, moteurs, relais, etc. que va utiliser l’application. Tous ces éléments sont reliés entre eux par ce que l’on appelle un bus, c’est-à-dire un ensemble de liaisons transportant des adresses, des données et des signaux de contrôle. La majorité des grands fabricants de circuits intégrés dispose aujourd’hui de plusieurs gammes de microcontrôleurs qui sont performantes (68HC11, ST6, PIC, …) Les critères principaux que nous devons retenir pour choisir un microcontrôleur sont les suivants: - le ou les circuits de la famille doivent être facilement disponibles sur le marché; - le prix des circuits doit être à la portée; - la programmation de la mémoire morte interne doit être facile ; - et enfin, les outils de développement doivent être aussi peu coûteux que possible voir même gratuit. A l’heure actuelle, les circuits qui répondent le mieux à ces critères sont les microcontrôleurs de la famille PIC de Microchip. Comble de chance, ces circuits connaissent actuellement un succès que l’on peut, sans exagérer, qualifier de planétaire et sont très largement utilisés dans l’industrie. Le PIC (Programmable Interface Controler) est un circuit fabriqué par la société américaine Arizona MICROCHIP Technology. Les PIC sont des composants dits RISC (reduced Instructions set computer) c’est-à-dire composant à jeu d’instructions réduit (à l’opposé on trouve CISC: Complexe Instructions Set Computer) et une architecture Harvard (opposée Von-Neumann). Cela lui confère l’avantage de la rapidité dans l’exécution et l’exécution en un seul cycle machine. Les familles des PIC sont divisée en 3 grandes familles: La famille base line : mot de 12 bits La famille Mid-range : mot de 14 bits La famille High-End: mot de 16bits Dans ce cours on va aborder le PIC16F84 qu’est considéré comme l’entrée de gamme de la famille Mid-range. Que peut on faire avec un microcontrôleur? Remplace souvent les anciens systèmes utilisant de nombreuses circuits logiques (compteur, bascule…) par un seul circuit et offre de nombreuses fonctionnalités supplémentaires facile à implanter. Gain en taille et en coût. Un µc est comme un automate programmable: des entrées et des sorties. Il n’y a plus qu’à écrire le programme. Certains microcontrôleurs se sont spécialisé dans certaines fonctions: serveur web, génération signal PWM pour commander moteur asynchrone Robotique Domotique: contrôle éclairage, chauffage à distance, gsm, simulation de présence, etc Lecteur MP3 (µC + SD card ou compact flash + lecteur DVD + disque dur) 1. Introduction PIC 16F84 a. Identification Le 16F84-04 est un boîtier de 18 broches, c’est un PIC de la famille mid-range donc de 14 bits. Le numéro 16 indique la famille. La lettre F indique le type de mémoire ici flash (C: EPROM, CR: ROM). La mémoire flash est programmable et effaçable électriquement. Les deux chiffres 84 identifie le composant. Et les deux derniers chiffres représentent la fréquence d’horloge maximale en MHz, ici elle est de 4MHz. Les PIC sont des composants statiques, ils fonctionnent même si la fréquence baisse. b. Présentation C’est un microcontrôleur 8 bits qui possède les caractéristiques suivantes: 1k mots de 14 bits de mémoire programme (1024 instructions max) 68 Octets de RAM libres 64 Octets D’EEPROM libres 13 Entrées/Sorties 2 Ports A,B 4 Sources d’interruption 1 Timer/Compteur 1 Chien de garde 4 Sources d’oscillateur sélectionnable. Port A: RA4RA3 RA2 RA1 RA0 Port B: RB7 ……. RB0 OSC1 et OSC2: Connexion de l’oscillateur MCLR: Interruption principale pour reset (RAZ) INT: Entrée interruption sur broche RB0/INT TOCK1: Horloge externe pour pilotage du Timer Port A Port B GND Vdd Oscillateur Reset PIC 16F84 Quelle que soit l’application, le PIC a besoin nécessairement: Une alimentation de 5 volts Un quartz et deux condensateurs pour un pilotage précis, ou une résistance et un condensateur pour une utilisation normale Un condensateur de découplage Un bouton poussoir et une résistance pour mise en place d’un reset manuel. Valeur de capacité avec les résonateurs à quartz. 10K +5V 100nF 22pF 22pF 4MHz Reset VDD PIC 16F84 VSS MCLR OSC1 OSC2 10K +5V 100nF 100pF Reset VDD PIC 16F84 VSS MCLR OSC1 OSC2 Pilotage par RC Pilotage par Quartz Memoire flash De programme 1k x 14 PC Pile 8 niveaux RAM -registres - 68 x 8 Timing generation Power up Timer Oscillateur Start up Power on Reset Registre W MUX STATUS EEDATA EEPROM 64 x 8 EEADR MUX FSR Décodeur d’instruction et de contrôle Watchdog Timer I/O Ports TMR0 RA3 - RA0 RB7 - RB1 RB0 /INT RA4 /TOCK1 MCLR VDD;VSS OSC2/CLKOUT OSC1/CLKIN 8 8 8 7 14 13 ALU Adress. direct. Adress. indirect. Registre d’instruction Bus donnée Bus instructions 2. Architecture interne du PIC 16F84 Mémoire programme En haut à gauche de la figure se trouve le bloc où est stocké le programme. Cette mémoire contient toutes les « instructions » que doit effectuer le microcontrôleur. Pour le PIC 16F84, chaque instruction est codée sur 14 bits et la taille mémoire est de 1 Ko x 14 bits (soit 1 024 instructions à la file). Cette taille reste suffisante pour les petites applications qui nous intéressent. La mémoire programme peut être de différente nature selon le microcontrôleur utilisé. Dans notre cas, la mémoire est de type FLASH/ROM, c’est-à-dire réinscriptible à volonté. Mais il existe aussi des mémoires EPROM qui sont effaçables par UV ainsi que des mémoires OTP qui ne peuvent être programmées qu’une seule fois. Le Program Counter ou « PC » est un registre qui pointe l’instruction à exécuter et permet donc au programmeur de ce déplacer à volonté dans cette mémoire. A la mise sous tension, ce registre est mis à 0 et pointe donc la première case mémoire. Durant l’exécution du programme, chaque instruction pointée transite dans le «registre d’instruction» afin qu’elle puisse être traitée par le «contrôleur et décodeur d’instructions». C’est ce dernier qui gère la suite d’actions internes nécessaires à la bonne exécution de cette instruction. Unité de calcul – ALU En bas et au centre, se trouve le cœur du système appelé « ALU » (Unité Arithmétique et Logique). C’est cette partie qui effectue physiquement toutes les actions internes dictées par le Contrôleur et Décodeur d’Instructions. Par exemple, l’ALU peut effectuer une addition, une soustraction ainsi que les opérations logiques telles que « ET », « OU », etc. Pour effectuer toutes ces opérations, l’ALU utilise les données en provenance d’un registre de travail appelé «W» (Work Register) qui est largement utilisé par les instructions du programme. Mémoire RAM Pour fonctionner, un programme doit généralement pouvoir stocker temporairement des données. Une zone est spécialement prévue à cet effet : c’est la RAM (Ramdom Acces Memory). Contrairement à la Mémoire Programme, cette dernière s’efface lorsque l’on coupe l’alimentation. On s’aperçoit que la taille de cette mémoire est de 68 x 8 bits. Comme chaque donnée est codée sur 8 bits, il est donc possible de mémoriser 68 données à la file. De plus, la mémoire RAM est divisée en deux zones (appelées Bank 0 et Bank 1), une partie de la RAM est réservée aux registres de configuration du système. Nous détaillerons la fonction de ces registres plus loin. Mémoire de données EEPROM Une particularité (et aussi un grand avantage) du PIC16F84 est de posséder une mémoire de 64 x 8 bits où l’on peut stocker des données qui ne disparaissent pas lors d’une coupure d’alimentation: c’est la mémoire EEPROM. Généralement cette zone sert à mémoriser des uploads/Management/ cours-lst-pic-16f84-2019-2020.pdf
Documents similaires










-
39
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Apv 11, 2021
- Catégorie Management
- Langue French
- Taille du fichier 3.2267MB