L'essentiel d'Assembleur

Définir la notion d'interruption non hiérarchisée

TESTEZ LINKEDIN LEARNING GRATUITEMENT ET SANS ENGAGEMENT

Tester maintenant Afficher tous les abonnements
Vous allez comprendre ce qu'est une interruption et ce qu'est une sauvegarde de contexte. Mettez en évidence l'intérêt de ce mode de fonctionnement.
06:28

Transcription

La notion d'interruption non hiérarchisée. Alors d'abord qu'est-ce qu'une interruption? Une interruption c'est une rupture asynchrone du programme principal, gérée par un évènement interne ou externe au microcontrôleur ou au processeur. Alors attention. Cela ne veut pas dire que c'est un évènement auquel vous ne vous y attendez absolument pas. Non au contraire, c'est un évènement que vous désirez obtenir mais vous ne savez pas quand il va arriver. Donc il peut vraiment venir de l'extérieur par exemple par le changement d'état d'une broche et ça ne dépend absolument pas de votre programme. Donc comment cela va-t-il se passer? Vous allez avoir vos instructions qui vont se poursuivre les unes derrière les autres et puis d'un seul coup vous allez avoir un évènement. Cet évènement va vous envoyer vers votre programme d'interruption, vous allez effectuer vos interruptions et vous allez revenir en fait là où vous en étiez à votre programme principal. Alors, il y a une notion très importante à connaitre qui est la notion de contexte. Alors, avant pour certains PICS qui étaient à deux chiffres, cette notion de contexte était d'autant plus importante parce qu'il fallait tout sauver à la main. Maintenant pour les PICS qui contiennent quatre chiffres derrière, en fait cette notion de sauvegarde de contexte se fait automatiquement. L’objectif c'est quoi ? C'est de revenir au programme principal après le traitement de l'interruption dans le même état que précédemment. Les registres vitaux doivent être sauvés et ne sont pas accessibles par l'utilisateur. Quels sont les registres vitaux ? Par exemple le registre de travail, le registre d'état, le registre de pointeur de banque, etc. Donc tous ceux-ci vont être stockés en fait, en banque 31 de la mémoire RAM et sous le titre de « Shadow » pour pouvoir être stockés automatiquement. Alors, ce qu'il faut retenir c'est que un seul niveau d'interruption est possible pour cette famille de PIC. Une interruption ne peut pas interrompre une autre interruption en cours. L’ordre de traitement des interruptions se fait dans l'ordre d'écriture du programme. C’est-à-dire que si vous avez deux interruptions qui arrivent exactement au même moment, vous allez me dire ce n'est pas de chance, mais si ça arrive, dans ce cas-là celle qui sera traitée ce sera celle qui aura été écrite en premier. C’est vraiment purement séquentiel. C’est comme un livre que vous lisez. Une interruption intervenant durant une interruption est perdue donc non traitée. Le traitement d'une interruption doit être bref. Il ne faut pas perdre toutes les autres sources d'interruption parce que votre interruption, on va dire principale, est trop chronophage. Il faut que ce soit quelque chose de très spontané. Il ne faut pas qu'un microcontrôleur soit justement en interruption en permanence non plus. Parce que sinon le traitement du programme principal n'avance pas. Hormis si vous avez décidé de travailler en mode économie d'énergie dans ce cas-là le traitement principal est en mode « sleep » par exemple. Comment il est défini à l'intérieur de notre datasheet ? Nous avons notre corps CPU, et puis nos différentes mémoires et notre port d'accès vers l'extérieur, et puis en fait tout ce qui est à l'extérieur du CPU donc cette zone qui est entourée ici est source d'interruption. Alors il y a des interruptions que je ne dirais pas prioritaires et moins prioritaires, on va dire plus accessibles et moins accessibles. La notion d'accessibilité c'est-à-dire que vous devez mettre un bit en plus à 1 pour accéder à ce qu'on appelle, aux interruptions périphériques. Donc qui sont là. Et après vous avez des interruptions qui sont on va dire plus directes où vous pouvez directement les configurer depuis un seul registre qui est le registre INTCON dans notre cas. Que se passe-t-il lors de l'interruption ? C’est assez simple. Dès qu'il y a interruption, vous allez venir vous connecter à l'adresse 4 en hexadécimal, et ça a été mis en HARD par le constructeur vous n'avez pas le choix de l'adresse à laquelle vous allez venir vous connecter, ce sera forcement 4 et pas autre chose. Donc vu que vous avez la place pour ne mettre qu'une seule instruction à cet endroit, ce sera forcément un goto. Donc vous allez mettre goto label mon_interruption et après vous mettrez ce même label n’importe où dans le plan mémoire, où cela vous ira le mieux. Donc faites bien attention à cela. Alors que se passe-t-il à l'intérieur du microcontrôleur ? L’instruction courante préchargée est effacée, le bit GIE est effacé, l'adresse courante de la mémoire programme (PC) avant l'interruption est placée dans la pile, et puis on sauvegarde le tout dans les registres fantômes. Le compteur de programme lui, est chargé à l'adresse 4. La procédure pour mettre en place cette interruption. Tout d'abord il va falloir configurer le registre INTCON pour valider que vous voulez bien fonctionner en mode interruption. Après vous configurez votre source d'interruption qui sera la standard, c'est à dire celle la plus proche ou la périphérique, mais il n'y a pas de notion de hiérarchisation, attention, qu'on s'entende bien sur ce terme. Et après vous n'aurez plus qu'à placer votre étiquette avec le mot code et l'adresse à laquelle vous allez venir vous connecter automatiquement. Avant le programme principal, vous allez écrire le programme d'interruption à l'endroit où mon étiquette est placée en vérifiant si l'interruption est autorisée et est en cours. Vous allez effectuer l'effacement du fanion d'interruption sinon vous allez rester bloqués à l'intérieur. Et vous ne pourrez pas en sortir. Et vous allez finir le programme lié à l'interruption avec une instruction spécifique qui est donc return from interrupt enable. Et surtout ne pas se soucier de la sauvegarde de contexte qui va se faire automatiquement. Là nous parlerons plutôt de restauration de contexte automatique.

L'essentiel d'Assembleur

Plongez-vous dans le langage bas niveau, nommé Assembleur. Abordez les notions de jeu d'instructions, de pipeline, de registres, de mode d’adressage, de compteur de programme, etc.

4h52 (57 vidéos)
Aucun commentaire n´est disponible actuellement
Logiciel :
Spécial abonnés
Date de parution :26 sept. 2016

Votre formation est disponible en ligne avec option de téléchargement. Bonne nouvelle : vous ne devez pas choisir entre les deux. Dès que vous achetez une formation, vous disposez des deux options de consultation !

Le téléchargement vous permet de consulter la formation hors ligne et offre une interface plus conviviale. Si vous travaillez sur différents ordinateurs ou que vous ne voulez pas regarder la formation en une seule fois, connectez-vous sur cette page pour consulter en ligne les vidéos de la formation. Nous vous souhaitons un excellent apprentissage avec cette formation vidéo.

N'hésitez pas à nous contacter si vous avez des questions !