Docsity
Docsity

Prépare tes examens
Prépare tes examens

Étudies grâce aux nombreuses ressources disponibles sur Docsity


Obtiens des points à télécharger
Obtiens des points à télécharger

Gagnz des points en aidant d'autres étudiants ou achete-les avec un plan Premium


Guides et conseils
Guides et conseils

Cours d'informatique industrielle, Exercices de Informatique

le binaire (base 2) est constitué de 2 chiffres : 0, 1 l'octal (base 8), est constitué de 8 chiffres : 0, 1, 2, 3, 4, 5, 6, 7 le décimal (base 10), ...

Typologie: Exercices

2021/2022

Téléchargé le 26/04/2022

Aela_Por
Aela_Por 🇫🇷

4.2

(44)

93 documents

Aperçu partiel du texte

Télécharge Cours d'informatique industrielle et plus Exercices au format PDF de Informatique sur Docsity uniquement! Informatique Industrielle Intervenants : Marc Allain - marc.allain@fresnel.fr Julien Marot - julien.marot@fresnel.fr Micro-contrôleurs Microchip Cours Master SIS 2 Coordonnées ● Marc Allain [Maître de conférence] marc.allain@fresnel.fr Equipe physique et traitement d'image, Institut Fresnel, bureau 215 ● Julien Marot [Maître de conférence] julien.marot@fresnel.fr Equipe Groupe Signaux Multidimensionnels Institut Fresnel, bureau 237 Note : les intervenants sont sur le domaine Universitaire de St-Jérôme. 5 « Boite à outils » ● Les différentes bases de numérotation (binaire, octal, décimal, hexadécimal) ● Conversions et opérations sur les nombres binaires ● Notions d'électronique numérique (fonctions logiques combinatoires et séquentielles) ● Notion de programmation (algorigramme, concept de variable, fonction, etc.) 6 Objectifs du cours L'objectif de ce cours est de vous rendre capable de choisir, de programmer, d'utiliser un micro-contrôleur et plus généralement de vous transmettre une culture des systèmes micro-programmés. ● Notions d'architecture [des systèmes micro-programmés] ● Éléments constitutifs [d'un système micro-programmé] ● Fonctionnement [d'un système micro-programmé] ● Éléments de choix [d'un système micro-programmé] ● Connaissances des différents types d'instruction ● Notion d'interruption ● Programmation en Assembleur ● Programmation en langage C Non dédié à un microcontrôleur Dédié à un microcontrôleur 7 Plan Présentation de l'informatique industrielle et des systèmes micro-programmés Architecture des micro-contrôleurs Présentation des différents éléments d'un micro-contrôleur, éléments de choix Rappels sur les nombres binaires et les différents codages Les instructions Rappels sur la logique combinatoire et séquentielle Étude du fonctionnement d'un micro-contrôleur : le PIC 18F4520 Programmation en Assembleur -- Rappel sur les algorigrammes Présentation des interruptions Étude d'un programme en Assembleur avec gestion des interruptions Présentation de fonctions intégrées au microcontrôleur (timer, PWM, etc.) Presentation du langage C pour le microcontrôleur / spécificité pour le PIC 18F4520 10 L'informatique industrielle Applications : ● Automates, robotique, ● Mesures de grandeurs physiques, ● Systèmes temps-réel, ● Systèmes embarqués. Source : Ascom S.A. 11 Les différents systèmes programmables ● Les circuits spécialisés ou ASIC (Application Specific Integrated Circuit) : Les circuits spécialisés sont des circuits spécialisés dès leur conception pour une application donnée. Exemples : DSP (Digital Signal Processing), co-processeur arithmétique, processeur 3-D, contrôleur de bus, ... Avantages : ● Très rapide ● Consommation moindre ● Optimisé pour une application Inconvénients : ● Faible modularité ● Possibilité d'évolution limité ● Coût Source : Texas Instruments Source : NVidia 12 Les différents systèmes programmables Les systèmes en logique programmée et/ou en logique programmable sont connus sous la désignation de PLD (programmable logic device, circuit logique programmable) ● FPGA (field-programmable gate array, réseau de portes programmables in-situ), ● PAL (programmable array logic, réseau logique programmable), ● ... Avantages : ● Forte modularité ● Rapidité Inconvénients : ● Mise en oeuvre plus complexe ● Coûts de développement élevé « Un circuit logique programmable, ou réseau logique programmable, est un circuit intégré logique qui peut être reprogrammé après sa fabrication. Il est composé de nombreuses cellules logiques élémentaires pouvant être librement assemblé.» (Wikipédia) Source : Altera Source : Altera 15 Deux types de processeurs ● CISC : Complex Instruction Set Computer ● RISC : Reduced Instruction Set Computer Grand nombre d'instructions, Type de processeur le plus répandu Nombre d'instructions réduit (sélection des instructions pour une exécution plus rapide) Décodage des instructions plus rapide 16 Évolution et Loi de Moore Intel 8086 (1978) architecture interne 16 bits bus 16 bits fréquence d'horloge 4,77/10 Mhz 39 000 transistors, gravés en 3µm 0,33/0,75 MIPS Intel Pentium 4 Northwood C (2002) architecture interne 32 bits fréquence d’horloge 2,4/3,4 Ghz (bus processeur : 200Mhz) plus de 42 millions de transistors, gravés en 0,13 µm 450 MIPS Source : Intel Source : Intel Source : Wikipédia 17 Évolution et Loi de Moore Source : Wikipédia Intel Pentium 4 Northwood C (2002) architecture interne 32 bits fréquence d’horloge 2,4/3,4 Ghz Fréquence de bus: 0,2 GHz plus de 42 millions de transistors, gravés en 0,13 µm 450 MIPS Intel Core i7 Gulftown  (2011) architecture interne 64 bits 4/6 coeurs fréquence d'horloge 3,46 Ghz Fréquence de bus: 3,2 GHz Fréquence de transfert des données 25.6 Gb/sec. 1,17 Milliards de transistors, gravés en 32nm 6000 MIPS « The wall » : limite industrielle et physique, 20 nm performance / Watt consommé 20 Structures des systèmes micro-programmés Il existe 3 Types de bus : ● Bus de données : permet de transférer entre composants des données, ex. : résultat d'une opération, valeur d'une variable, etc. ● Bus d'adresses : permet de transférer entre composants des adresses, ex. : adresse d'une case mémoire, etc. ● Bus de contrôle : permet l'échange entre les composants d'informations de contrôle [bus rarement représenté sur les schémas]. ex. : périphérique prêt/occupé, erreur/exécution réussie, etc. Définition : Une adresse est un nombre binaire qui indique un emplacement dans une zone mémoire 21 Structures des systèmes micro-programmés ● Structure de Harvard La différence se situe au niveau de la séparation ou non des mémoires programmes et données. La structure de Harvard permet de transférer données et instruction simultanément, ce qui permet un gain de performances. Extraits du cours intitulé « Les systèmes micro-programmés » ● Structure de Von Neumann 22 Plan Présentation de l'informatique industrielle et des systèmes micro-programmés Architecture des micro-contrôleurs Présentation des différents éléments d'un micro-contrôleur, éléments de choix Rappels sur les nombres binaires et les différents codages Les instructions Rappels sur la logique combinatoire et séquentielle Étude du fonctionnement d'un micro-contrôleur : le PIC 18F4520 Programmation en Assembleur -- Rappel sur les algorigrammes Présentation des interruptions Étude d'un programme en Assembleur avec gestion des interruptions Présentation de fonctions intégrées (timer, PWM, etc.) Presentation du langage C pour le microcontrôleur / spécificité pour le PIC 18F4520 25 Savoir lire le schéma bloc d’un micro- contrôleur ● PC (Program Counter) ● Registre(case mémoire) ● ALU ● Multiplexeur ● Décodeur d’instructions ● horloge ● Stack (pile) LIFO (Last In First Out) FIFO (First In First Out) 26 Savoir lire le schéma bloc d’un micro- contrôleur ● Registre (case mémoire) ● ALU ● PC (Program Counter) ● Multiplexeur ● Décodeur d’instructions ● horloge ● Stack (pile) LIFO (Last In First Out) FIFO (First In First Out) Issu de la documentation technique du PIC16F628 27 Savoir lire le schéma bloc d’un micro- contrôleur ● Ports d’entrées/sorties ● USART (Universal Synchronous Asynch. ReceiverTransmitter) interface de communication série, ● CCP (Capture/Compare/PWM) Modulation en largeur d'impulsions, ● Timer ● Comparateur ● CAN/CNA ● Référence de tension ● Module HF ● Liaison USB, ... 30 Binaire, octal, décimal et hexadécimal On rappelle tout d'abord les différentes bases qui nous seront utiles : le binaire (base 2) est constitué de 2 chiffres : 0, 1 l'octal (base 8), est constitué de 8 chiffres : 0, 1, 2, 3, 4, 5, 6, 7 le décimal (base 10), est constitué de 10 chiffres : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 l'hexadécimal (base 16), est constitué de 16 chiffres : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F Remarque : pour connaître la base associée à un nombre, on le note entre parenthèse avec en indice une lettre b,o,d ou h selon qu'il s'agit d'un codage binaire, octal, décimal ou hexadécimal. Par exemple, (1001)b, (3F1)h ou (128)d . 31 Codes pondérés Dans une base donnée, le nombre s'exprime comme une somme pondérée. Par exemple, le nombre 128 décimale (base 10) est constitué de 3 chiffres : ● le chiffre 8 est affecté du poids de 1 (unités) ● le chiffre 2 est affecté du poids de 10 (dizaines) « Un Zéro » ● le chiffre 1 est affecté du poids de 100 (centaines) « Un Zéro Zéro» Le nombre peut donc s'écrire 1 x 100 + 2 x 10 + 8 x 1 = (128)d Chiffre Poids 32 Codes pondérés Le nombre 10 binaire (base 2) est constitué de 2 chiffres : ● le chiffre 0 est affecté du poids de 1 ● le chiffre 1 est affecté du poids de 10 (exprimé en base 2) Le nombre peut donc s'écrire 1 x 10 + 0 x 1 = (10)b Chiffre Poids Remarque : le nombre 10 binaire ne s'exprime pas dix car ceci sous-entend que le nombre est exprimé en décimal... 35 Conversion décimal  binaire : division par 2 successives... (14)d 2 7 2 3 2 1 0 1 1 Sens de lecture... (14)d = (1 1 1 0)b Conversion décimal  hexadécimal : division par 16 successives... (282)d 16 17 16 1 10=A 1Sens de lecture... (282)d = (11A)h 36 Exercices 1 : convertir en décimal les chiffres binaires suivants : (111)b, (1010)b, (1001 1110)b Exercices 2 : convertir en binaire les chiffres décimaux suivants : 8, 12, 256, 1023 Exercices 3 : convertir en hexadécimal les chiffres binaires suivants : (111)b, (1010)b, (1001 1110)b Exercices 4 : convertir en hexadécimal les chiffres décimaux suivants : 8, 12, 67, 256, 1023, 12341 Binaire, octal, décimal et hexadécimal 37 Binaire, octal, décimal et hexadécimal Pour indiquer le signe d’un nombre binaire, on ajoute un bit en tête du nombre. On peut ainsi coder les entier relatifs et les nombres réels. 0 0 1 0 1 0 01Un octet (8bits) : Un octet (8 bits) Un mot ou word (16 bits) Un double mot ou double word (32 bits) MSB : Most Significant Bit LSB : Low Significant Bit Bit de signe = -108 (decimal) 40 Plan Présentation de l'informatique industrielle et des systèmes micro-programmés Architecture des micro-contrôleurs Présentation des différents éléments d'un micro-contrôleur, éléments de choix Rappels sur les nombres binaires et les différents codages Les instructions Rappels sur la logique combinatoire et séquentielle Étude du fonctionnement d'un micro-contrôleur : le PIC 18F4520 Programmation en Assembleur -- Rappel sur les algorigrammes Présentation des interruptions Étude d'un programme en Assembleur avec gestion des interruptions Présentation de fonctions intégrées (timer, PWM, etc.) Presentation du langage C pour le microcontrôleur / spécificité pour le PIC 18F4520 41 Instructions Un jeu d’instruction est un ensemble d’opérations directement réalisables sur un système micro-programmé donné. Par exemple : le PIC18F4520 (RISC) possède un jeu d’instructions composé de 75 instructions. L’exécution d’une instruction peut nécessiter un ou plusieurs cycles d’horloges suivant la complexité de l'instruction. NOTE : Un cycle d’horloge correspond à une période de l’horloge (signal de référence temporelle). La fréquence d’horloge est le nombre de cycles effectués par une horloge en une seconde. 42 Instructions Instruction = OPCODE + opérande(s) OPCODE (Operation CODE) : partie d’une instruction qui précise quelle opération doit être réalisée Extrait du datasheet (documentation technique) du PIC18F4520. Une instruction est composée au minimum de deux parties: 45 Les différents modes d'adressage La nature et le nombre d’opérandes qui constituent une instruction détermine le mode d’adressage de l’instruction. On distingue 4 modes d’adressage principaux. L’adressage immédiat : l’opérande est une valeur ex : MOVLW 5Ah ; Exécution de l'instruction (pipeline à 4 niveaux) Nombres de cycles nécessaires à l'exécution 46 Les différents modes d'adressage L’adressage direct (étendu) : l’opérande est l’adresse (bits de poids faibles de l'adresse complète) de la donnée dans la page mémoire active. ex : ADDWF 000Fh, En mode direct étendu : on transmet l'adresse complète La nature et le nombre d’opérandes qui constituent une instruction détermine le mode d’adressage de l’instruction. On distingue 4 modes d’adressage principaux. 47 Les différents modes d'adressage NOTE : Il existe de nombreux autres modes d’adressage (ex. implicite, inhérent, relatif) : leur nombre varie en fonction du constructeur et du micro-contrôleur ! ● l’adressage indirect (indexé) : l’opérande est l’adresse d’un registre qui contient l’adresse de la donnée. ● En mode indirect indexé, on ajoute un décalage par rapport à l’adresse. La nature et le nombre d’opérandes qui constituent une instruction détermine le mode d’adressage de l’instruction. On distingue 4 modes d’adressage principaux. 50 Table de vérité Considérons tout d'abord le cas de la logique combinatoire à 1 sortie (le cas à plusieurs sorties n'est pas très différent). Pour connaître l'état du système aux divers combinaisons logiques des entrées on construit la table de vérité qui exprime la valeur de la sortie s en fonction de toutes les configurations possible des entrées binaires (Ei), cf. ci-dessous. On notera que pour une fonction logique à une seule variable d'entrée, il existe 22=4 combinaisons de sorties. De même, pour deux variables d'entrées, il existe 24=16 combinaisons de sorties. E1 E2 E1 E2 E3 E1 E2 E1 51 Opérateurs élémentaires Dans ces configurations, on extrait typiquement 6 fonctions logiques d'intérêt que sont les opérateurs NON (une entrée), ET, OU, ET-NON, OU-NON, et OU-EXCLUSIF (deux entrées). Les opérateurs ET-NON et OU-NON forment un groupe complet, c.à.d. que toute fonction logique complexe peut être construite sur la base de l'une de ces fonctions élémentaires. E1 E2 E1 E2 E1 E2 E1 E2 E NON OU-EX OU ET-NON OU-NON ET E1 E2 52 Algèbre de BOOLE Les opérateurs logiques élémentaires permettent la construction d'une algèbre dite « algèbre de Boole ». Ainsi, si on considère deux entrées binaires A et B, on adopte alors la convention suivante pour construire des équations logiques : NON ET-NON, ET OU-NON, OU, OU-EXCLUSIF Les différentes opérations bénéficient des propriétés suivantes A A⋅B AB A⋅B=AB AB=A⋅B AB A⊕B Commutativité :Associativité : A⋅B⋅C=A⋅B⋅C AB C=ABC A⊕B ⊕C=A⊕B⊕C A⋅B=B⋅A AB=BA A⊕B=B⊕A A⋅B=B⋅A AB=BA Distributivité : AB⋅C =AB ⋅AC  A⋅BC =A⋅BA⋅C Lois de De Morgan : A⋅B=AB AB=A⋅B 55 Exercice : étude de la bascule RS Écrire la table de vérité et compléter le chronogramme pour le verrou RS ci-dessous. S R Q Q 56 Les bascules synchrones La Bascule D (Flip-Flop D) Une bascule synchrone est une bascule qui ne change d'état que sur front montant ou descendant appliqué sur son entrée de commande. Ce type de bascule est à la base du fonctionnement du microcontrôleur. C'est la version synchrone du verrou D ! C D 57 La Bascule JK (Jump-Knock out) K J Les bascules synchrones 60 Les registres Le registre W (accumulateur) Le compteur programme (PC) Le registre d’état (Flags) Les registres de configuration : les registres de directions pour les ports d’entrées/sorties (TRIS, SFR), les registres de gestion des interruptions, de gestion de la mémoire (BSR, GPR, etc.) Un registre 8 bits est synonyme d'un ensemble de 8 cases mémoire. De nombreux registres sont utilisés pour gérer le microcontrôleur. ATTENTION : tous les registres du microcontrôleur ne sont pas représentés sur le schéma... 61 Par exemple : le registre d'état Le registre d'état (Status Register) contient des bits d'informations sur les opérations arithmétiques menées par l'ALU (ex., le dépassement de format après avoir demandé l'addition de deux valeurs 8 bits). 62 Phase de démarrage du micro-contrôleur Suite à une opération de remise à zéro (RESET), le micro-contrôleur effectue une phase de démarrage : 1/ RESET : il peut être déclenché par la mise sous tension du micro-contrôleur, la réception d’un signal sur la broche RESET du micro-contrôleur, une instruction de RESET, ... 2/ Initialisation du micro-contrôleur : le micro-contrôleur effectue une temporisation afin de garantir la stabilité des signaux d’horloge. 3/ Effacement des registres : le micro-contrôleur efface le contenu des registres (variable en fonction du « mode de RESET » que vous effectuez). 4/ Lecture du vecteur RESET Le micro-contrôleur lit l’adresse du programme principal dans la mémoire programme. 5/ Début de l’exécution du programme principal. 65 Exécution d’une instruction Déroulement: (1) Lecture de l’instruction dans la mémoire programme à l'adresse pointée par le compteur programme. (2) Lecture de l’instruction et décodage. (3) Pour l’adressage direct, l’opérande constitue la partie basse de l’adresse mémoire sur laquelle s’effectue l’opération, la partie haute est complétée avec le registre BSR. (3') Pour l’adressage étendu, l’opérande est l’adresse complète de la case mémoire sur laquelle s’effectue l’opération. (4) Finalement l’instruction est exécutée sur la case mémoire pointée. Adressage direct (étendu) L’instruction comporte une opérande qui indique l’adresse mémoire sur laquelle s’effectue l’opération. Exemples : CLRF (direct), MOVFF (étendu) ? 66 Organisation de la mémoire données BSR (Bank Select Register) Permet de pré-sélectionner la page pour un accès mémoire plus rapide. => notion de pagination de la mémoire GPR (General Purpose Registers) Espaces mémoires qui permet le stockage de données temporaires (variable, ...) Access Bank pointeurs vers des zones mémoires SFR (Special Function Registers) Registres de contrôle et d’état pour les périphériques (notamment...) 67 Pagination de la mémoire « La pagination de la mémoire consiste à diviser la mémoire en blocs (pages) de longueur fixe. » (Source : Comment Ça Marche) Une adresse mémoire est alors divisée en deux parties : Partie haute Partie Basse Dans le cas d’une instruction avec adressage direct, on transmet seulement la partie basse de l’adresse. Le micro-contrôleur utilise le registre BSR pour compléter l’adresse. Attention !! En adressage direct, on doit s’assurer que l’on travaille dans la bonne page mémoire. FIGURE 5-8: INDIRECT ADDRESSING Using an instruction with one of the indirect addressing registers as the operand….. .….uses the 12-bit address stored in the FSR pair associated with that register … to determine the data memory location to be used in that operation. In this case, the FSR1 pair contains ECCh. This means the contents of location ECCh will be added to that ofthe W register and stored back in ECCh. ADDWF, INDF1, FSRIH:FSRIL 1 000h Bank 0 100h Bank 1 200h Bank 2 300h Bank 3 U through J A Bank 13 in EOOh Bank 14 Fo0h Bank 15 FFFh Data Memory 70 71 Plan Présentation de l'informatique industrielle et des systèmes micro-programmés Architecture des micro-contrôleurs Présentation des différents éléments d'un micro-contrôleur, éléments de choix Rappels sur les nombres binaires et les différents codages Les instructions Rappels sur la logique combinatoire et séquentielle Étude du fonctionnement d'un micro-contrôleur : le PIC 18F4520 Programmation en Assembleur -- Rappel sur les algorigrammes Présentation des interruptions Étude d'un programme en Assembleur avec gestion des interruptions Présentation de fonctions intégrées (timer, PWM, etc.) Presentation du langage C pour le microcontrôleur / spécificité pour le PIC 18F4520 72 Conception d'un système embarqué Formellement, la conception d'un système embarqué basé sur un microcontrôleur peut être décomposée en 3 étapes distinctes. (1) Le développement matériel s'appuie sur un cahier des charges, c.à.d. la définition des fonctionnalités et des performances du système. Cette étape doit permettre de spécifier les caractéristiques du microcontrôleur, de ses périphériques et de l'électronique associée. (2) Le développement logiciel s'appuie sur l'étape précédente pour construire un algorigramme, puis le code qui va être testé. Cette étape requiert que vous choisissiez le langage (assembleur et/ou évolué) que vous utiliserez sur des bases objectives, par exemple de manière à optimiser le temps de développement, la facilité de maintenance, le nombre d'opérations, etc. (3) La phase de test doit être menée pour vérifier que le cahier des charges initial est bien rempli. Cette phase de test « finale » n'empêche pas d'avoir mené des tests séparés lors des phases de développement matériel et logiciel. 75 La programmation en Assembleur Le langage Assembleur (abrégé ASM) est un langage de programmation de bas-niveau, qui fait la correspondance entre des instructions en langage machine (mots binaires) et des symboles appelés mnémoniques plus simples à utiliser. Le langage Assembleur est un langage compilé, c'est à dire : 1. L’utilisateur écrit son programme en langage Assembleur. Ce fichier est assemblé pour traduire le programme en langage machine (avec éventuellement des améliorations). 2. Le programme en langage machine est alors utilisé pour programmer le micro-contrôleur, c.à.d. qu'il est transféré dans la mémoire (programme) pour être exécuté. Source : Microchip 76 Les types d’instructions en Assembleur A. Les instructions propres au micro-contrôleur : ● Les instructions de transfert : movlw, movf, ... ● Les instructions arithmétiques : decf, addwf, ... ● Les instructions logiques : xorlw, andlw, ... ● Les instructions de branchement : bz (branch if zero), bra (branch always), ... B. Les instructions pré-processeur permettent au programmeur de donner des indications au compilateur, elles sont destinées au PC et non pas au micro-contrôleur ! Il existe différents types d’instruction pré-processeur : ● les instructions de contrôle : org = début du programme, end = fin du programme, etc. ; ● les instructions conditionnelles : if, else, endif, etc. ; ● les instructions relatives aux données : res = réservation d’espace mémoire, etc. ; ● les instructions pour les macros 77 Algorigrammes La description du programme par un algorigramme permet de : ● gagner en efficacité lors de la phase de codage du programme, ● d’optimiser la structure du programme, ● de clarifier le fonctionnement du programme, ● le rendre compréhensible à une personne extérieure. Début, Fin, Interruption Instruction Sous-programme Test d'une condition Vrai Faux Initialisation 80 ; Filename : premier_programme.asm ; ; Description : Recopie de l'état de la broche 1 du PORTB ; sur la broche 2 du PORTB ; ; Author: Eric Magraner ; Company: Universite Paul Cezanne ; Revision: 1.00 ; Date: 2006/07 list p=18f4520 ; Définition du micro-contrôleur utilisé #include <p18f4510.inc> ; Définitions des emplacements mémoires des registres ; et configurations matérielles par défaut #include <MA_CONFIG.inc> ; Modification des configurations matérielles par défaut La première partie concerne l'en-tête qui définit, le plus clairement possible, la fonction du programme ainsi que divers informations permettant de gérer l'historique du code (auteur, date d'écritures et de modifications, numéro de version, etc.) Début 81 ; ; Filename : premier_programme.asm ; ; Description : Recopie de l'état de la broche 1 du PORTB ; sur la broche 2 du PORTB ; ; Author: Eric Magraner ; Company: Universite Paul Cezanne ; Revision: 1.00 ; Date: 2006/07 list p=18f4520 ; Définition du micro-contrôleur utilisé #include <p18f4510.inc> ; Définitions des emplacements mémoires des registres ; et configurations matérielles par défaut #include <MA_CONFIG.inc> ; Modification des configurations matérielles par défaut La déclaration du micro-contrôleur permet au compilateur de générer un code machine qui soit compréhensible pour le microcontrôleur que vous souhaitez programmer. Début 82 ; Filename : premier_programme.asm ; ; Description : Recopie de l'état de la broche 1 du PORTB ; sur la broche 2 du PORTB ; ; Author: Eric Magraner ; Company: Universite Paul Cezanne ; Revision: 1.00 ; Date: 2006/07 list p=18f4520 ; Définition du micro-contrôleur utilisé #include <p18f4510.inc> ; Définitions des emplacements mémoires des registres ; et configurations matérielles par défaut #include <MA_CONFIG.inc> ; Modification des configurations matérielles par défaut Une directive au pré-processeur demande l'inclusion d'un fichier de définition spécifique au microcontrôleur qui définit certaines configurations matérielles par défaut et permet de simplifier l'écriture des programmes, cf. transparent suivant. Début 85 ;----- Utilisation de l'oscillateur ;----- en mode haute vitesse CONFIG OSC = HS Exemple de ce que pourrait être le fichier MA_CONFIG.inc 86 org h'0000' ; initialisation du vecteur RESET goto init init clrf PORTB movlw b'00000001' movwf TRISB ; Configuration de la direction ; du PORTB. Broche 1 en entrée. ; Broche 2 à 8 en sortie clrf LATB movlw 0Fh movwf ADCON1 ; Configuration des broches 1 à 4 ; du PORTB en E/S numérique Broche 2 à 7 du PORTB en sortie Broche 1 du PORTB en entrée RAZ du PORTB Broche 1 à 4 du PORTB en E/S numérique On peut distinguer ensuite une seconde partie qui correspond à la configuration des éléments du microcontrôleur qui entrent directement en jeu dans la fonction réalisée... La première opération consiste systématiquement à initialiser le vecteur RESET. Notez que cette étape n'a pas été notée dans l'algorigramme (ce qui pourrait être considéré comme une lacune...). 87 org h'0000' ; initialisation du vecteur RESET goto init init clrf PORTB movlw b'00000001' movwf TRISB ; Configuration de la direction ; du PORTB. Broche 1 en entrée. ; Broche 2 à 8 en sortie clrf LATB movlw 0Fh movwf ADCON1 ; Configuration des broches 1 à 4 ; du PORTB en E/S numérique La seconde opération correspond à la configuration du PORT B telle que décrite par l'algorigramme... Cette configuration est directement fourni par le Datasheet du PIC 18F4520... Broche 2 à 7 du PORTB en sortie Broche 1 du PORTB en entrée RAZ du PORTB Broche 1 à 4 du PORTB en E/S numérique 90 Les interruptions « Une interruption est un arrêt temporaire de l'exécution normale d'un programme informatique par le microprocesseur afin d'exécuter un autre programme (appelé routine d'interruption).  Les interruptions matérielles sont utilisées lorsqu'il est nécessaire de pouvoir réagir en temps réel à un événement asynchrone, ou bien, de manière plus générale, afin d'économiser le temps d'exécution lié à une boucle de consultation (polling loop).» (Source : Wikipédia) Une interruption peut avoir différentes sources : périphérique d’entrée/sortie, timer, watchdog (cf. explications plus loin), ... Les interruptions sont utilisées pour avertir le micro-contrôleur quand une condition est remplie. En utilisant les interruptions, on évite que le micro-contrôleur reste en attente inutilement (pooling-loop), elles permettent de gérer les événements asynchrones. 91 Les interruptions sont, en général, contrôlées par 3 bits : ● Un bit de flag indique qu’une interruption a été déclenchée et indique la source. ● Un bit de validation permet à l’utilisateur d’activer ou non une interruption. ● Un bit de priorité permet de sélectionner la priorité (haute/basse) de l’interruption. Gestion des priorités : Il existe des interruptions de priorité hautes et basses. À chaque type de priorité correspond un vecteur d’interruption et donc potentiellement une gestion différente des interruptions suivant leur priorité. Les interruptions 92 Ce schéma permet de comprendre - le fonctionnement de la logique d’interruption, - la priorité accordée à une interruption, - la configuration de la logique à mettre en place pour l’application souhaitée Schéma de la logique d’interruption On notera notamment que si une interruption de haute priorité est en concurrence avec une interruption de basse priorité, l’interruption de haute priorité « prend la main ». 95 Premier programme avec interruption Début Broche 2 à 7 du PORTB en sortie Broche 1 du PORTB en entrée RAZ du PORTB Broche 1 à 4 du PORTB en E/S numérique Interruption à chaque front montant sur la broche 1 du PORTB Fin NOP Interruption Suppression du flag d'interruption Change l'état de la broche 2 du PORTB Restauration du contexte Retour au programme principal Sauvegarde du contexte Identification de l'interruption 96 ; Filename : premier_programme_interruption.asm ; Change l'état de la broche 2 du PORTB à chaque front ; montant sur la broche 1 du PORTB (gestion par interruption ; Author: Eric Magraner ; Company: Université Paul Cézanne ; Revision: 1.00 ; Date: 2006/07 list p=18f4520 ; Définition du micro-contrôleur utilisé #include <p18f4510.inc> ; Définitions des emplacements mémoires des registres ; et configurations matérielles par défaut #include <MA_CONFIG.inc> ; Modification des configurations matérielles par défaut W_TEMP RES 1 ; Réservation d'un octet en mémoire STATUS_TEMPRES 1 ; Réservation d'un octet en mémoire BSR_TEMP RES 1 ; Réservation d'un octet en mémoire Le début d'un programme en assembleur, avec interruption, reste très proche de celui d'une version sans interruption. On peut tout de même remarquer des directives de réservation d'emplacements mémoire en prévision de la sauvegarde du contexte lors de l'interruption. Début 97 org h'0000' ; Init. du vecteur RESET goto init org h'0008' ; Init. du vecteur INTERRUPTION goto routine_interruption init clrf PORTB movlw b'00000001' movwf TRISB ; Config. de la dir. du PORTB clrf LATB movlw 0Fh movwf ADCON1 ; Broche 1à4 du PORTB en E/S num. movlw b'10010000'; 0x90 -> w movwf INTCON ; w -> INTCON (Init. du registre d'interrup.) boucle nop goto boucle END Du code du programme principal, on distingue les étapes classiques d'initialisation du vecteur RESET et du PORT B. On note aussi les parties propres aux interruptions : initialisation du vecteur et du registre d'INTERRUPTION. Broche 2 à 7 du PORTB en sortie Broche 1 du PORTB en entrée RAZ du PORTB Broche 1 à 4 du PORTB en E/S numérique Interruption à chaque front montant sur la broche 1 du PORTB Fin NOP
Docsity logo


Copyright © 2024 Ladybird Srl - Via Leonardo da Vinci 16, 10126, Torino, Italy - VAT 10816460017 - All rights reserved