1 Les Interruptions - le Timer0 A- Les Interruption I- Présentation 1- Mise en

1 Les Interruptions - le Timer0 A- Les Interruption I- Présentation 1- Mise en situation: 2- Rappels : 2-1- Définition: Une interruption est …………… qui provoque ………….d’un programme en cours d’exécution pour aller …………….un autre programme appelé programme (ou routine ) d’interruption. A la fin du programme d’interruption le µC …………… le programme principal ………………………………………….. Une interruption est un programme qui a une totale ……………sur le déroulement global d’un programme. 2-3- Les sources et types d’interruptions :Le nombre de sources d’interruptions dépend du µC utilisé Exemples: On distingue deux types d’interruptions suivant l’événement déclencheur:  ………….tel que le résultat d’un calcul ou le de débordement d’un timer dans le programme.  ………….au μC tel que le changement d’état d’une entrée destinée à l’l’interruption. Exemple: Le PIC 16F84A dispose que de 4 sources d’interruptions, les événements susceptibles de déclencher une interruption sont les suivants :  TMR0 : Débordement du timer0 : TMR0 passe de ‘FF’ à ‘00’, une interruption peut être générée. Interruption 2-2- Déroulement d’une interruption : Le programme se déroule normalement lorsqu’ une interruption survient, le programme exécute dans l’ordre les tâches suivantes :  …………..l’instruction en cours de traitement  …………..à l’adresse de traitement de l’interruption  ……………l’interruption  ……………. à l’instruction qui suit la dernière exécutée dans le programme principal Microcontrôleur 16F84A 16F628A 16F88 16F876A 16F877A Sources d’interruption 4 10 12 14 15 Situation : Pour éviter d’endommager les objets fragiles installés dans son environnement, le robot aspirateur est équipé de 4 capteurs à contacts CAV, CAR, CD, CG. La détection d’un obstacle par l’un des ces capteurs entraine : L’’interruption momentanée de l’exécution du programme de fonctionnement normal du robot (nettoyage, affichage affichage de l’état de batterie…) pour exécuter un autre programme (ordre d’arrêt aux moteurs puis recul de 2 cm et une rotation de 90°) à la fin duquel le programme principal reprend son exécution à l’endroit où il a été interrompu Ce problème fait appel à ………………….. Problème : Comment peut-on mettre en en œuvre une application à base de PIC qui fait appel à l’interruption ? 2  EEPROM : Ecriture dans une case EEPROM interne est terminée.  RB0/INT : Changement du niveau appliqué à RB0 , encore appelée INTerrupt pin,  PORTB : Changement d’un niveau sur une des pins RB4 à RB7. On s’intéresse uniquement au deux types d’interruptions  À l’interruption sur la broche RB0  À l’interruption RB4 à RB7 3 3- - C Co on nt tr rô ôl le e e et t g ge es st ti io on n d de es s i in nt te er rr ru up pt ti io on ns s : : Toute interruption est gérée à l’aide de 3 bits :  Un bit d’activation globale (Global Enable bit).  Un bit d’activation (Enable bit).  Un bit indicateur ou drapeau (Flag bit). Ces bits sont regroupés suivant le microcontrôleur cible dans des registres appelés …………………………………………tels que: INTCON, PIE1, PIE2, PIR1 et PIR2. Le registre INTCON (INTerrupt CONtroller) est le registre principal de contrôle et de gestion des interruptions. Il est parfois différent d’un PIC à un autre il est impératif de revenir au document constructeur pour chaque type de microcontrôleur. INTCON BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0 GIE EEIE T0IE INTE RBIE T0IF INTF RBIF Bit 7 GIE Global Interrupt Enable : autorise toute les sources d’interruption Bit6 EEIE EEPROM Interrupt Enable : Interruption à la fin d’écriture sur l’EEPROM Bit5 T0IE Timer0 Overflow Interrupt Enable : Interruption suite au débordement du Timer0 Bit4 INTE RB0 INTerrupt Enable : autorise l’Interruption sur RB0 Bit3 RBIE RB (PortB) Interrupt Enable : autorise l’interruption suite au changement du niveau logique d'au moins une des 4 broches : RB4, RB5, RB6 et RB7 Bit2 T0IF Timer0 Overflow Interrupt Flag : drapeau mis à 1 suite au débordement du Timer0 (passage de ff à 00) Bit1 INTF RB0 INTerrupt Flag : drapeau mis à 1 si l’interruption sur RB0 est active Bit0 RBIF PortB Interrupt Flag : drapeau mis à 1 si l’interruption sur RB4..7 est active Bits pour activation ou désactivation des interruptions Bits pour analyse des interruptions qui se sont produites Saut vers le programme d’interruption 3 4- Déroulement d'une interruption : Lorsque l'événement déclencheur d'une interruption intervient, alors son drapeau est positionné à 1 (levé) . Le µC prend en compte l'interruption quand il a connaissance du niveau haut de drapeau (3 ou 4 cycles de délai). Le mécanisme des interruptions est alors lancé Il faut remettre le drapeau à 0 avant de quitter la routine d'interruption. Sinon, le µC se rebranche indéfiniment sur la routine d'interruption: le programme est planté! Remarques:  Par défaut toutes les interruptions sont désactivées INTCON = 0000000X  Lorsqu’une interruption survient et durant l’exécution du sous-programme d’interruption le bit GIE est mis à 0 automatiquement pour interdire le déclenchement d’autres interruptions dans la routine d’interruption en cours.( Une interruption ne peut pas interrompre une routine d'interruption) o Structure d’un programme avec interruption Le squelette suivant montre la structure à adopter quand on veut utiliser au moins une interruption : L’interruption est enclenchée après la mise à 1 du flag et si les bits d’autorisation correspondantes sont validés. Les flags sont mis à 1 indépendamment des bits INTE,RBIE, … et GIE PROGRAM Nomduproramme ; Var Declaration des variables et des constante Procedure Interrupt ; //déclaration d’une interruption Begin Instruction 1 ; …… Instruction n ; Réactivation de l’interruption et Remise à zéro du flag correspondant à la source d’interruption End ; Begin // Début programme principal TRISA:=………; TRISB:=………; ………………….. Intcon:=…….; // validation de l’interruption While true do Begin ………………… //programme principal ………………… End; End.  pour revenir au programme principal et autoriser de nouvelles interruptions. On doit impérativement faire une réactivation globale des interruptions en mettant le bit GIE à 1 et mettre à 0 le flag correspondant à la fin du sous-programme d’interruption. 4 II- Interruption externe via la broche RB0/INT : ☺ Activité : Configurer le registre INTCON en vue d’activer l’interruption externe sur RB0 (front montant) AVANT L’INTERRUPTION : Au cours de déroulement normal du programme principal : Le bit7 (GIE=…) Le bit4 (INTE=…) Le bit (INTF =… ) AU COURS DE L’INTERRUPTION :Le microcontrôleur exécute la routine d’interruption : Le bit7 (GIE=…) Le bit4 (INTE=1) Le bit (INTF=…) Il faut impérativement mettre à 1 le bit GIE et mettre à zéro l’indicateur INTF à la fin du sous-programme d’interruption pour pouvoir revenir au programme principal et autoriser de nouvelles interruptions sur la broche RB0/INT.A la sortie de la routine d’interruption on écrit la valeur $ …. dans le registre INTCON CONCLUSION : Déroulement normal du programme principal Au cours d’une interruption A la fin de l’interruption INTCON := 0x … INTCON := 0x …. INTCON := 0x … Il faut toujours remettre le registre INTCON à 0x….. à la fin de la routine d'interruption pour autoriser une autre interruption ou bien mettre les bits : INTCON.GIE :=1 et INTCON.INTF :=0 N.B si on veut produire l’interruption sur le front descendant d’une impulsion appliquée sur RB0 on doit Mettre un 0 au bit INTEDG du registre OPOTION_REG Si INTEDG = 1, l’interruption s’effectuera si le niveau sur RB0 passe de 0 vers1.(front montant de RB0) Si INTEDG = 0, l’interruption s’effectuera si RB0 passe de 1 vers0. (front descendant de RB0) À l'issue d’un Reset, tous les bits du registre OPTION sont à 1. Activité 1: Interruption via la broche RB0 INTCON GIE EEIE T0IE INTE RBIE T0IF INTF RBIF Valeur INTCON (...............)16 INTCON GIE EEIE T0IE INTE RBIE T0IF INTF RBIF Valeur INTCON (...............)16 INTCON GIE EEIE T0IE INTE RBIE T0IF INTF RBIF Valeur INTCON (...............)16 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 RBPU INTEDG TOCS TOSE PSA PS2 PS1 PSO On désire réaliser avec un PIC 16F876A un compteur modulo 10 sur le portc. Suite à une impulsion sur le bouton poussoir relié à RB0, le cycle de comptage est interrompu et commence un cycle de décomptage sur le porta (décompteur modulo 6) La fin de décomptage provoque la reprise du comptage. Travail demandé  1- Compléter le programme en Mikropascal.  2- Saisir sur le programme puis le compiler et simuler le fonctionnement sur ISIS  5 OSC1/CLKIN 16 RB0/INT 6 RB1 7 RB2 8 RB3 9 RB4 10 RB5 11 RB6 12 RB7 13 RA0 17 RA1 18 RA2 1 RA3 2 RA4/T0CKI 3 OSC2/CLKOUT 15 MCLR 4 U1 PIC16F84A D1 D2 D3 D4 D6 D5 D7 S1 S2 ☺activité N°2 (interruption avec RB0) : Dé électronique  Présentation : Le dé électronique est constitué :  D’une platine comportant 7 diodes leds D1, D2, D3, D4, D5, D6 et D7. (PORTB)  Un étage de commande comportant un interrupteur S1 pour la marche /arrêt et un bouton poussoir S2 pour jouer  Une carte électronique à base d’un microcontrôleur  Schéma structurel  Description du fonctionnement : Ce circuit génère un uploads/Management/ microcontroleur-4tech-2016-2017suite 1 .pdf

  • 32
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager
  • Détails
  • Publié le Jul 31, 2021
  • Catégorie Management
  • Langue French
  • Taille du fichier 1.8294MB