1 / 6

Microcontrôleurs et Langage C Les Interruptions diapo 1

Qu’est-ce qu’une interruption: Une interruption, c’est un événement externe ou interne au système qui interrompt le déroulement du programme en cours et oblige le système à exécuter une routine particulière. Événement externe:

tamira
Download Presentation

Microcontrôleurs et Langage C Les Interruptions diapo 1

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Qu’est-ce qu’une interruption: • Une interruption, c’est un événement externe ou interne au système qui interrompt le déroulement du programme en cours et oblige le système à exécuter une routine particulière. • Événement externe: • Changement sur une entrée spécifique appelée entrée d’interruption. (tout µC en a au moins une) • Changement sur un bit de port. (sur le PIC16F877, seuls les bits PB4 à PB7 peuvent déclencher une interruption.) • Événement interne: • Fin de conversion A/N • Événement sur le bus série (fin d’émission, réception …) • Événement I²C ou SPI • Débordement Timer • …… Microcontrôleurs et Langage C Les Interruptions diapo 1

  2. Quelles conditions pour qu’une interruption soit prise en compte? • Qu’elle soit autorisée!!! • Sur les PIC, il y a 2 niveaux d’autorisations: • Autorisation individuelle: on configure la ou les interruptions autorisées. • Autorisation globale: on autorise ou interdit toutes les interruptions (qui doivent être autorisées individuellement). • Pour qu’une interruption soit prise en compte, les 2 autorisations sont requises. Microcontrôleurs et Langage C Les Interruptions diapo 2

  3. Routine d’interruption Programme principal début début Microcontrôleurs et Langage C Les Interruptions diapo 3 Actions Initialisations Actions 1 Fin Cette routine peut se produire à n’importe quel moment du programme principal. Actions 2 Si une interruption doit modifier le déroulement du programme principal, on fera en sorte que sa routine modifiera une variable globale qui sera testée dans le programme principal. Fin

  4. Comment utiliser les interruptions avec PicC? On se sert de l’assistant pour créer les routines d’interruption. Il fera les initialisations nécessaires. Exemple: On veut une interruption sur l’entrée INT/RB0 du µC: Dans l’assistant, on va sur l’onglet « Interrupts »: On coche « Externalinterrupt ». Si les autres onglets ont été renseignés, on peut cliquer sur « OK ». Microcontrôleurs et Langage C Les Interruptions diapo 4

  5. L’assistant a donc construit 2 fichiers: Inter1.h (qui contient les en-têtes et les fusibles): #include <16F877A.h> #device ICD=TRUE #deviceadc=10 #FUSES NOWDT,HS,NOPUT,NOPROTECT,NODEBUG,NOBROWNOUT,NOLVP,NOCPDNOWRT #use delay(clock=20000000) #use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8) Inter1.c (qui contient le programme): #include "inter1.h" #int_EXT EXT_isr() { } void main() { . . . enable_interrupts(INT_EXT); enable_interrupts(GLOBAL); } Microcontrôleurs et Langage C Les Interruptions diapo 5 Routine d’interruption externe précédée de la directive de compilation #int_ext Programme principal Validation de l’interruption externe Validation globale des interruptions

  6. Il ne reste plus qu’à écrire l’algorithme de la routine d’interruption et du programme principal … #byte PORTB=0x06 #bit LED_ROUGE=PORTB.5 int16 compt; #int_EXT EXT_isr() { compt=compt+1; LED_ROUGE = !LED_ROUGE; } void main() { . . . enable_interrupts(INT_EXT); enable_interrupts(GLOBAL); i=0; do { printf("valeur du compteur %lu \r", compt); delay_ms(300); } while(TRUE); } Définition des ports et des bits de port (c’est différent du #define!) Déclaration de la variable globale compt Microcontrôleurs et Langage C Les Interruptions diapo 6 Routine d’interruption: on incrémente comptet on inverse l’état de la LED rouge Boucle infinie du programme principal qui se contente d’afficher la valeur de compttoutes les 1/3 secondes.

More Related