Les microcontrôleurs
Transcription
Les microcontrôleurs
Sciences de l’Ingénieur PAGE 58 Les microcontrôleurs - PIC 16F84 – 04 Fonction : Les microcontrôleurs µc permettent sous une taille réduite de réaliser des calculs. Ils peuvent recevoir et envoyer des ordres grâce à des interfaces d'entrées et de sorties. Ils présentent l'intérêt de réunir sous un volume réduit de la mémoire, un calculateur, des ports E/S... Une fois programmés, ils sont autonomes. Structures PC : (programme counter) permet de lire la mémoire programme ALU : (Unité arithmétique et logique) il s'agit de l'unité de calcul Les registres Les données et les programmes sont toujours stockés en mémoire tandis que les opérations exécutées par l'unité de calcul le sont au moyen de registres. Un registre est un circuit logique capable de contenir des données. L'association de plusieurs circuits (par exemple une bascule D) permet de réaliser un registre. Un groupe de huit bits est nommé un octet. Les registres servent aux calculs et à la configuration du µc CI10_I11_µc Sciences de l’Ingénieur PAGE 59 Mémoire Afin de mémoriser plusieurs mots binaires, on empile des registres. Cette association s'appelle une mémoire. Afin d'accéder à chaque mot contenu dans la mémoire, ceux-ci ont une adresse qui correspond à leur position physique dans la mémoire. Les µc étant des circuits logiques, ils ne manipulent que du binaire (0 - 0V ; 1 - +5v). L'écriture des contenus des registres ainsi que leur adresse devient vite lourde. Afin de simplifier l'écriture, on utilise la notation hexadécimale. L'adresse 0 0 0 0 0 1 1 0 devient alors 06, par défaut les nombres seront exprimés en hexa. Matériel PIC 16 F 84 - 04 (4 MHz) 13 E / S à configurer L'horloge s'obtient de deux façons QUARTZ ou réseau RC CI10_I11_µc Sciences de l’Ingénieur PAGE 60 Entrées Sorties Principe de programmation Le µc ne comprend que l’hexadécimal. Le programme est écrit grâce à un éditeur comme notepad. Le programme est transféré grâce à une carte électronique et un logiciel comme Icprog. Il est possible de programmer les µcs en assembleur. Des mnémoniques remplacent l’hexadécimal. Pour le pic qui est du type (RISC) reduced instruction set computer, il n’y a que 35 instructions. Le programme est ensuite compiler en hexadécimal par un logiciel type MPASMWIN. Il est possible d’écrire le programme dans un langage évolué type c basic ou en logigramme et de le compiler en assembleur et en hexadécimal Résumé hexadécimal assembleur MPASMWIN µc Icprog Langage de haut niveau : C basic Ou algorigramme Principe fondamental de programmation : Un microcontrôleur garde en mémoire les ordres donnés, il faut absolument remettre à zéro les sorties quand on veut les couper. Un µc exécute les actions les uns après les autres à la cadence du quartz (environ 1 opération toutes les 1µs), il faut donc utiliser des boucles ou attendre avec des temporisations. CI10_I11_µc Sciences de l’Ingénieur PAGE 61 NUMERATION – CODAGE 1 – la Numération Système égyptien - Utilisation de symbole représentant un poids La place n’a pas d’importance. Exemple Unité Dizaine Centaine Mille Dix mille = 151 Système utilisé par les Romains I 1 - V 5 X 10 L 50 C 100 D 500 M 1000 CLI = 151 Si à droite d’un chiffre on en écrit un autre de valeur moindre ou égal, la valeur du chiffre est augmentée VI = 6, XX = 20. Si à gauche d’un chiffre on en écrit un autre de valeur moindre la valeur du chiffre est diminuée IV = 4, IC = 99. La valeur d’un chiffre est multipliée par mille s’il est surmonté d’un trait … Système dit arabe - Chaque chiffre a un poids, de 0 à n suivant la base ( 9 pour la base 10, 1 pour la base 2). La place des chiffres dans le nombre a son importance. Chaque place a son poids Exemple 151 1 centaine 5 x 1 dizaine en base 10 1 unité : 0 à 9 1 unité CI10_I11_µc Sciences de l’Ingénieur PAGE 62 2 - Bases 102, 9616, Notation 5210 2 – 1 Base10 La base 10 est utilisée tous les jours, ce sont les nombres décimaux. 0 Une unité va de 0 à 9, au delà c’est à dire 10 unités on utilise le terme de dizaine. 1 dizaine 9 Ex 7 15 7 unités 15 unités ou 1 dizaine + 5 unités 1 dizaine 5 unités 1972 1 millier 9 centaines = 7 dizaines 1000 + 900 + 70 + 2 2 unités Généralisation 1972 = 1 . 103 + 9 . 10² + 7 . 101 + 2 . 100 = 1000 + 900 + 70 + 2 2 – 2 Base 2 Une unité peut prendre l’état 0 ou 1 0 0 Ex 102 1 1 102 = 1 . 21 + 0 . 20 21 20 2 – 3 Base 16 Hexa Décim al 0 0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 A B C D E F 10 11 12 13 14 15 0 0 E1916 = E . 16² + 1 . 161 + 9 . 160 F F E1916 = 14 . 16² + 1 . 161 + 9 . 160 161 160 E1916 = 3609 Ex CI10_I11_µc Sciences de l’Ingénieur PAGE 63 3 – Conversions entre bases 3 – 1 Bases 2 – 10 11012 = 1 . 23 + 1 . 22 + 0 . 21 + 1 . 20 = 1 .8 + 1 . 4 + 0 . 2 + 1 . 1 = 1310 3 – 2 Bases 16 –10 C116 = C . 161 + 1 . 160 = 12 .161 + 1 . 160 = 193 3 – 3 Bases 10 – n Diviser par n le nombre en base 10 Puis diviser le quotient par n et garder le reste Lire le résultat en partant de la fin et en remontant. nbr n r q n r q Sens de lecture 4 – Addition de nombres binaires 1111001 +0101101 1 + 1 10 5 - Codage 5 – 1 Notion de code Le format le plus simple est le bit, il peut prendre deux états, 0 ou 1, facilement réalisable en électricité en affectant une grandeur électrique au 1 et une autre au 0. Oui Etat logique 1 v = + vcc Non Etat logique 0 v=0v 1 bit Mais si on veut différencier plus de cas, il faudra utiliser un ensemble de n bits faisant correspondre à chaque cas une combinaison. La table de correspondance entre les cas et les combinaisons sera le code. 5 – 2 Type d’information à coder La plupart des informations à coder seront des nombres (une quantité, n° d’ordre ou adresse) ou la transmission de textes grâce aux codes alphanumériques (ASCII). CI10_I11_µc Sciences de l’Ingénieur PAGE 64 6 - les codes numériques 6 – 1 Code binaire pur C ‘est le code le plus simple. Son principe est le même que pour les nombres décimaux, mais ici la base de numération est égale à 2 et l’on utilise que deux symboles : 0 et 1 Le code binaire pur est un code pondéré. On peut affecter à chaque bit un poids, et la valeur du nombre représenté peut être obtenue directement en additionnant le poids des bits. 128 64 32 16 8 4 2 1 Un nombre X s’écrira : X = an × 2 n + an −1 × 2 n −1 + ... + a1 × 21 + a0 × 20 avec an , an −1 ,.., a1 , a0 = 0 ou 1 X = 11001 X = 1 × 2 4 + 1 × 23 + 0 × 2 2 + 0 × 21 + 1 × 20 X = 16 + 8 + 0 + 0 + 1 = 25 Conversion rapide binaire décimale Exemple 8 0 0110 4 1 2 1 1 0 4+2=6 Notations condensées Notation hexadécimale L’utilisation du système hexadécimal, ou système à base 16, relève du même principe que la notation octale, mais on regroupe les éléments binaires par 4 au lieu de 3. Il faut utiliser 16 chiffres pour la représentation. 0 0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 A 11 B 12 C 13 D 14 E 15 F Conversion rapide hexa binaire Exemples 101110 on fait des paquets de 4 0010 1110 on convertit caque paquet 2 E Code BCD décimal codé binaire Chaque chiffre est codé par son équivalent binaire, la représentation de nombres décimaux se fait avec autant de groupe de 4 bits que le nombre a de chiffres. 3609 3 6 0 9 0011 0110 0000 1001 CI10_I11_µc Sciences de l’Ingénieur PAGE 65 Notation sous forme de mot binaire 8 bits : octet 16 bits : mot 32 bits : mot long 6 – 2 Code binaire réfléchi ou code gray C’est un code non pondéré, les combinaisons n’ont qu’une valeur relative. Il offre l’avantage de ne modifier qu’un bit à la fois. binaire naturel D2 0 0 0 0 1 1 1 1 D1 0 0 1 1 0 0 1 1 D0 0 1 0 1 0 1 0 1 nombre décimal 0 1 2 3 4 5 6 7 binaire réfléchi D2 0 0 0 0 1 1 1 1 D1 0 0 1 1 1 1 0 0 D0 0 1 1 0 0 1 1 0 6 – 3 Nombres binaires signés Lorsqu’il est nécessaire d’utiliser des nombres binaires positifs et négatifs, on travaille en binaire signé. Le signe est donné par le bit de poids fort (MSB). Si c’est 0 le nombre est positif, si c’est 1 le nombre est négatif. Conversion d’un nombre binaire négatif en nombre décimal 1000 0000 => 000 0000 Extraire le MSB pour le signe 111 1111 Complémenter les autres bits + 1 Additionner 1 1000 0000 = - 128 Convertir le résultat en décimal 6 – 4 Conclusions Le code binaire pur, qui se prête parfaitement au traitement dans les unités de calcul, est malheureusement inadapté à l’interprétation directe par l’homme. La forme octale ou hexadécimale bien que plus facile à écrire n’offre pas plus de facilité d’interprétation. binaire pur 01101010 hexadécimal 6A décimal 106 CI10_I11_µc